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 vom Kunden verwalteten IoT Hubs, die Event Hub-kompatiblen, integrierten Endpunkt von Geräte-zu-Cloud-Nachrichten verwenden.
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
- Daten werden in Form von EventData-Objekten aus dem Event Hub-Endpunkt gelesen.
- Siehe Unterstützte Formate.
Hinweis
Das RAW-Format wird von IoT Hub nicht unterstützt.
- Siehe Unterstützte Komprimierungen.
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 für die Vorgehensweise im Azure-Portal finden Sie unter Aktivieren des Routings mit mehreren 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.
Um eine alternative Datenbank anzugeben, legen Sie die Database Erfassungseigenschaft fest.
Warnung
Wenn Sie eine alternative Datenbank angeben, ohne die Verbindung als Datenverbindung mit mehreren Datenbanken festzulegen, kann die Erfassung fehlschlagen.
Aktivieren des Routings mit mehreren Datenbanken
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:
Navigieren Sie im Azure-Portal zu Ihrem Cluster.
Wählen Sie Datenbanken>Datenverbindungen aus.
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).
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 Erfassungseigenschaft Tabelle 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 Geräte-zu-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 Endpunktevents
, 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.