Erfassen von Daten mithilfe von Azure Stream Analytics in Azure Cosmos DB for PostgreSQL

GILT FÜR: Azure Cosmos DB for PostgreSQL (unterstützt von der Citus-Datenbankerweiterung auf PostgreSQL)

Azure Stream Analytics ist eine Engine für Analysen und Ereignisverarbeitung in Echtzeit, die für die Verarbeitung großer Mengen schneller Streamingdaten von Geräten, Sensoren und Websites konzipiert ist. Sie ist auch auf der Azure IoT Edge Runtime verfügbar und ermöglicht die Datenverarbeitung auf IoT-Geräten.

Abbildung: Stream Analytics-Architektur mit Azure Cosmos DB for PostgreSQL

Azure Cosmos DB for PostgreSQL überzeugt insbesondere bei Echtzeitworkloads wie IoT. Für diese Workloads kann Stream Analytics als codefreie, leistungsstarke und skalierbare Alternative zur Vorverarbeitung und zum Streaming von Daten aus Azure Event Hubs, Azure IoT Hub und Azure Blob Storage in Azure Cosmos DB for PostgreSQL dienen.

Schritte zum Einrichten von Stream Analytics

Hinweis

In diesem Artikel wird Azure IoT Hub als Beispieldatenquelle verwendet, aber die Technik ist auf jede andere von Stream Analytics unterstützte Quelle anwendbar. Auch die nachstehenden Anschauungsdaten stammen aus dem Azure IoT Device Telemetry Simulator. Dieser Artikel befasst sich nicht mit der Einrichtung des Simulators.

  1. Erweitern Sie im Azure-Portal das Portalmenü oben links, und wählen Sie Ressource erstellen aus.

  2. Klicken Sie in der Ergebnisliste auf Analytics>Stream Analytics-Auftrag.

  3. Geben Sie auf der Seite Neuer Stream Analytics-Auftrag die folgenden Informationen ein:

    • Abonnement – Wählen Sie das Azure-Abonnement, das Sie für diesen Auftrag verwenden möchten.
    • Ressourcengruppe: Wählen Sie die gleiche Ressourcengruppe wie für Ihren IoT-Hub.
    • Name: Geben Sie einen Namen zur Identifizierung des Stream Analytics-Auftrags ein.
    • Region: Wählen Sie die Azure-Region aus, in der Ihr Stream Analytics-Auftrag gehostet werden soll. Verwenden Sie den geografischen Standort, der Ihren Benutzern am nächsten liegt, um die Leistung zu verbessern und die Kosten für die Datenübertragung zu senken.
    • Hostingumgebung: Wählen Sie Cloud für die Bereitstellung in der Azure-Cloud oder Edge für die Bereitstellung auf einem IoT Edge-Gerät aus.
    • Streamingeinheiten: Wählen Sie die Anzahl der Streamingeinheiten für die Rechenressourcen aus, die Sie zum Ausführen des Auftrags benötigen.
  4. Klicken Sie auf Überprüfen und erstellen und dann auf Erstellen. Oben rechts sollte eine Meldung Bereitstellung wird durchgeführt angezeigt werden.

    Screenshot: Formular zum Erstellen eines Stream Analytics-Auftrags

  5. Konfigurieren einer Auftragseingabe.

    Screenshot: Konfigurieren der Auftragseingabe in Stream Analytics

    1. Sobald die Bereitstellung der Ressourcen abgeschlossen ist, navigieren Sie zu Ihrem Stream Analytics-Auftrag. Wählen Sie Eingaben>Datenstromeingabe hinzufügen>IoT Hub aus.

    2. Fügen Sie auf der Seite IoT Hub die folgenden Werte ein:

      • Eingabealias: Geben Sie einen Namen ein, um die Auftragseingabe zu identifizieren.
      • Abonnement: Wählen Sie das Azure-Abonnement aus, dem Ihr IoT Hub-Konto zugeordnet ist.
      • IoT Hub: Wählen Sie den Namen Ihres IoT-Hubs aus.
    3. Wählen Sie Speichern aus.

    4. Sobald der Eingabestream hinzugefügt wurde, können Sie auch das eingehende Dataset überprüfen oder herunterladen. Der folgende Code zeigt die Daten für ein Beispielereignis:

      {
         "deviceId": "sim000001",
         "time": "2022-04-25T13:49:11.6892185Z",
         "counter": 1,
         "EventProcessedUtcTime": "2022-04-25T13:49:41.4791613Z",
         "PartitionId": 3,
         "EventEnqueuedUtcTime": "2022-04-25T13:49:12.1820000Z",
         "IoTHub": {
           "MessageId": null,
           "CorrelationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
           "ConnectionDeviceId": "sim000001",
           "ConnectionDeviceGenerationId": "637842405470327268",
           "EnqueuedTime": "2022-04-25T13:49:11.7060000Z"
         }
      }
      
  6. Konfigurieren der Auftragsausgabe

    1. Wählen Sie auf der Seite für den Stream Analytics-Auftrag Ausgaben>Hinzufügen>PostgreSQL-Datenbank (Vorschau) aus.

      Screenshot: Auswählen der PostgreSQL-Datenbankausgabe

    2. Geben Sie auf der Seite Azure PostgreSQL folgende Werte ein:

      • Ausgabealias: Geben Sie einen Namen zur Identifizierung der Auftragsausgabe ein.
      • Wählen Sie PostgreSQL-Datenbankeinstellungen manuell angeben aus, und geben Sie Werte für Vollqualifizierter Domänenname des Servers, Datenbank, Tabelle, Benutzername und Kennwort ein. Verwenden Sie die Tabelle device_data aus dem Beispieldataset.
    3. Wählen Sie Speichern aus.

    Konfigurieren einer Auftragsausgabe in Azure Stream Analytics

  7. Definieren der Transformationsabfrage

    Transformationsabfrage in Azure Stream Analytics

    1. Wählen Sie auf der Seite für den Stream Analytics-Auftrag im Menü links die Option Abfrage aus.

    2. In diesem Tutorial erfassen Sie nur die alternativen Ereignisse von IoT Hub in Azure Cosmos DB for PostgreSQL, um die Gesamtdatenmenge zu verringern. Kopieren Sie die folgende Abfrage, und fügen Sie sie in den Abfragebereich ein:

      select
         counter,
         iothub.connectiondeviceid,
         iothub.correlationid,
         iothub.connectiondevicegenerationid,
         iothub.enqueuedtime
      from
         [src-iot-hub]
      where counter%2 = 0;
      
    3. Wählen Sie Abfrage speichern aus.

      Hinweis

      Sie verwenden die Abfrage nicht nur zum Abfragen der Daten, sondern auch zum Extrahieren der gewünschten Attribute aus dem Datenstrom. Die benutzerdefinierte Abfrageoption von Stream Analytics ist hilfreich bei der Vorverarbeitung/Transformation der Daten, bevor sie in die Datenbank eingespeist werden.

  8. Starten Sie den Stream Analytics-Auftrag und überprüfen Sie die Ausgabe.

    1. Wechseln Sie zurück zur Seite mit der Auftragsübersicht, und klicken Sie auf Starten.

    2. Wählen Sie auf der Seite Auftrag starten für Startzeit der Auftragsausgabe die Option Jetzt aus, und klicken Sie dann auf Starten.

    3. Der erste Start des Auftrags nimmt etwas Zeit in Anspruch, aber nach der Auslösung wird er fortgesetzt, sobald die Daten eingehen. Nach einigen Minuten können Sie den Cluster abfragen, um zu überprüfen, ob die Daten geladen wurden.

      citus=> SELECT * FROM public.device_data LIMIT 10;
      
       counter | connectiondeviceid |            correlationid             | connectiondevicegenerationid |         enqueuedtime
      ---------+--------------------+--------------------------------------+------------------------------+------------------------------
             2 | sim000001          | 7745c600-5663-44bc-a70b-3e249f6fc302 | 637842405470327268           | 2022-05-25T18:24:03.4600000Z
             4 | sim000001          | 389abfde-5bec-445c-a387-18c0ed7af227 | 637842405470327268           | 2022-05-25T18:24:05.4600000Z
             6 | sim000001          | 3932ce3a-4616-470d-967f-903c45f71d0f | 637842405470327268           | 2022-05-25T18:24:07.4600000Z
             8 | sim000001          | 4bd8ecb0-7ee1-4238-b034-4e03cb50f11a | 637842405470327268           | 2022-05-25T18:24:09.4600000Z
            10 | sim000001          | 26cebc68-934e-4e26-80db-e07ade3775c0 | 637842405470327268           | 2022-05-25T18:24:11.4600000Z
            12 | sim000001          | 067af85c-a01c-4da0-b208-e4d31a24a9db | 637842405470327268           | 2022-05-25T18:24:13.4600000Z
            14 | sim000001          | 740e5002-4bb9-4547-8796-9d130f73532d | 637842405470327268           | 2022-05-25T18:24:15.4600000Z
            16 | sim000001          | 343ed04f-0cc0-4189-b04a-68e300637f0e | 637842405470327268           | 2022-05-25T18:24:17.4610000Z
            18 | sim000001          | 54157941-2405-407d-9da6-f142fc8825bb | 637842405470327268           | 2022-05-25T18:24:19.4610000Z
            20 | sim000001          | 219488e5-c48a-4f04-93f6-12c11ed00a30 | 637842405470327268           | 2022-05-25T18:24:21.4610000Z
      (10 rows)
      

Hinweis

Die Funktion Verbindung testen wird derzeit für Azure Cosmos DB for PostgreSQL nicht unterstützt und kann einen Fehler auslösen, selbst wenn die Verbindung einwandfrei funktioniert.

Nächste Schritte

Erfahren Sie, wie Sie ein Echtzeitdashboard mit Azure Cosmos DB for PostgreSQL erstellen.