Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Referenzdaten sind statische oder sich langsam verändernde Datensätze, die Sie mit Ihren Streaming-Daten verbinden, um sie zu bereichern, zum Beispiel indem Sie Produktdetails zu einem Strom von Verkaufsereignissen hinzufügen. Azure Stream Analytics unterstützt Azure SQL-Datenbank als Quelle für Referenzdaten, sodass Sie diese Daten mit Ihren Echtzeit-Eingaben nachschlagen und kombinieren können.
Dieser Artikel zeigt Ihnen, wie Sie eine Azure SQL-Datenbank als Referenzdateneingabe für einen Stream Analytics-Job konfigurieren können, indem Sie sowohl das Azure-Portal als auch das Visual Studio mit Stream Analytics-Tools verwenden.
Fügen Sie SQL-Datenbank-Referenzdaten über das Azure-Portal hinzu
Verwenden Sie die folgenden Schritte, um die Azure SQL-Datenbank als Referenzeingabequelle über das Azure-Portal hinzuzufügen:
Portalvoraussetzungen
Erstellen Sie einen Stream Analytics-Auftrag.
Erstelle ein Speicherkonto für den Stream Analytics-Job.
Wichtig
Azure Stream Analytics speichert Snapshots innerhalb dieses Speicherkontos. Wenn Sie die Retentionsrichtlinie konfigurieren, stellen Sie sicher, dass der gewählte Zeitraum die gewünschte Wiederherstellungsdauer für Ihren Stream Analytics-Job enthält.
Erstellen Sie Ihre Azure SQL-Datenbank mit einem Datensatz, den der Stream Analytics-Job als Referenzdaten verwendet.
Definition der SQL-Datenbank-Referenzdateneingabe
Wählen Sie in Ihrem Stream Analytics-Auftrag Eingaben unter Auftragstopologie aus. Wähle Referenzeingabe hinzufügen und dann SQL Database aus.
Fülle die Stream Analytics Eingabekonfiguration aus. Wählen Sie den Datenbanknamen, den Servernamen und die Anmeldedaten für die Datenbank aus. Um die Eingabe Ihrer Referenzdaten regelmäßig zu aktualisieren, wählen Sie On aus und geben Sie das Aktualisierungsintervall im Format DD:HH:MM an. Bei großen Datensätzen mit einem kurzen Aktualisierungsintervall erfasst die Deltaabfrage Änderungen innerhalb Ihrer Referenzdaten, indem sie alle Zeilen in der SQL-Datenbank abruft, die zwischen einer Startzeit,
@deltaStartTime, und einer Endzeit,@deltaEndTime, eingefügt oder gelöscht wurden.Weitere Informationen finden Sie unter Deltaabfrage.
Testen Sie die Momentaufnahmenabfrage im SQL-Abfrage-Editor. Weitere Informationen finden Sie unter Verwenden Sie den SQL-Abfrageeditor des Azure-Portals, um Daten zu verbinden und abzufragen.
Gib das Speicherkonto in der Job-Konfiguration an
Gehe unter Konfigurieren zu den Einstellungen des Speicherkontos und wähle dann Speicherkonto hinzufügen.
Starten des Auftrags
- Nachdem du die anderen Eingaben, Ausgaben und Abfragen konfiguriert hast, startest du den Stream Analytics-Job.
Fügen Sie SQL-Datenbankreferenzdaten mithilfe von Visual Studio hinzu
Verwenden Sie die folgenden Schritte, um Azure SQL-Datenbank als Referenzeingabequelle mit Visual Studio hinzuzufügen:
Voraussetzungen für Visual Studio
Installieren Sie die Stream Analytics-Tools für Visual Studio. Die Stream Analytics-Tools unterstützen folgende Versionen von Visual Studio:
- Visual Studio 2015
- Visual Studio 2019
Machen Sie sich mit dem Schnellstart der Stream Analytics-Tools für Visual Studio vertraut.
Erstellen Sie ein Speicherkonto.
Wichtig
Azure Stream Analytics speichert Snapshots innerhalb dieses Speicherkontos. Wenn Sie die Retentionsrichtlinie konfigurieren, stellen Sie sicher, dass der gewählte Zeitraum die gewünschte Wiederherstellungsdauer für Ihren Stream Analytics-Job enthält.
Erstellen einer SQL-Datenbanktabelle
Verwenden Sie SQL Server Management Studio, um eine Tabelle zum Speichern Ihrer Verweisdaten zu erstellen. Ausführliche Informationen finden Sie unter Entwerfen Ihrer ersten Azure SQL-Datenbank mit SSMS.
Die folgende Anweisung erstellt die Beispieltabelle:
create table chemicals(Id Bigint,Name Nvarchar(max),FullName Nvarchar(max));
Auswählen Ihres Abonnements
Wählen Sie in Visual Studio im Menü Ansicht den Server-Explorer aus.
Wählen Sie Azure aus (oder klicken Sie mit der rechten Maustaste), wählen Sie Connect to Microsoft Azure Subscription und melden Sie sich mit Ihrem Azure-Konto an.
Erstellen eines Stream Analytics-Projekts
Wählen Sie Datei>Neues Projekt.
In der Vorlagenliste wählen Sie Stream Analytics und dann Azure Stream Analytics Application aus.
Geben Sie den Projektnamen, den Standort und den Lösungsnamen ein und wählen Sie dann OK aus.
Eingabe von SQL-Datenbankreferenzdaten definieren
Erstellen Sie eine neue Eingabe.
Öffne Input.json in Projektmappen-Explorer.
Füllen Sie die Stream Analytics-Eingabekonfiguration aus. Geben Sie den Datenbanknamen, den Servernamen, den Aktualisierungstyp und die Aktualisierungsrate ein. Geben Sie die Aktualisierungsrate im Format
DD:HH:MMan.
Wenn du nur einmal ausführen oder periodisch ausführen wählst, generiert Visual Studio eine SQL CodeBehind-Datei namens [Input Alias].snapshot.sql im Projekt unter dem Input.json Dateiknoten.
Wenn du Periodic Refresh with Delta wählst, generiert Visual Studio zwei SQL CodeBehind-Dateien: [Input Alias].snapshot.sql und [Input Alias].delta.sql.
Öffnen Sie die SQL-Datei im Editor, und schreiben Sie die SQL-Abfrage.
Wenn Sie Visual Studio 2019 verwenden und SQL Server Data Tools installiert haben, können Sie die Abfrage testen, indem Sie Ausführen auswählen. Ein Assistent öffnet sich, der Ihnen hilft, sich mit der SQL-Datenbank zu verbinden, und das Abfrageergebnis erscheint im Fenster am unteren Ende.
Festlegen eines Speicherkontos
Öffnen Sie die Datei JobConfig.json, um das Speicherkonto festzulegen, in dem SQL-Referenzsnapshots gespeichert werden.
Lokales Testen und Bereitstellen in Azure
Bevor du den Job auf Azure deployest, kannst du die Abfragelogik lokal mit Live-Eingabedaten testen. Weitere Informationen zu dieser Funktion finden Sie unter Live Data lokal testen mit Azure Stream Analytics Tools für Visual Studio (Vorschau). Wenn du mit dem Testen fertig bist, wähle "Submit to Azure" aus. Informationen dazu, wie Sie den Auftrag starten, finden Sie im Schnellstart Erstellen eines Stream Analytics-Auftrags mit den Azure Stream Analytics-Tools für Visual Studio.
Deltaabfrage
Wenn du die Delta-Abfrage verwendest, verwende temporale Tabellen in der Azure SQL-Datenbank.
Erstellen Sie eine temporale Tabelle in Azure SQL-Datenbank.
CREATE TABLE DeviceTemporal ( [DeviceId] int NOT NULL PRIMARY KEY CLUSTERED , [GroupDeviceId] nvarchar(100) NOT NULL , [Description] nvarchar(100) NOT NULL , [ValidFrom] datetime2 (0) GENERATED ALWAYS AS ROW START , [ValidTo] datetime2 (0) GENERATED ALWAYS AS ROW END , PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo) ) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.DeviceHistory)); -- DeviceHistory table will be used in Delta queryErstellen Sie die Snapshot-Abfrage.
Verwenden Sie den @snapshotTime-Parameter , um die Stream Analytics-Laufzeit anzuweisen, den Referenzdatensatz aus der zum Systemzeit gültigen SQL-Datenbank-Temporal Tabelle abzurufen. Wenn Sie diesen Parameter nicht angeben, riskieren Sie, aufgrund von Taktverschiebungen einen ungenauen Basisreferenzdatensatz zu erhalten. Das folgende Beispiel zeigt eine vollständige Snapshot-Abfrage:
SELECT DeviceId, GroupDeviceId, [Description] FROM dbo.DeviceTemporal FOR SYSTEM_TIME AS OF @snapshotTimeErstellen Sie die Deltaabfrage.
Diese Abfrage ruft alle Zeilen in der SQL-Datenbank ab, die innerhalb einer Startzeit, @deltaStartTime und einer Endzeit, @deltaEndTime, eingefügt oder gelöscht wurden. Die Deltaabfrage muss die gleichen Spalten wie die Momentaufnahmenabfrage zurückgeben, sowie die Spalte operation. Diese Spalte definiert, ob die Zeile zwischen @deltaStartTime und @deltaEndTime eingefügt oder gelöscht wird. Die sich ergebenden Zeilen werden mit 1 gekennzeichnet, wenn die Datensätze eingefügt wurden, oder 2, wenn sie gelöscht wurden. Die Abfrage muss außerdem auf SQL-Server-Seite das watermark hinzufügen, um sicherzustellen, dass alle Aktualisierungen im Deltazeitraum korrekt erfasst werden. Die Verwendung einer Delta-Abfrage ohne Wasserstandsmarke kann zu einem inkorrekten Referenzdatensatz führen.
Für Datensätze, die aktualisiert wurden, übernimmt die temporale Tabelle die Buchführung durch Erfassen eines Einfüge- und Löschvorgangs. Die Stream-Analytics-Laufzeit wendet dann die Ergebnisse der Delta-Abfrage auf den vorherigen Snapshot an, um die Referenzdaten aktuell zu halten. Das folgende Beispiel zeigt eine Delta-Abfrage:
SELECT DeviceId, GroupDeviceId, Description, ValidFrom as _watermark_, 1 as _operation_ FROM dbo.DeviceTemporal WHERE ValidFrom BETWEEN @deltaStartTime AND @deltaEndTime -- records inserted UNION SELECT DeviceId, GroupDeviceId, Description, ValidTo as _watermark_, 2 as _operation_ FROM dbo.DeviceHistory -- table we created in step 1 WHERE ValidTo BETWEEN @deltaStartTime AND @deltaEndTime -- record deletedDie Stream Analytics-Laufzeit kann zusätzlich zur Delta-Abfrage regelmäßig die Snapshot-Abfrage ausführen, um Checkpoints zu speichern.
Wichtig
Wenn du Referenzdaten-Delta-Abfragen verwendest, solltest du nicht mehrfach identische Änderungen an der temporalen Referenzdatentabelle vornehmen. Dies kann zu falschen Ergebnissen führen. Hier ist ein Beispiel, das dazu führen könnte, dass Referenzdaten falsche Ergebnisse liefern:
UPDATE myTable SET VALUE=2 WHERE ID = 1; UPDATE myTable SET VALUE=2 WHERE ID = 1;Korrektes Beispiel:
UPDATE myTable SET VALUE = 2 WHERE ID = 1 and not exists (select * from myTable where ID = 1 and value = 2);Diese Bedingung stellt sicher, dass keine doppelten Updates auftreten.
Testen Ihrer Abfrage
Überprüfen Sie, dass Ihre Abfrage den erwarteten Datensatz liefert, den der Stream Analytics-Job als Referenzdaten verwendet. Um Ihre Abfrage zu testen, gehen Sie unter dem Abschnitt Jobtopologie im Portal zu Eingaben. Wählen Sie dann Beispieldaten auf Ihrer SQL-Datenbank-Referenzeingabe aus. Nachdem das Beispiel verfügbar ist, können Sie die Datei herunterladen und prüfen, ob die zurückgegebenen Daten wie erwartet sind. Um Ihre Entwicklungs- und Testiterationen zu optimieren, nutzen Sie die Stream Analytics-Tools für Visual Studio. Du kannst auch jedes andere Tool verwenden, das du bevorzugst, um sicherzustellen, dass die Abfrage die richtigen Ergebnisse aus deiner Azure SQL-Datenbank liefert, und dann diese Abfrage in deinem Stream Analytics-Job verwenden.
Testen Ihrer Abfrage mit Visual Studio Code
Installieren Sie Azure Stream Analytics-Tools und SQL Server (mssql) in Visual Studio Code, und richten Sie Ihr ASA-Projekt ein. Weitere Informationen finden Sie unter Quickstart: Erstellen eines Azure Stream Analytics-Auftrags in Visual Studio Code und im Tutorial zur SQL Server-Erweiterung (mssql).
Konfigurieren Sie die SQL-Verweisdateneingabe:
Wählen Sie das SQL Server-Symbol aus und wählen Sie Verbindung hinzufügen.
Füllen Sie die Verbindungsinformationen aus:
Wähle und halte (oder klicke mit Rechtsklick) in Referenz-SQL und wähle Abfrage ausführen.
Wählen Sie die Verbindung aus:
Überprüfen Sie das Abfrageergebnis:
Häufig gestellte Fragen
Entstehen zusätzliche Kosten, wenn ich SQL-Referenzdateneingaben in Azure Stream Analytics verwende?
Es gibt keine zusätzlichen Kosten pro Streaming-Einheit im Stream Analytics Job. Allerdings muss dem Stream Analytics-Auftrag ein Azure Storage-Konto zugeordnet werden. Der Stream Analytics-Job fragt die SQL-Datenbank (während des Jobstarts und des Aktualisierungsintervalls) ab, um den Referenzdatensatz abzurufen, und speichert diesen Snapshot im Speicherkonto. Das Speichern dieser Snapshots verursacht zusätzliche Kosten, die auf der Preisseite für das Azure-Speicherkonto aufgeführt sind.
Wie erkenne ich, ob ein Referenzdatensnapshot aus der SQL-Datenbank abgefragt und im Azure Stream Analytics-Job verwendet wird?
Zwei Metriken, gefiltert nach Logical Name (unter Metrics im Azure-Portal), ermöglichen es Ihnen, die Gesundheit der SQL-Datenbank-Referenzdaten zu überwachen.
- InputEvents: Diese Metrik misst die Anzahl der Datensätze, die aus dem SQL-Datenbank-Referenzdatensatz geladen werden.
- InputEventBytes: Diese Metrik misst die Größe der Momentaufnahme der Referenzdaten, die in den Arbeitsspeicher des Stream Analytics-Auftrags geladen wird.
Zusammen geben beide Metriken an, ob der Job die SQL Database abfragt, um den Referenzdatensatz abzurufen und ihn dann in den Speicher zu laden.
Brauche ich eine spezielle Art von Azure SQL-Datenbank?
Azure Stream Analytics funktioniert mit jeder Art von Azure SQL-Datenbank. Allerdings kann die Aktualisierungsrate, die Sie für die Eingabe Ihrer Referenzdaten festlegen, Ihre Abfragelast beeinflussen. Um die Delta-Abfrageoption zu verwenden, verwenden Sie temporale Tabellen in Azure SQL-Datenbank.
Warum speichert Azure Stream Analytics Snapshots in einem Azure Storage-Konto?
Stream Analytics garantiert die genau einmalige Verarbeitung von Ereignissen und die mindestens einmalige Zustellung von Ereignissen. Wenn vorübergehende Probleme deinen Job beeinträchtigen, ist eine kleine Wiederholung nötig, um den Zustand wiederherzustellen. Um das Wiederholen zu ermöglichen, müssen diese Snapshots in einem Azure Storage-Konto gespeichert werden. Für weitere Informationen zum Checkpoint-Replay siehe Checkpoint- und Replay-Konzepte in Azure Stream Analytics Jobs.
Verwandte Inhalte
- Grundlegendes zu den Ausgaben von Azure Stream Analytics
- Azure Stream Analytics-Ausgabe an Azure SQL-Datenbank
- Durchsatzleistung für Azure SQL-Datenbank aus Azure Stream Analytics erhöhen
- Zugreifen auf Azure SQL-Datenbank oder Azure Synapse Analytics mit verwalteten Identitäten aus einem Azure Stream Analytics-Auftrag
- Aktualisieren oder Zusammenführen von Datensätzen in Azure SQL-Datenbank mit Azure Functions
- Schnellstart: Erstellen eines Stream Analytics-Auftrags mithilfe des Azure-Portals