Streaming von Daten aus dem SQL Server nach Power BI

Orginal Beitrag “Streaming data in Power BI from SQL Server data source” von Powerful BI

Haben Sie Daten, die Sie in Power BI in nahezu Echtzeit präsentieren müssen? Eine Funktion, über die nicht oft gebloggt wird, ist die Möglichkeit, Streaming-Datasets in Power BI zu erstellen. Es gibt noch weniger Anleitungen, wie diese direkt vom SQL Server aus erreicht werden können, dabei ist dieses in der Tat ziemlich einfach.

Als Erstes müssen Sie in Ihrem Arbeitsbereich ein Streamingdataset erstellen.

Erstellung Streaming Dataset

Als Quelle für Ihr Streamingdataset wählen Sie API aus.

API als Quelle für Daten

Im nächsten Schritt benennen Sie das Streamingdataset und definieren die Datenstruktur. In diesem Beispiel erstellen wir eine Spalte “Datum Uhrzeit” vom Datentyp “DateTime” und eine Spalte “Anzahl Benutzer” vom Datentyp “Zahl”.

Definition neues Streamingdataset

Nachdem Sie “Erstellen” ausgewählt haben, wird Ihr Streamingdataset erstellt. Im folge Dialog erhalten Sie die Push-URL, über die Sie Daten an den Endpunkt senden können. Kopieren Sie die URL für die spätere Verwendung.

Streamingdataset erstellt

Im SQL Server nutzen wir folgende einfache Abfrage, um die Anzahl der Aktiven Benutzer in Business Central zu erhalten.

SELECT GETDATE() AS "DatumUhrzeit"
     , COUNT(*) AS "AktiveBenutzer"
  FROM [dbo].[Active Session]

Über einen SQL-Agent-Auftrag, soll die Abfrage jede Minute ausgeführt und an das Streamingdataset gesendet werden.

SQL Agent Auftrag erstellen

Als Auftragsschritt wird ein PowerShell-Skript hinterlegt, dass die Daten im JSON-Format direkt an das Power BI Streamingdataset übetragen kann.

$SqlServer = 'SQLSERVER'; 
$SqlDatabase = 'SQLDATENBANK'; 
$SqlConnectionString = 'Data Source = "{0}"; Initial Catalog = "{1}";Integrated Security=SSPI;' -f $SqlServer, $SqlDatabase;
$SqlQuery = 'SELECT GETDATE() AS "DatumUhrzeit", COUNT(*) AS "AktiveBenutzer" FROM [dbo].[Active Session]';
$SqlCommand = New-Object -TypeName System.Data.SqlClient.SqlCommand;
$SqlCommand.CommandText = $SqlQuery;
$SqlConnection = New-Object -TypeName System.Data.SqlClient.SqlConnection -ArgumentList $SqlConnectionString;
$SqlCommand.Connection = $SqlConnection;
$SqlConnection.Open();
$SqlDataReader = $SqlCommand.ExecuteReader();

## Ihren Endpunkt finden Sie im Power BI-Service
$endpoint = "PUSH-URL"

# Daten abrufen und senden
while ($SqlDataReader.Read()) {
  $payload = 
    @{
      "Datum Uhrzeit" = $SqlDataReader['DatumUhrzeit']
      "Aktive Benutzer" = $SqlDataReader['AktiveBenutzer']
    }
    Invoke-RestMethod -Method Post -Uri "$endpoint" -Body(ConvertTo-Json @($payload))
}

$SqlConnection.Close();

Der SQL-Agent-Auftrag wird über den Auftragszeitplan auf eine minütliche Ausführung geplant.

Auftragszeitplan für minütliche Ausführung

Zurück im Power BI Service fügen Sie in einem neuen Dashboard eine neue Kachel hinzu.

Dashboard Kachel

Als Quelle für die Kachel wählen Sie Benutzerdefinierte Streamingdaten.

Kachel Quelle auswählen

Wählen Sie Ihr Streamingdataset aus.

Streamingdataset auswählen

Wählen Sie den Visualisierungstyp für Ihre Streamingdaten.

Visualisierungstyp einrichten

Abschließend können Sie noch weitere Kacheldetails definieren.

Kacheldetails

Jetzt sollten Sie sehen, wie Ihre Daten in Power BI gestreamt werden.

Streamingkachel

Quelle: https://powerfulbi.co.uk/blog/f/streaming-data-in-powerbi-from-sqlserver-data-source

Veröffentlicht von

Marcus Wegener

Marcus Wegener

Marcus Wegener ist Anwendungsentwickler für Business Intelligence und erstellt Lösungen, mit denen sich große Datenmengen schnell analysieren lassen. Kunden nutzen seine Lösungen, um die Vergangenheit zu analysieren, die Gegenwart zu steuern und die Zukunft zu planen, um damit mehr Erfolg zu generieren. Dabei ist seine einzigartige Kombination aus Wissen und Auffassungsgabe ein Garant für ihren Erfolg.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.