IoT Hub-Datenverbindung

Azure IoT Hub ist ein in der Cloud gehosteter, verwalteter Dienst, der als zentraler Nachrichtenhub für die bidirektionale Kommunikation zwischen Ihrer IoT-Anwendung und den von ihr verwalteten Geräten dient. Azure Data Explorer bietet eine kontinuierliche Erfassung von kundenseitig verwalteten IoT Hubs mithilfe des event Hub-kompatiblen integrierten Endpunkts von Device-to-Cloud-Nachrichten.

Die IoT-Erfassungspipeline umfasst mehrere Schritte. Als Erstes erstellen Sie eine IoT Hub-Instanz, bei der Sie dann ein Gerät registrieren. Anschließend erstellen Sie eine Zieltabelle in Azure Data Explorer, in der die Daten in einem bestimmten Format anhand der Erfassungseigenschaften erfasst werden. Die IoT Hub-Verbindung muss über Informationen zum Ereignisrouting verfügen, um eine Verbindung mit der Azure Data Explorer-Tabelle herzustellen. Daten werden mit ausgewählten Eigenschaften gemäß der Eigenschaftenzuordnung des Ereignissystems eingebettet. Dieser Prozess kann über das Azure-Portal, programmgesteuert mit C# oder Python oder mit der Azure Resource Manager-Vorlage verwaltet werden.

Allgemeine Informationen zur Datenerfassung in Azure Data Explorer finden Sie unter Übersicht über die Datenerfassung in Azure Data Explorer.

Datenformat

Erfassungseigenschaften

Erfassungseigenschaften weisen den Erfassungsprozess an, wohin die Daten weitergeleitet und wie sie verarbeitet werden sollen. Sie können Erfassungseigenschaften der Ereignisse mithilfe von EventData.Properties angeben. Sie können die folgenden Eigenschaften festlegen:

Eigenschaft BESCHREIBUNG
Datenbank Name (unter Berücksichtigung der Groß-/Kleinschreibung) der Zieldatenbank. Diese Eigenschaft kann verwendet werden, wenn Sie die Daten an eine andere Datenbank als die Datenbank senden möchten, in der die Datenverbindung erstellt wurde (die Standarddatenbank). Um die Daten an mehrere Datenbanken weiterzuleiten, müssen Sie zuerst die Verbindung als Verbindung mit mehreren Datenbanken einrichten. Weitere Informationen finden Sie unter Ereignisrouting.
Tabelle Name (unter Berücksichtigung der Groß/Kleinschreibung) der vorhandenen Zieltabelle. Überschreibt das Table-Element, das im Bereich Data Connection festgelegt ist.
Format Datenformat. Überschreibt das Data format-Element, das im Bereich Data Connection festgelegt ist.
IngestionMappingReference Name der zu verwendenden vorhandenen Erfassungszuordnung. Überschreibt das Column mapping-Element, das im Bereich Data Connection festgelegt ist.
Codierung Datencodierung. Die Standardeinstellung ist UTF8. Alle von .NET unterstützten Codierungen können verwendet werden.

Hinweis

Nur Ereignisse, die nach dem Erstellen der Datenverbindung in die Warteschlange eingereiht werden, werden erfasst.

Ereignisrouting

Wenn Sie eine Datenverbindung mit Ihrem Cluster herstellen, geben Sie das Routing für das Senden der erfassten Daten an. Das Standardrouting gilt für die Zieltabelle, die in der Verbindungszeichenfolge angegeben ist, die der Zieldatenbank zugeordnet ist. Das Standardrouting für Ihre Daten wird auch als statisches Routing bezeichnet. Sie können ein alternatives Routing für Ihre Daten angeben, indem Sie die Ereignisdateneigenschaften verwenden.

Routen von Ereignisdaten an eine alternative Datenbank

Das Routing von Daten an eine alternative Datenbank ist standardmäßig deaktiviert. Um die Daten an eine andere Datenbank zu senden, müssen Sie zuerst die Verbindung als Verbindung mit mehreren Datenbanken festlegen. Ein Beispiel hierfür im Azure-Portal finden Sie unter Aktivieren des Routings für mehrere Datenbanken. Der Benutzer, die Gruppe, der Dienstprinzipal oder die verwaltete Identität, der bzw. die zum Zulassen des Datenbankroutings verwendet wird, muss mindestens über die Rolle Mitwirkender und Schreibberechtigungen für den Cluster verfügen.

Legen Sie zum Angeben einer alternativen Datenbank die ErfassungseigenschaftDatabase fest.

Warnung

Wenn Sie eine alternative Datenbank angeben, ohne die Verbindung als Datenverbindung mit mehreren Datenbanken festzulegen, kann die Erfassung fehlschlagen.

Aktivieren des Multidatenbankroutings

Bevor Sie eine alternative Zieldatenbank festlegen können, müssen Sie zuerst das Routing der Daten an mehrere Datenbanken zulassen. Führen Sie die folgenden Schritte aus, um das Routing der Daten an alternative Datenbanken zu ermöglichen:

  1. Navigieren Sie im Azure-Portal zu Ihrem Cluster.

  2. Wählen Sie Datenbanken>Datenverbindungen aus.

  3. Erstellen oder bearbeiten Sie eine Datenverbindung, und aktivieren Sie im Bereich Datenverbindung unter Datenroutingeinstellungen die Option zum Zulassen des Routings von Daten an andere Datenbanken (Datenverbindung mit mehreren Datenbanken).

    Screenshot der Azure Data Explorer-Webbenutzeroberfläche mit der Option

Routen von Ereignisdaten an eine alternative Tabelle

Sie können mithilfe von Ereigniseigenschaften auch Zieltabelleneigenschaften für jedes Ereignis angeben. Die Verbindung leitet die Daten wie in EventData.Properties festgelegt dynamisch weiter und setzt dabei die statischen Eigenschaften für dieses Ereignis außer Kraft. Legen Sie zum Angeben einer alternativen Tabelle die ErfassungseigenschaftTabelle fest.

Hinweis

Wenn Sie Meine Daten enthalten Routinginformationen auswählen, müssen Sie die erforderlichen Routinginformationen in den Ereigniseigenschaften angeben.

Zuordnung von Ereignissystemeigenschaften

Die Systemeigenschaften sind eine Sammlung, in der Eigenschaften gespeichert werden, die beim Empfang des Ereignisses vom IoT Hub-Dienst festgelegt werden. Die IoT Hub-Verbindung mit Azure Data Explorer bettet die ausgewählten Eigenschaften in die Daten ein, die in Ihre Tabelle gelangen.

Hinweis

Für die csv-Zuordnung werden Eigenschaften in der in der folgenden Tabelle aufgeführten Reihenfolge am Anfang des Datensatzes hinzugefügt. Für die json-Zuordnung werden Eigenschaften entsprechend den Eigenschaftsnamen in der folgenden Tabelle hinzugefügt.

Systemeigenschaften

IoT Hub macht die folgenden Systemeigenschaften für Device-to-Cloud-IoT Hub-Nachrichten verfügbar:

Eigenschaft BESCHREIBUNG
message-id Eine vom Benutzer festgelegte Kennung für die Nachricht; wird für Anforderung-Antwort-Muster verwendet. Format: Eine Zeichenfolge mit Berücksichtigung von Klein-/Großschreibung (bis zu 128 Zeichen lang), die aus alphanumerischen ASCII-Zeichen (7 Bit) + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''}besteht.
iothub-enqueuedtime Datum und Uhrzeit des Empfangs der D2C-Nachricht durch IoT Hub.
user-id Eine ID zum Festlegen des Ursprungs von Nachrichten. Wenn Nachrichten von IoT Hub generiert werden, wird dieser Wert auf {iot hub name}festgelegt.
iothub-connection-device-id Eine ID, die von IoT Hub für D2C-Nachrichten festgelegt wird. Diese Eigenschaft enthält die deviceId des Geräts, das die Nachricht sendet.
iothub-connection-module-id Eine ID, die von IoT Hub für D2C-Nachrichten festgelegt wird. Sie enthält die moduleId des Geräts, das die Nachricht sendet.
iothub-connection-auth-generation-id Eine ID, die von IoT Hub für D2C-Nachrichten festgelegt wird. Sie enthält die connectionDeviceGenerationId (gemäß Geräteidentitätseigenschaften) des Geräts, das die Nachricht gesendet hat.
iothub-connection-auth-method Eine von IoT Hub für D2C-Nachrichten festgelegte Authentifizierungsmethode. Diese Eigenschaft enthält Informationen zu der Methode, die zum Authentifizieren des Geräts verwendet wird, das die Nachricht sendet.
iothub-app-iothub-creation-time-utc Ermöglicht dem Gerät das Senden der Ereigniserstellungszeit beim Senden von Daten in einem Batch.
iothub-creation-time-utc Ermöglicht dem Gerät das Senden der Ereigniserstellungszeit, wenn jeweils eine Nachricht gleichzeitig gesendet wird.
dt-dataschema Dieser Wert wird von IoT Hub für Gerät-zu-Cloud-Nachrichten festgelegt. Er enthält die in der Geräteverbindung festgelegte Gerätemodell-ID.
dt-subject Der Name der Komponente, die die Gerät-zu-Cloud-Nachrichten sendet.

Wenn Sie Ereignissystemeigenschaften im Abschnitt Datenquelle der Tabelle ausgewählt haben, müssen Sie die Eigenschaften in das Tabellenschema und die Zuordnung einschließen.

Beispiele für die Schemazuordnung

Beispiel für die Tabellenschemazuordnung

Wenn Ihre Daten drei Spalten (Timespan, Metric und Value) enthalten und die Eigenschaften, die Sie einschließen, iothub-connection-device-id und sequence-number lauten, erstellen oder ändern Sie das Tabellenschema mit dem folgenden Befehl:

    .create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, IotHubDeviceId:long, IotHubSequenceNumber:long)

Beispiel für eine CSV-Zuordnung

Führen Sie die folgenden Befehle aus, um am Anfang des Datensatzes Daten hinzuzufügen. Beachten Sie die Ordinalwerte.

    .create table TestTable ingestion csv mapping "CsvMapping1"
    '['
    '   { "column" : "TimeStamp", "Properties":{"Ordinal":"2"}},'
    '   { "column" : "Metric", "Properties":{"Ordinal":"3"}},'
    '   { "column" : "Value", "Properties":{"Ordinal":"4"}},'
    '   { "column" : "IotHubDeviceId", "Properties":{"Ordinal":"0"}},'
    '   { "column" : "IotHubSequenceNumber", "Properties":{"Ordinal":"1"}}'
    ']'

Beispiel für eine JSON-Zuordnung

Daten werden mithilfe der Systemeigenschaftenzuordnung hinzugefügt. Führen Sie diese Befehle aus:

    .create table TestTable ingestion json mapping "JsonMapping1"
    '['
    '    { "column" : "TimeStamp", "Properties":{"Path":"$.timestamp"}},'
    '    { "column" : "Metric", "Properties":{"Path":"$.metric"}},'
    '    { "column" : "Value", "Properties":{"Path":"$.metric_value"}},'
    '    { "column" : "IotHubDeviceId", "Properties":{"Path":"$.iothub-connection-device-id"}},'
    '    { "column" : "IotHubSequenceNumber", "Properties":{"Path":"$.sequence-number"}}'
    ']'

Zuordnung der Benutzereigenschaften für Ereignisse

Es gibt keine Unterstützung für das Anreichern der IoT Hub-Ereignisnutzdaten mit Benutzereigenschaften. Erwägen Sie das Einbetten von Benutzereigenschaften in den Ereignistext-Upstream.

IoT Hub-Verbindung

Hinweis

Die beste Leistung erzielen Sie, wenn Sie alle Ressourcen in der gleichen Region wie den Azure Data Explorer-Cluster erstellen.

Erstellen eines IoT Hubs

Erstellen Sie einen IoT Hub, sofern Sie noch keinen haben. Die Verbindung mit IoT Hub kann über das Azure-Portal, programmgesteuert mit C# oder Python oder mit der Azure Resource Manager-Vorlage verwaltet werden.

Hinweis

  • Die Anzahl von device-to-cloud partitions kann nicht geändert werden. Behalten Sie daher beim Festlegen der Partitionsanzahl die langfristige Skalierung im Hinterkopf.
  • Die Consumergruppe muss pro Consumer eindeutig sein. Erstellen Sie eine dedizierte Consumergruppe für die Azure Data Explorer-Verbindung. Suchen Sie im Azure-Portal nach Ihrer Ressource, und wechseln Sie zu Built-in endpoints, um eine neue Consumergruppe hinzuzufügen.
  • Die Datenverbindung verwendet integrierte Endpunkte (Built-in endpoint) von IoT Hub. Wenn Sie einen anderen Endpunkt für das Nachrichtenrouting (Message routing endpoint) konfigurieren, werden Nachrichten erst wieder an den integrierten Endpunkt (Built-in endpoint) gesendet, wenn eine Route zu diesem Endpunkt erstellt wird. Konfigurieren Sie eine Route zum Endpunkt events, um sicherzustellen, dass Nachrichten weiterhin an den integrierten Endpunkt weitergeleitet werden, wenn eine neue Route hinzugefügt wird. Weitere Informationen finden Sie unter Problembehandlung für das IoT Hub-Nachrichtenrouting.

Senden von Ereignissen

Weitere Informationen finden Sie im Beispielprojekt zur Simulation eines Geräts und Generierung von Daten.

Nächster Schritt