IoT Hub-gegevensverbinding
Azure IoT Hub is een beheerde service, gehost in de cloud, die fungeert als een centrale berichtenhub voor bidirectionele communicatie tussen uw IoT-toepassing en de apparaten die deze beheert. Azure Data Explorer biedt continue opname van door de klant beheerde IoT Hubs, met behulp van het ingebouwde Event Hub-eindpunt van apparaat-naar-cloud-berichten.
De IoT-opnamepijplijn doorloopt verschillende stappen. Eerst maakt u een IoT Hub en registreert u er een apparaat bij. Vervolgens maakt u een doeltabel in Azure Data Explorer waarin de gegevens in een bepaalde indeling worden opgenomen met behulp van de opgegeven opname-eigenschappen. De IoT Hub-verbinding moet de routering van gebeurtenissen kennen om verbinding te maken met de Azure Data Explorer-tabel. Gegevens worden ingesloten met geselecteerde eigenschappen op basis van de toewijzing van de eigenschappen van het gebeurtenissysteem. Dit proces kan worden beheerd via de Azure Portal, programmatisch met C# of Python of met de Azure Resource Manager-sjabloon.
Zie Overzicht van gegevensopname in Azure Data Explorer voor algemene informatie over gegevensopname in Azure Data Explorer.
Gegevensindeling
- Gegevens worden gelezen van het Event Hub-eindpunt in de vorm van EventData-objecten .
- Zie ondersteunde indelingen.
Notitie
IoT Hub biedt geen ondersteuning voor de indeling .raw.
- Zie ondersteunde compressies.
Opname-eigenschappen
Opname-eigenschappen geven aan het opnameproces waar de gegevens moeten worden gerouteerd en hoe deze moeten worden verwerkt. U kunt opname-eigenschappen van de gebeurtenissen opgeven met behulp van EventData.Properties. U kunt de volgende eigenschappen instellen:
Eigenschap | Beschrijving |
---|---|
Database | Naam (hoofdlettergevoelig) van de doeldatabase. Deze eigenschap kan worden gebruikt als u de gegevens wilt verzenden naar een andere database dan de database waarop de gegevensverbinding is gemaakt (de standaarddatabase). Als u de gegevens naar meerdere databases wilt routeren, moet u de verbinding eerst instellen als een verbinding met meerdere databases. Zie Gebeurtenissenroutering voor meer informatie. |
Tabel | Naam (hoofdlettergevoelig) van de bestaande doeltabel. Overschrijft de Table set in het Data Connection deelvenster. |
Indeling | Gegevensindeling. Overschrijft de Data format set in het Data Connection deelvenster. |
IngestionMappingReference | Naam van de bestaande opnametoewijzing die moet worden gebruikt. Overschrijft de Column mapping set in het Data Connection deelvenster. |
Encoding | Gegevenscodering, de standaardwaarde is UTF8. Kan een van de door .NET ondersteunde coderingen zijn. |
Notitie
Alleen gebeurtenissen die zijn opgenomen nadat u de gegevensverbinding hebt gemaakt, worden opgenomen.
Routering van gebeurtenissen
Wanneer u een gegevensverbinding met uw cluster maakt, geeft u de routering op voor het verzenden van opgenomen gegevens. De standaardroutering is naar de doeltabel die is opgegeven in de verbindingsreeks die is gekoppeld aan de doeldatabase. De standaardroutering voor uw gegevens wordt ook wel statische routering genoemd. U kunt een alternatieve routering voor uw gegevens opgeven met behulp van de eigenschappen van gebeurtenisgegevens.
Gebeurtenisgegevens routeren naar een alternatieve database
Het routeren van gegevens naar een alternatieve database is standaard uitgeschakeld. Als u de gegevens naar een andere database wilt verzenden, moet u de verbinding eerst instellen als een verbinding met meerdere databases. Zie Routering voor meerdere databases inschakelen voor een voorbeeld van hoe u dit doet in de Azure Portal. De gebruiker, groep, service-principal of beheerde identiteit die wordt gebruikt om databaseroutering toe te staan, moet ten minste de rol inzender en schrijfmachtigingen voor het cluster hebben.
Als u een alternatieve database wilt opgeven, stelt u de eigenschap Databaseopname in.
Waarschuwing
Als u een alternatieve database opgeeft zonder de verbinding in te stellen als een gegevensverbinding met meerdere databases, mislukt de opname.
Routering van meerdere databases inschakelen
Voordat u een alternatieve doeldatabase kunt instellen, moet u eerst toestaan dat de gegevens naar meerdere databases worden gerouteerd. Gebruik de volgende stappen om routering van de gegevens naar alternatieve databases toe te staan:
Blader in de Azure Portal naar uw cluster.
Selecteer Databases>Gegevensverbindingen.
Maak of bewerk een gegevensverbinding en schakel in het deelvenster Gegevensverbinding onder Instellingen voor gegevensroutering de optie Gegevensroutering naar een andere database toestaan (gegevensverbinding met meerdere databases) in.
Gebeurtenisgegevens doorsturen naar een alternatieve tabel
U kunt ook eigenschappen van de doeltabel opgeven voor elke gebeurtenis, met behulp van gebeurteniseigenschappen. De verbinding stuurt de gegevens dynamisch door zoals opgegeven in EventData.Properties, waarbij de statische eigenschappen voor deze gebeurtenis worden overschreven. Als u een alternatieve tabel wilt opgeven, stelt u de eigenschap Tabelopname in.
Notitie
Als Mijn gegevens routeringsgegevens bevatten geselecteerd, moet u de benodigde routeringsgegevens opgeven als onderdeel van de gebeurteniseigenschappen.
Toewijzing van gebeurtenissysteemeigenschappen
Systeemeigenschappen zijn een verzameling die wordt gebruikt voor het opslaan van eigenschappen die zijn ingesteld door de IoT Hub-service op het moment dat de gebeurtenis wordt ontvangen. Met de Azure Data Explorer IoT Hub-verbinding worden de geselecteerde eigenschappen ingesloten in de gegevenslanding in uw tabel.
Notitie
Voor csv
toewijzing worden eigenschappen toegevoegd aan het begin van de record in de volgorde die wordt vermeld in de onderstaande tabel. Voor json
toewijzing worden eigenschappen toegevoegd op basis van eigenschapsnamen in de volgende tabel.
Systeemeigenschappen
IoT Hub maakt de volgende systeemeigenschappen beschikbaar voor apparaat-naar-cloud-IoT Hub-berichten:
Eigenschap | Beschrijving |
---|---|
message-id | Een door de gebruiker ingestelde id voor het bericht dat wordt gebruikt voor aanvraag-antwoordpatronen. Opmaak: Een hoofdlettergevoelige tekenreeks (maximaal 128 tekens lang) met 7-bits ASCII-alfanumerieke tekens + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''} . |
iothub-enqueuedtime | De datum en tijd waarop het apparaat-naar-cloud-bericht is ontvangen door IoT Hub. |
user-id | Een id die wordt gebruikt om de oorsprong van berichten op te geven. Wanneer berichten worden gegenereerd door IoT Hub, wordt deze waarde ingesteld op {iot hub name} . |
iothub-connection-device-id | Een id die is ingesteld door IoT Hub op apparaat-naar-cloud-berichten. Het bevat de deviceId van het apparaat dat het bericht heeft verzonden. |
iothub-connection-module-id | Een id die is ingesteld door IoT Hub op apparaat-naar-cloud-berichten. Het bevat de moduleId van het apparaat dat het bericht heeft verzonden. |
iothub-connection-auth-generation-id | Een id die is ingesteld door IoT Hub op apparaat-naar-cloud-berichten. Het bevat de connectionDeviceGenerationId (volgens apparaatidentiteitseigenschappen) van het apparaat dat het bericht heeft verzonden. |
iothub-connection-auth-method | Een verificatiemethode die is ingesteld door IoT Hub voor apparaat-naar-cloud-berichten. Deze eigenschap bevat informatie over de verificatiemethode die wordt gebruikt om het apparaat te verifiëren dat het bericht verzendt. |
iothub-app-iothub-creation-time-utc | Hiermee kan het apparaat de aanmaaktijd van gebeurtenissen verzenden bij het verzenden van gegevens in een batch. |
iothub-creation-time-utc | Hiermee staat u toe dat het apparaat de aanmaaktijd van gebeurtenissen verzendt bij het verzenden van één bericht tegelijk. |
dt-dataschema | Deze waarde wordt ingesteld door IoT Hub voor apparaat-naar-cloud-berichten. Deze bevat de apparaatmodel-id die is ingesteld in de apparaatverbinding. |
dt-onderwerp | De naam van het onderdeel dat de apparaat-naar-cloud-berichten verzendt. |
Als u Gebeurtenissysteemeigenschappen hebt geselecteerd in de sectie Gegevensbron van de tabel, moet u de eigenschappen opnemen in het tabelschema en de toewijzing.
Voorbeelden van schematoewijzing
Voorbeeld van tabelschematoewijzing
Als uw gegevens drie kolommen bevatten (Timespan
, Metric
en Value
) en de eigenschappen die u opneemt en sequence-number
zijniothub-connection-device-id
, maakt of wijzigt u het tabelschema met behulp van deze opdracht:
.create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, IotHubDeviceId:long, IotHubSequenceNumber:long)
Voorbeeld van CSV-toewijzing
Voer de volgende opdrachten uit om gegevens toe te voegen aan het begin van de record. Ordinale waarden noteren.
.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"}}'
']'
Voorbeeld van JSON-toewijzing
Gegevens worden toegevoegd met behulp van de toewijzing van systeemeigenschappen. Voer deze opdrachten uit:
.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"}}'
']'
Toewijzing van eigenschappen van gebeurtenisgebruiker
Er is geen ondersteuning voor het verrijken van de nettolading van de IoT Hub gebeurtenissen met gebruikerseigenschappen. Overweeg gebruikerseigenschappen in te sluiten in de hoofdtekst van de gebeurtenis upstream.
Azure IoT Hub-verbinding
Notitie
Voor de beste prestaties maakt u alle resources in dezelfde regio als het Azure Data Explorer-cluster.
Een IoT Hub maken
Als u er nog geen hebt, maakt u een IoT-hub. Verbinding met IoT Hub kan worden beheerd via de Azure Portal, programmatisch met C# of Python, of met de Azure Resource Manager-sjabloon.
Notitie
- Het
device-to-cloud partitions
aantal kan niet worden gewijzigd, dus u moet rekening houden met schaal op lange termijn bij het instellen van het aantal partities. - De consumentengroep moet uniek zijn per consument. Maak een consumentengroep die is toegewezen aan Azure Data Explorer-verbinding. Zoek uw resource in de Azure Portal en ga naar
Built-in endpoints
om een nieuwe consumentengroep toe te voegen. - De gegevensverbinding maakt gebruik van IoT Hub
Built-in endpoint
. Als u een andereMessage routing endpoint
configureert, worden berichten niet meer naar deBuilt-in endpoint
verzonden, tenzij er een route naar dat eindpunt wordt gemaakt. Configureer een route naar het eindpunt om ervoor te zorgen dat berichten blijven stromen naar hetevents
ingebouwde eindpunt als er een nieuwe route wordt toegevoegd. Zie IoT Hub Problemen met berichtroutering oplossen voor meer informatie.
Gebeurtenissen verzenden
Bekijk het voorbeeldproject dat een apparaat simuleert en gegevens genereert.