Verwenden von Verweisdaten aus einer SQL-Datenbank für einen Azure Stream Analytics-Auftrag
Azure Stream Analytics unterstützt Azure SQL-Datenbank als Eingangsquelle für Verweisdaten. Sie können SQL-Datenbank mit den Stream Analytics-Tools als Verweisdaten für Ihren Stream Analytics-Auftrag im Azure-Portal und in Visual Studio verwenden. In diesem Artikel wird veranschaulicht, wie Sie beide Methoden anwenden.
Azure-Portal
Fügen Sie mit den folgenden Schritten die Azure SQL-Datenbank-Instanz als Verweiseingabequelle mithilfe des Azure-Portals hinzu:
Portalvoraussetzungen
Erstellen Sie einen Stream Analytics-Auftrag.
Erstellen Sie ein Speicherkonto, das vom Stream Analytics-Auftrag verwendet werden soll.
Wichtig
Azure Stream Analytics speichert Momentaufnahmen in diesem Speicherkonto. Beim Konfigurieren der Aufbewahrungsrichtlinie muss unbedingt sichergestellt werden, dass der ausgewählte Zeitraum die gewünschte Wiederherstellungsdauer für Ihren Stream Analytics-Auftrag tatsächlich einschließt.
Erstellen Sie Ihre Azure SQL-Datenbank-Instanz mit einem Dataset, das als Verweisdaten vom Stream Analytics-Auftrag verwendet werden soll.
Definieren der SQL-Datenbank-Verweisdateneingabe
Wählen Sie in Ihrem Stream Analytics-Auftrag Eingaben unter Auftragstopologie aus. Klicken Sie auf Referenzeingabe hinzufügen, und wählen Sie SQL-Datenbank aus.
Füllen Sie die Stream Analytics-Eingabekonfiguration aus. Wählen Sie Datenbanknamen, Servernamen, Benutzernamen und Kennwort aus. Wenn Sie Ihre Verweisdateneingabe regelmäßig aktualisieren möchten, wählen Sie „Ein“, um die Aktualisierungsrate in TT:HH:MM anzugeben. Wenn Sie über große Datasets mit einer kurzen Aktualisierungsrate verfügen, können Sie mit Deltaabfragen Änderungen in Ihren Verweisdaten nachverfolgen, indem Sie alle Zeilen in der SQL-Datenbank abrufen, die zwischen der Startzeit @deltaStartTime und der 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 des SQL-Abfrage-Editors im Azure-Portal zum Verbinden und Abfragen von Daten.
Angeben des Speicherkontos in der Auftragskonfiguration
Navigieren Sie zu Speicherkontoeinstellungen unter Konfigurieren, und wählen Sie Speicherkonto hinzufügen aus.
Starten des Auftrags
Nachdem Sie andere Eingaben, Ausgaben und die Abfrage konfiguriert haben, können Sie den Stream Analytics-Auftrag starten.
Tools für Visual Studio
Fügen Sie mit den folgenden Schritten die Azure SQL-Datenbank-Instanz als Verweiseingabequelle mithilfe von Visual Studio hinzu:
Voraussetzungen für Visual Studio
Installieren Sie die Stream Analytics-Tools für Visual Studio. Die folgenden Versionen von Visual Studio werden unterstützt:
- 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 Momentaufnahmen in diesem Speicherkonto. Beim Konfigurieren der Aufbewahrungsrichtlinie muss unbedingt sichergestellt werden, dass der ausgewählte Zeitraum die gewünschte Wiederherstellungsdauer für Ihren Stream Analytics-Auftrag tatsächlich einschließt.
Erstellen einer SQL-Datenbanktabelle
Verwenden Sie SQL Server Management Studio, um eine Tabelle zum Speichern Ihrer Verweisdaten zu erstellen. Weitere Informationen finden Sie unter Tutorial: Entwerfen einer relationalen Datenbank in Azure SQL-Datenbank unter Verwendung von SSMS.
Die im folgenden Beispiel verwendete Beispieltabelle wurde aus der folgenden Anweisung erstellt:
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.
Klicken Sie mit der rechten Maustaste auf Azure, wählen Sie Verbindung mit Microsoft Azure-Abonnement herstellen aus, und melden Sie sich dann mit Ihrem Azure-Konto an.
Erstellen eines Stream Analytics-Projekts
Wählen Sie Datei > Neues Projekt aus.
Wählen Sie in der Vorlagenliste links Stream Analytics und dann Azure Stream Analytics Application (Azure Stream Analytics-Anwendung) aus.
Geben Sie Name, Speicherort und Projektmappenname für Ihr Projekt ein, und klicken Sie auf OK.
Definieren der SQL-Datenbank-Verweisdateneingabe
Erstellen Sie ein neues Element.
Doppelklicken Sie auf Input.JSON im Projektmappen-Explorer.
Füllen Sie die Stream Analytics-Eingabekonfiguration aus. Wählen Sie den Datenbanknamen, den Servernamen, den Aktualisierungstyp und die Aktualisierungsrate. Geben Sie die Aktualisierungsrate im Format
DD:HH:MM
an.Wenn Sie „Nur einmal ausführen“ oder „In regelmäßigen Abständen ausführen“ auswählen, wird eine SQL CodeBehind-Datei mit dem Namen [Eingabealias].snapshot.sql in dem Projekt unter dem Dateiknoten Input.JSON generiert.
Wenn Sie „In regelmäßigen Abständen mit Delta aktualisieren“ auswählen, werden zwei SQL-CodeBehind-Dateien generiert : [Eingabealias].snapshot.sql und [Eingabealias].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 auf Ausführen klicken. Ein Assistentenfenster wird eingeblendet, das Sie beim Herstellen der Verbindung mit der SQL-Datenbank-Instanz unterstützt, und das Abfrageergebnis wird am unteren Rand des Fensters angezeigt.
Festlegen eines Speicherkontos
Öffnen Sie JobConfig.json, um das Speicherkonto zum Speichern von SQL-Referenzmomentaufnahmen festzulegen.
Lokales Testen und Bereitstellen in Azure
Bevor Sie den Auftrag in Azure bereitstellen, können Sie die Abfragelogik lokal mit Liveeingabedaten testen. Weitere Informationen zu diesem Feature finden Sie unter Lokales Testen von Livedaten mithilfe von Azure Stream Analytics-Tools für Visual Studio (Vorschauversion). Klicken Sie nach Abschluss des Testens auf An Azure übermitteln. Im Schnellstart Erstellen eines Stream Analytics-Auftrags mithilfe des Azure Stream Analytics-Tools für Visual Studio erfahren Sie, wie Sie den Auftrag starten.
Deltaabfrage
Wenn Sie die Deltaabfrage verwenden, werden temporale Tabellen in der Azure SQL-Datenbank empfohlen.
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 query
Erstellen Sie die Momentaufnahmenabfrage.
Weisen Sie mit dem @snapshotTime-Parameter die Stream Analytics-Runtime an, das Referenzdataset aus der zur Systemzeit gültigen temporalen SQL-Datenbank-Tabelle abzurufen. Wenn Sie diesen Parameter nicht angeben, riskieren Sie, ein aufgrund von Zeitabweichungen ungenaues Verweisdataset zu erhalten. Ein Beispiel für die vollständige Momentaufnahmenabfrage sehen Sie unten:
SELECT DeviceId, GroupDeviceId, [Description] FROM dbo.DeviceTemporal FOR SYSTEM_TIME AS OF @snapshotTime
Erstellen Sie die Deltaabfrage.
Diese Abfrage ruft alle Zeilen in der SQL-Datenbank-Instanz ab, die zwischen der Startzeit @deltaStartTime und der 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 das Wasserzeichen von der SQL Server-Seite hinzufügen, um sicherzustellen, dass alle Aktualisierungen im Deltazeitraum ordnungsgemäß erfasst werden. Die Verwendung der Deltaabfrage ohne Wasserzeichen kann zu einem fehlerhaften Verweisdataset 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-Runtime wendet dann die Ergebnisse auf die an die vorhergehende Momentaufnahme gerichtete Deltaabfrage an, um die Verweisdaten auf dem neuesten Stand zu halten. Ein Beispiel der Deltaabfrage wird unten gezeigt:
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 deleted
Beachten Sie, dass die Stream Analytics-Runtime die Momentaufnahmenabfrage neben der Deltaabfrage in regelmäßigen Abständen ausführen kann, um Prüfpunkte zu speichern.
Wichtig
Wenn Sie Referenzdaten-Deltaabfragen verwenden, müssen Sie nicht mehrmals identische Aktualisierungen mit der temporalen Referenzdatentabelle vornehmen. Dies kann dazu führen, dass falsche Ergebnisse erzeugt werden. Hier ist ein Beispiel, das dazu führen kann, dass Referenzdaten zu falschen Ergebnissen führen:
UPDATE myTable SET VALUE=2 WHERE ID = 1; UPDATE myTable SET VALUE=2 WHERE ID = 1;
Positivbeispiel:
UPDATE myTable SET VALUE = 2 WHERE ID = 1 and not exists (select * from myTable where ID = 1 and value = 2);
Dadurch wird sichergestellt, dass keine doppelten Updates ausgeführt werden.
Testen Ihrer Abfrage
Es ist wichtig, dass Sie sicherstellen, dass Ihre Abfrage das erwartete Dataset zurückgibt, das der Stream Analytics-Auftrag als Referenzdaten verwendet. Um Ihre Abfrage zu testen, wechseln Sie zur Eingabe im Auftragstopologieabschnitt des Portals. Sie können dann in der Eingabe Ihrer SQL-Datenbankreferenzeingabe Beispieldaten auswählen. Nachdem das Beispiel verfügbar ist, können Sie die Datei herunterladen und überprüfen, um festzustellen, ob die zurückgegebenen Daten wie erwartet sind. Wenn Sie Ihre Entwicklungs- und Testiterationen optimieren möchten, wird empfohlen, die Stream Analytics-Tools für Visual Studio zu verwenden. Sie können auch ein beliebiges anderes Tool Ihrer Wahl verwenden, um zuerst sicherzustellen, dass die Abfrage die richtigen Ergebnisse aus Ihrer Azure SQL-Datenbank zurückgibt, und diese dann in Ihrem Stream Analytics-Auftrag 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 (Vorschauversion) und im Tutorial Verwenden von Visual Studio Code zum Erstellen und Ausführen von Transact-SQL-Skripts.
Konfigurieren Sie die SQL-Verweisdateneingabe:
Wählen Sie das Symbol „SQL Server“ aus, und klicken Sie auf Verbindung hinzufügen:
Füllen Sie die Verbindungsinformationen aus:
Klicken Sie mit der rechten Maustaste in den Referenz-SQL-Bereich, und wählen Sie Abfrage ausführen aus.
Wählen Sie die Verbindung aus:
Überprüfen Sie das Abfrageergebnis:
Häufig gestellte Fragen
Entstehen mir zusätzliche Kosten, wenn ich die SQL-Verweisdateneingabe in Azure Stream Analytics verwende?
Es gibt keine zusätzlichen Kosten pro Streamingeinheit im Stream Analytics-Auftrag. Allerdings muss dem Stream Analytics-Auftrag ein Azure Storage-Konto zugeordnet werden. Der Stream Analytics-Auftrag fragt die SQL-Datenbank-Instanz ab (während des Auftragsstarts und Aktualisierungsintervalls), um das Verweisdataset abzurufen, und speichert diese Momentaufnahme im Speicherkonto. Beim Speichern dieser Momentaufnahmen fallen zusätzliche Gebühren an, die ausführlich in der Übersicht über die Preise für Azure Storage für das Azure Storage-Konto beschrieben werden.
Wie erfahre ich, ob die Verweisdaten-Momentaufnahme von der SQL-Datenbank-Instanz abgefragt und im Azure Stream Analytics-Auftrag verwendet wird?
Es gibt zwei nach dem logischen Namen gefilterte Metriken (unter Metriken im Azure-Portal), die Sie zur Überwachung der Integrität der SQL-Datenbank-Referenzdateneingabe verwenden können.
- InputEvents: Diese Metrik misst die Anzahl der Datensätze, die aus dem SQL-Datenbank-Verweisdataset geladen werden.
- InputEventBytes: Diese Metrik misst die Größe der in den Arbeitsspeicher des Stream Analytics-Auftrags geladenen Verweisdaten-Momentaufnahme.
Mithilfe der Kombination dieser beiden Metriken kann ermittelt werden, ob der Auftrag die SQL-Datenbank-Instanz abfragt, um das Verweisdataset abzurufen und dann in den Arbeitsspeicher zu laden.
Benötige ich eine besondere Art der Azure SQL-Datenbank-Instanz?
Azure Stream Analytics funktioniert mit jeder Art von Azure SQL-Datenbank-Instanz. Allerdings müssen Sie berücksichtigen, dass die für Ihre Verweisdateneingabe festgelegte Aktualisierungsrate sich auf Ihre Abfragelast auswirken kann. Um die Deltaabfrageoption zu verwenden, sollten Sie temporale Tabellen in Azure SQL-Datenbank verwenden.
Warum speichert Azure Stream Analytics Momentaufnahmen im Azure Storage-Konto?
Für Stream Analytics wird die Exactly-Once-Ereignisverarbeitung (genau einmal) und die At-Least-Once-Zustellung (mindestens einmal) von Ereignissen garantiert. In Fällen, in denen vorübergehende Probleme sich auf Ihren Auftrag auswirken, ist eine kleine Wiedergabemenge erforderlich, um den Status wiederherzustellen. Um die Wiedergabe zu ermöglichen, müssen diese Momentaufnahmen in einem Azure Storage-Konto gespeichert sein. Weitere Informationen zur Prüfpunktwiedergabe finden Sie unter Begriffe zu Prüfpunkten und zur Wiedergabe bei Azure Stream Analytics-Aufträgen.
Nächste Schritte
- Grundlegendes zu den Ausgaben von Azure Stream Analytics
- Azure Stream Analytics-Ausgabe an Azure SQL-Datenbank
- Erhöhen der Durchsatzleistung zu Azure SQL-Datenbank aus Azure Stream Analytics
- 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