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.
Als Quelle für Ihr Streamingdataset wählen Sie API aus.
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”.
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.
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.
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.
Zurück im Power BI Service fügen Sie in einem neuen Dashboard eine neue Kachel hinzu.
Als Quelle für die Kachel wählen Sie Benutzerdefinierte Streamingdaten.
Wählen Sie Ihr Streamingdataset aus.
Wählen Sie den Visualisierungstyp für Ihre Streamingdaten.
Abschließend können Sie noch weitere Kacheldetails definieren.
Jetzt sollten Sie sehen, wie Ihre Daten in Power BI gestreamt werden.
Quelle: https://powerfulbi.co.uk/blog/f/streaming-data-in-powerbi-from-sqlserver-data-source