Realtime Dashboards in Power BI – Verwendung der API für einfache Usecases

In unserer dreiteiligen Blogserie Realtime Dashboards in Power BI haben wir gezeigt, wie mit einem Raspberry Pi Sensordaten (Teil 1) über Azure Stream Analytics (Teil 2) in ein Realtime Dashboard in Power BI (Teil 3) gesendet und in Echtzeit visualisiert werden können. Soll jedoch nur ein einziger (oder einige wenige) Sensoren ausgewertet werden, ist die Infrastruktur in Azure Stream Analytics überdimensioniert. Die Power BI REST API bietet dafür eine sehr einfach zu nutzende Möglichkeit, um die Daten vom Sensor direkt nach Power BI zu senden.

Dieser Blogpost knüpft also an Teil 1 an und zeigt, wie mit einem alternativen Sensorprogramm am Raspberry Pi - dieses wurde wiederum von Toni Kerschbaummayr entwickelt - die Sensordaten direkt an das Power BI Dataset gesendet werden können.

Schritt 1: Anlage des Streaming Datasets in Power BI

Für die Nutzung der Power BI Rest API wird im Power BI Cloud Service unter Create der Eintrag Streaming Dataset gewählt ...

... und die Option API gewählt:

Anders als bei der Variante mit Azure Stream Analytics wird das Format des Streams direkt in Power BI definiert, dabei können bis zu 75 Columns in den 3 Datenformaten DateTime, Number und Text angelegt werden:

Am Ende der Definition wird das fertige JSON Format des Streams angezeigt, der dem Developer des Sensorprogramms als Vorgabe für die zu übermittelnden Datensätze dient. Wie schon im Teil 3 erläutert, bewirkt der Schieber Historic data analysis die Anlage als sogenanntes Push Dataset, das die Auswertung nicht nur mit den Streaming Tiles (in einem Power BI Dashboard) sondern auch mit Power BI Desktop / Power BI Reports ermöglicht:

Nach der Anlage des Streaming Datasets kann unter den Eigenschaften im Register PowerShell der fertige Codebaustein ausgelesen und an den Developer des Sensorprogramms übergeben werden. Dieser enthält den Endpoint (= Authentifizierungsstring), den bereits aus dem vorigen Screen bekannten Musterdatensatz im JSON-Format sowie den POST Befehl (mit allen Parametern) für die Datenübergabe an die Power BI REST API:

Schritt 2: Sensorprogramm am Raspberry Pi

Mit diesen Informationen hat Toni Kerschbaummayr am Raspberry Pi (aus Teil 1) ein neues Sensorprogramm entwickelt, das die Sensordaten direkt an die Power BI REST API (derzeit im 2 Sekundentakt) sendet:

Schritt 3: Streaming Tiles im Power BI Dashboard

Ab sofort kann der Datenstream wiederum in einem Dashboard im Power BI Cloud Service mit den Streaming Tiles (wie bereits aus Teil 3 bekannt) in Echtzeit visualisiert werden:

Schritt 4: Report in Power BI Desktop

Da das Streaming Dataset als Push Dataset angelegt wurde, kann mit Power BI Desktop eine sogenannt Live Connection zu diesem Dataset hergestellt werden um die umfangreichen Visualisierungsmöglichkeiten der Power BI Reports nutzen zu können (wie in Teil 3 bereits gezeigt):

Mit einem relativen Zeitfilter können die Inhalte des Reports bspw. auf die Signaldaten des laufenden Tages gefiltert werden. Ergänzend werden die folgenden beiden Measures zur Anzeige in den beiden Cards (rechts) angelegt:

# Signals 
= COUNTROWS(RealTimeData)

Today 
= MAX(RealTimeData[Timestamp])

Für die zweite Visualisierung wird aus dem Marketplace das Custom Visual Small Multiple Line Chart der Power BI Desktop Anwendung hinzugefügt:

Mit dem Custom Visual werden die beiden Kennzahlen als Small Multiples für die letzten 4 Tage visualisiert, um so auch die Historie mit einem Blick erfassen zu können:

Eine Schwachstelle des Push Datasets wird hier sichtbar, nämlich daß - anders als die Measures - die Colums der Datentabelle nicht formatiert werden können (da das Dataset nicht Bestandteil dieser PBI Anwendung ist sondern nur über die Live Connection verbunden ist). Da bei der Anlage des Streaming Datasets (oben in Schritt 1) als Datenformat nur DateTime und nicht auch Date zur Auswahl steht, wird das Feld Timestamp Date leider sowohl im Custom Visual als auch in den Default Visuals unvorteilhaft formatiert. Ebenso kann die Default Summarization Einstellung bei den Feldern Timestamp Hour und Timestamp Minute nicht deaktiviert werden.

Schritt 5: Kombiniertes Dashboard

Nach dem Upload der PBI Desktop Anwendung in den Power BI Service können jetzt auch die Visuals des Reports an das bereits bestehende Dashboard gepinned werden und damit auch für diese Visuals die automatische Aktualisierung erreicht werden:

Bei der direkten Gegenüberstellung wird noch eine (störende) Besonderheit des Push Datasets sichtbar: der Timestamp wird in die UTC Zeit umgerechnet. Da im Push Dataset auch keine Calculated Columns angelegt werden können, kann diese Thematik leider nicht mit den bekannten DAX Mitteln korrigiert werden.

Evaluierung

Pro:

  • Unkomplizierte Nutzung für einfachere Realtime Usecases
  • Kostenlose Nutzung
  • In einer verbundenen PBI Desktop Anwendung können (Report Level) Measures definiert werden (sofern das Streaming Dataset als Push Dataset geführt wird)

Einschränkungen des Push Datasets (das sind keine API-spezifischen Einschränkungen sondern gelten für alle Push Datasets in Power BI):

  • Nur drei Datenformate Text, Zahl und Datetime verfügbar
  • Maximal 1.000.000 Datensätze gespeichert
  • Maximal 120 POST Requests pro Minute, ab einem Volumen von 250.000 Datensätzen Drosselung auf 120 POST Requests pro Stunde
  • Automatische (unerwünschte) Umwandlung des Timestamps in die UTC Zeit
  • Nicht bearbeitbares Datamodel: keine Calculated Columns, daher müssen bereits über die API alle vom Timestamp abgeleiteten Felder (Timestamp Date, Timestamp Hour, Timestamp Minute) mitgesendet werden
  • Nicht bearbeitbares Datamodel: keine Formatierung und keine Default Summarization für die Columns konfigurierbar. Daher kann der "Timestamp Date" nicht ohne Uhrzeit dargestellt werden und die Default Summierung der Felder "Timestamp Hour" und "Timestamp Minute" nicht abgestellt werden

Möglicherweise wäre die Bearbeitung des automatisch vom Power BI Service erzeugten Push Datasets über die REST API möglich, mit Bordmitteln ist das aber nicht möglich.

Quellen

https://docs.microsoft.com/de-de/power-bi/service-real-time-streaming
https://docs.microsoft.com/en-us/power-bi/developer/api-rest-api-limitations
https://docs.microsoft.com/en-us/rest/api/power-bi/
https://docs.microsoft.com/en-us/rest/api/power-bi/pushdatasets

Share on linkedin
Share on twitter
Share on facebook

Leave a Replay

Über den Autor

Blog auf Feedly abonnieren

Kategorien

Verwandte Beiträge

Kennen Sie schon data1.io?

data1.io ist unsere innovative Cloud Anwendung zum Sammeln, Aggregieren und Teilen von Geschäftsdaten innerhalb und außerhalb des Unternehmens.

Kostenlos zum Newsletter anmelden

Ihre Anfrage

Schicken Sie uns Ihre Fragen und Anregungen!