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

  1. Erstellen Sie einen Stream Analytics-Auftrag.

  2. 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.

  3. 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

  1. 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.

    Inputs is selected in the left navigation pane. On Inputs, + Add reference input is selected, revealing a drop-down list that shows the values Blob storage and SQL Database.

  2. 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.

When SQL Database is selected, the SQL Database New input page appears. There is a configuration form in the left pane, and a Snapshot query in the right pane.

  1. 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.

Storage account settings is selected in the left pane. There is an Add storage account button in the right pane.

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

  1. 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
  2. Machen Sie sich mit dem Schnellstart der Stream Analytics-Tools für Visual Studio vertraut.

  3. 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

  1. Wählen Sie in Visual Studio im Menü Ansicht den Server-Explorer aus.

  2. 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

  1. Wählen Sie Datei > Neues Projekt aus.

  2. Wählen Sie in der Vorlagenliste links Stream Analytics und dann Azure Stream Analytics Application (Azure Stream Analytics-Anwendung) aus.

  3. Geben Sie Name, Speicherort und Projektmappenname für Ihr Projekt ein, und klicken Sie auf OK.

    The Stream Analytics template is selected, Azure Stream Analytics Application is selected, and the Name, Location, and Solution names boxes are highlighted.

Definieren der SQL-Datenbank-Verweisdateneingabe

  1. Erstellen Sie ein neues Element.

    On Add New Item, Input is selected.

  2. Doppelklicken Sie auf Input.JSON im Projektmappen-Explorer.

  3. 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.

    In Stream Analytics Input Configuration, values are entered or selected from drop-down lists.

    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.

    The SQL CodeBehind file Chemicals.snapshot.sql is highlighted.

    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.

    The SQL CodeBehind files Chemicals.delta.sql and Chemicals.snapshot.sql are highlighted.

  4. Öffnen Sie die SQL-Datei im Editor, und schreiben Sie die SQL-Abfrage.

  5. 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.

Stream Analytics Job Configure Configuration is shown with default values. The Global Storage Settings are highlighted.

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.

  1. 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
    
  2. 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
    
  3. 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.

  1. Konfigurieren Sie die SQL-Verweisdateneingabe:

    A Visual Studio Code editor (tab) shows ReferenceSQLDatabase.json.

  2. Wählen Sie das Symbol „SQL Server“ aus, und klicken Sie auf Verbindung hinzufügen:

    + Add Connection appears in the left pane and is highlighted.

  3. Füllen Sie die Verbindungsinformationen aus:

    The two boxes for database and server information are highlighted.

  4. Klicken Sie mit der rechten Maustaste in den Referenz-SQL-Bereich, und wählen Sie Abfrage ausführen aus.

    Execute Query is highlighted in the context menu.

  5. Wählen Sie die Verbindung aus:

    The dialog box says

  6. Überprüfen Sie das Abfrageergebnis:

    The query search results are in a VS Code editor tab.

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