Real Time Intelligence ist eine der spannendsten Funktionen in Microsoft Fabric und bietet enormes Potenzial für Echtzeit-Szenarien.
Da ich ein großer Fan von Real Time Intelligence bin, wollte ich nicht nur theoretisch damit arbeiten, sondern ein privates Praxisprojekt umsetzen, um die Möglichkeiten von Fabric besser zu verstehen. Zwar stellt Microsoft zahlreiche Tutorials zur Verfügung, um RTI kennenzulernen.
So entstand die Idee, meine Photovoltaikanlage mit Microsoft Fabric und Real Time Intelligence zu verbinden und die erzeugten Daten in Echtzeit zu verarbeiten und auszuwerten – ein persönliches Projekt, das mir gleichzeitig ermöglicht, die Technik praxisnah zu erforschen.
Ein bewusst unkonventioneller Ansatz
Der naheliegendste Weg wäre gewesen, die Daten direkt über eine InfluxDB abzurufen und anschließend entsprechend aufzubereiten. Wie bereits erwähnt, habe ich mich jedoch bewusst dagegen entschieden. Stattdessen bin ich einen anderen Weg gegangen und habe die Daten über eine Webseite der Photovoltaikanlage bezogen, die diese Informationen ebenfalls zur Verfügung stellt.
Dieser Ansatz ist sicherlich nicht der klassischste, eignet sich aber hervorragend, um Real-Time-Szenarien in Microsoft Fabric praxisnah zu testen.
Wichtiger Hinweis
Der gesamte Code, der für dieses Projekt notwendig ist, befindet sich in meinem GitHub-Repository:
👉 https://github.com/renefuerstenberg
Bitte beachtet:
Auch wenn der Code frei verfügbar ist, ist ein gewisses technisches Know-how erforderlich, um das Projekt erfolgreich nachzubauen. Ich werde in diesem Blog bewusst nicht jeden einzelnen Schritt im Detail erklären, sondern mich auf die wesentlichen Komponenten und Konzepte konzentrieren.
Testaufbau und Voraussetzungen
Für den Testaufbau habe ich folgende Komponenten benötigt und eingerichtet:
Azure Function mit einem Consumption Flex Plan
VPN Gateway zur Anbindung an meine Fritz!Box
Microsoft Fabric Trial-Kapazität inklusive Workspace
Dies sind lediglich die grundlegenden Bausteine des Setups.
Für das Deployment der Azure Function habe ich Visual Studio Code verwendet. Die weitere Konfiguration und Darstellung erfolgte größtenteils über das Azure Portal – mit Ausnahme des VPN Gateways, das bereits im Vorfeld eingerichtet war.
Hier erst Mal das Architekturdiagramm.
Schritt 1 - Erstellung des Workspaces in Fabric
Um einen Workspace zu erstellen, musst du dich zunächst im Microsoft-Fabric-Portal anmelden. Dies ist über folgende URLs möglich:
Unter app.powerbi.com sollten wir dann später in den Bereich Fabric wechseln. Der Menüpunkt befindet sich unten links. Siehe auch Screenshot „Fabric Portal“
Nach der Anmeldung gehst du wie folgt vor:
Navigiere im Menü zu Workspaces
Klicke auf New Workspace
Vergib einen passenden Namen für den Workspace
Wähle als Kapazität entweder TRIAL (falls verfügbar) oder eine vorhandene Fabric-Kapazität aus
Nach dem Anlegen des Workspaces solltest du die entsprechende Konfiguration überprüfen.
Siehe dazu die folgenden Screenshots.
Schritt 2 - Fabric Items erstellen - EventStream
Im nächsten Schritt erstellen wir die benötigten Fabric Items, um die Daten entsprechend empfangen und verarbeiten zu können.
Zunächst gehst du wie folgt vor:
Klicke auf New Item
Wähle Eventstream aus
Vergib einen Namen und bestätige die Erstellung
Anschließend fügst du eine Datenquelle hinzu:
Klicke auf Add Source
Wähle Custom Endpoint
Vergib einen Namen und bestätige
Wichtiger Hinweis zum Veröffentlichen
Damit Microsoft Fabric die Daten im Event Hub korrekt bereitstellt, muss der Eventstream zuerst veröffentlicht werden. Erst nach dem Veröffentlichen werden der Event Hub Name sowie der Endpoint Name angezeigt.
Die Schaltfläche Publish (Veröffentlichen) befindet sich oben rechts im Editor.
Vorbereitung für die Azure Function
Sobald der Eventstream veröffentlicht wurde, können der Event Hub Name und der Endpoint Name in der Azure Function hinterlegt werden.
💡 Empfehlung:
Speichere dir diese beiden Werte in einem Textdokument. So kannst du sie im nächsten Schritt bei der Erstellung der Azure Function direkt und fehlerfrei eintragen.
Schritt 3 - Azure Function im Azure Portal
Im nächsten Schritt habe ich die Azure Function erstellt. In diesem Abschnitt zeige ich einen Auszug der fertigen Function in Form von Screenshots, ergänzt durch weitere Bilder – unter anderem auch einen Screenshot der Webseite, von der die Daten geladen werden.
Erforderliche Anpassungen in der Azure Function
Damit die Azure Function korrekt funktioniert, sind einige Anpassungen notwendig:
Die Azure Function muss eine Verbindung zur lokalen Photovoltaikanlage herstellen können (in meinem Beispiel über das lokale Netzwerk).
Ich nutze einen Event Hub in Microsoft Fabric (Details dazu folgen später).
Dafür müssen der Event Hub Name sowie der Endpoint in der Function entsprechend konfiguriert werden (siehe Screenshot).Wichtig: Nach der Anpassung der Konfiguration müssen die Local Settings in die Azure Function hochgeladen werden.
Trigger und Abrufintervalle
Die einzelnen Functions rufen die Daten jede Minute ab. Dieses Intervall kann pro Function in der Datei functions.json angepasst werden. Auch hierzu habe ich einen Screenshot ergänzt.
Zusätzlich habe ich Time-Trigger-Functions verwendet, um die regelmäßige Ausführung der Datenabfragen sicherzustellen.
Schritt 4 - Eventhouse erstellung
Datenfluss zum Event Hub und Erstellung des Eventhouse
Sobald die Azure Function erfolgreich deployed wurde und die Konfiguration für den Event Hub korrekt ist, werden die Daten automatisch an den Event Hub gesendet.
Funktioniert dieser Schritt wie erwartet, können wir im nächsten Schritt das Eventhouse erstellen und die benötigten Tabellen anlegen, um die eingehenden Daten dauerhaft zu speichern.
Erstellen des Eventhouse
Gehe dazu wie folgt vor:
Klicke auf New Item
Wähle Eventhouse aus
Vergib einen Namen und bestätige die Erstellung
Nach der Erstellung wirst du automatisch auf die Eventhouse-Seite weitergeleitet. Von dort aus kannst du zur Datenbank wechseln und weitere Einstellungen vornehmen.
Anlegen der Tabellen mit einem Queryset
Im nächsten Schritt habe ich die benötigten Tabellen über ein Queryset angelegt. Sobald das Queryset ausgeführt wurde, erscheinen die neu erstellten Tabellen auf der linken Seite.
Was macht das Queryset?
Es legt alle benötigten Tabellen an
Es erstellt die Functions für die Datentransformationen
Hinweis
ℹ️ Die verwendeten Skripte sind – wie bereits erwähnt – vollständig in meinem GitHub-Repository zu finden.
Schritt 5 - Ziel im Eventstream anlegen
Konfiguration des Ziels im Eventstream
Um das Ziel im Eventstream zu konfigurieren, wechsle ich zunächst zurück in den Eventstream und wähle dort als Ziel das Eventhouse aus. Anschließend erfolgt die entsprechende Konfiguration.
Als Ingestionsart habe ich Direct ingestion ausgewählt. Die Transformationen führe ich bewusst nicht im Eventstream, sondern über Functions im Queryset aus.
Veröffentlichen und Zieltabelle auswählen
Damit die nächsten Schritte durchgeführt werden können, muss der Eventstream erneut veröffentlicht werden. Erst danach ist es möglich, die Zieltabelle auszuwählen.
Die Schritte im Überblick:
Auf Konfigurieren klicken
In meinem Fall die Tabelle
import_solarsystemauswählenBestätigen und den Assistenten bis zum Ende durchlaufen
Kurze Erklärung zum Datenimport
Der Datenfluss sieht wie folgt aus:
Die Daten werden über die Azure Function an den Event Hub gesendet
Der Eventstream leitet die Daten an das Eventhouse weiter
Die Daten werden in der Zieltabelle
import_solarsystemgespeichertAnschließend werden Functions ausgeführt (siehe Screenshot),
die die notwendigen Transformationen durchführen und
die Daten in die entsprechenden Zieltabellen schreiben
Schritt 6 - Real Time Dashboard erstellen
Wenn bis hierhin alles erfolgreich funktioniert hat, werden die Daten der Photovoltaikanlage im Eventhouse gespeichert. Im nächsten Schritt können wir ein Real-Time-Dashboard erstellen, um diese Daten zu visualisieren.
Im zweiten Teil dieser Blog-Serie werde ich zusätzlich zeigen, wie die Daten in Power BI weiterverwendet werden. Darauf gehe ich an dieser Stelle jedoch noch nicht ein.
Anlegen eines Real-Time-Dashboards
Um ein Real-Time-Dashboard zu erstellen, gehst du wie gewohnt wie folgt vor:
New Item
Real-Time Dashboard auswählen
Einen Namen vergeben und bestätigen
Nach dem Erstellen wirst du automatisch auf die Dashboard-Seite weitergeleitet.
Datenquelle auswählen und KQL-Abfragen erstellen
Im Dashboard kannst du nun die Datenquelle auswählen – in meinem Fall eine KQL-Datenbank aus dem Eventhouse. Anschließend hast du die Möglichkeit, KQL-Abfragen zu erstellen.
In meinem Projekt habe ich insgesamt vier Abfragen erstellt. Im Blog zeige ich exemplarisch, wie eine dieser Abfragen aufgebaut ist und welche Einstellungen ich vorgenommen habe.
📸 Siehe dazu die Screenshots.
Erstellung eines Visuals
Die Vorgehensweise ist wie folgt:
KQL-Skript einfügen
Auf RUN klicken, um zu prüfen, ob die Abfrage Daten zurückliefert
Falls erfolgreich, den Bereich Visuals auswählen
Als Visualisierung Line Chart auswählen
Einen passenden Namen für das Visual vergeben
Die KQL-Skripte lassen sich selbstverständlich jederzeit an die eigenen Anforderungen anpassen.
Anschließend bestätige ich alles über Apply Changes.
Diesen Vorgang wiederhole ich für alle erstellten Abfragen – in meinem Fall vier Stück.
Finales Dashboard und Auswertungen
Das finale Dashboard ist im Screenshot zu sehen.
Im Real-Time-Dashboard lässt sich der Time Range dynamisch anpassen.
Aktuell werden folgende Werte angezeigt:
Aktuelle Leistung, die die Anlage erzeugt
Batteriespeicher der Anlage
Tagesverbrauch
Aktueller Verbrauch des Haushalts
Hier gibt es noch zahlreiche weitere Möglichkeiten, um die Daten der Anlage auszuwerten und zu analysieren.
Fazit Teil 1 – Real-Time-Daten in Microsoft Fabric
Im ersten Teil dieses Tutorials haben wir die Grundvoraussetzungen geschaffen, um Daten in Echtzeit in ein Eventhouse zu schreiben. Darüber hinaus haben wir ein Real-Time-Dashboard erstellt, das die Daten praktisch Near Real-Time anzeigt und uns einen direkten Einblick in die Photovoltaikanlage ermöglicht.
Im zweiten Teil der Serie werden wir diese Daten weiterverarbeiten und in Power BI visualisieren, um noch tiefere Einblicke und Auswertungen zu ermöglichen.
Ihr dürft gespannt sein!
Wenn ihr Anregungen oder Vorschläge habt, freue ich mich über eure Nachrichten über die üblichen Kanäle.

































