Dataanslutning för IoT Hub

Azure IoT Hub är en hanterad tjänst som finns i molnet och som fungerar som en central meddelandehubb för dubbelriktad kommunikation mellan ditt IoT-program och de enheter som det hanterar. Azure Data Explorer erbjuder kontinuerlig inmatning från kundhanterade IoT Hubs med hjälp av dess Event Hub-kompatibla inbyggda slutpunkt för meddelanden från enhet till moln.

IoT-inmatningspipelinen går igenom flera steg. Först skapar du en IoT Hub och registrerar en enhet till den. Sedan skapar du en måltabell i Azure Data Explorer där data i ett visst format matas in med hjälp av de angivna inmatningsegenskaperna. Iot Hub-anslutningen måste känna till händelsedirigering för att ansluta till Azure Data Explorer-tabellen. Data bäddas in med valda egenskaper enligt mappningen av händelsesystemegenskaper. Den här processen kan hanteras via Azure Portal, programmatiskt med C# eller Python eller med Azure Resource Manager-mallen.

Allmän information om datainmatning i Azure Data Explorer finns i Översikt över Datainmatning i Azure Data Explorer.

Dataformat

Inmatningsegenskaper

Inmatningsegenskaper instruerar inmatningsprocessen var data ska dirigeras och hur de ska bearbetas. Du kan ange inmatningsegenskaper för händelserna med hjälp av EventData.Properties. Du kan ange följande egenskaper:

Egenskap Beskrivning
Databas Måldatabasens namn (skiftlägeskänsligt). Den här egenskapen kan användas om du vill skicka data till en annan databas än den databas som dataanslutningen skapades på (standarddatabasen). Om du vill dirigera data till flera databaser måste du först konfigurera anslutningen som en anslutning med flera databaser. Mer information finns i Händelseroutning.
Tabell Namn (skiftlägeskänsligt) för den befintliga måltabellen. Åsidosätter uppsättningen Table i fönstret Data Connection .
Format Dataformat. Åsidosätter uppsättningen Data format i fönstret Data Connection .
IngestionMappingReference Namnet på den befintliga inmatningsmappningen som ska användas. Åsidosätter uppsättningen Column mapping i fönstret Data Connection .
Kodning Datakodning, standardvärdet är UTF8. Kan vara någon av .NET-kodningar som stöds.

Anteckning

Endast händelser som anges när du har skapat dataanslutningen matas in.

Händelseroutning

När du skapar en dataanslutning till klustret anger du routning för var inmatade data ska skickas. Standardroutningen är till måltabellen som anges i anslutningssträng som är associerad med måldatabasen. Standardroutningen för dina data kallas även statisk routning. Du kan ange en alternativ routning för dina data med hjälp av händelsedataegenskaperna.

Dirigera händelsedata till en alternativ databas

Routning av data till en alternativ databas är inaktiverad som standard. Om du vill skicka data till en annan databas måste du först ange anslutningen som en anslutning med flera databaser. Ett exempel på hur du gör detta i Azure Portal finns i Aktivera routning med flera databaser. Användaren, gruppen, tjänstens huvudnamn eller hanterade identitet som används för att tillåta databasroutning måste minst ha deltagarrollen och skriva behörigheter i klustret.

Ange egenskapen Databasinmatning för att ange en alternativ databas.

Varning

Om du anger en alternativ databas utan att ställa in anslutningen som en dataanslutning med flera databaser misslyckas inmatningen.

Aktivera routning för flera databaser

Innan du kan ange en alternativ måldatabas måste du först tillåta routning av data till flera databaser. Använd följande steg för att tillåta routning av data till alternativa databaser:

  1. I Azure Portal bläddrar du till klustret.

  2. Välj Databaser>Dataanslutningar.

  3. Skapa eller redigera en dataanslutning och i fönstret Dataanslutning , under Inställningar för dataroutning, aktiverar du alternativet Tillåt routning av data till annan databas (dataanslutning med flera databaser).

    Skärmbild av Azure Data Explorer Web U I , som visar alternativet Dataroutningsinställningar inställt på att tillåta.

Dirigera händelsedata till en alternativ tabell

Du kan också ange måltabellegenskaper för varje händelse med hjälp av händelseegenskaper. Anslutningen dirigerar dynamiskt data enligt vad som anges i EventData.Properties, vilket åsidosättar de statiska egenskaperna för den här händelsen. Ange egenskapen Tabellinmatning om du vill ange en alternativ tabell.

Anteckning

Om Mina data innehåller vald routningsinformation måste du ange nödvändig routningsinformation som en del av händelseegenskaperna.

Mappning av händelsesystemegenskaper

Systemegenskaper är en samling som används för att lagra egenskaper som anges av IoT Hub-tjänsten, när händelsen tas emot. Azure-Data Explorer IoT Hub-anslutningen bäddar in de valda egenskaperna i datalandningen i tabellen.

Anteckning

För csv mappning läggs egenskaper till i början av posten i den ordning som anges i tabellen nedan. För json mappning läggs egenskaper till enligt egenskapsnamn i följande tabell.

Systemegenskaper

IoT Hub visar följande systemegenskaper för meddelanden från enhet till moln IoT Hub:

Egenskap Beskrivning
message-id En användaruppsättningsbar identifierare för meddelandet som används för begärandesvarsmönster. Format: En skiftlägeskänslig sträng (upp till 128 tecken lång) med ASCII 7-bitars alfanumeriska tecken + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''}.
iothub-enqueuedtime Datum och tid då meddelandet Enhet till moln togs emot av IoT Hub.
användar-id Ett ID som används för att ange ursprunget för meddelanden. När meddelanden genereras av IoT Hub anges det här värdet till {iot hub name}.
iothub-connection-device-id Ett ID som anges av IoT Hub på meddelanden från enhet till moln. Den innehåller deviceId för enheten som skickade meddelandet.
iothub-connection-module-id Ett ID som anges av IoT Hub på meddelanden från enhet till moln. Den innehåller moduleId för enheten som skickade meddelandet.
iothub-connection-auth-generation-id Ett ID som anges av IoT Hub på meddelanden från enhet till moln. Den innehåller connectionDeviceGenerationId (enligt egenskaper för enhetsidentitet) för enheten som skickade meddelandet.
iothub-connection-auth-method En autentiseringsmetod som anges av IoT Hub på meddelanden från enhet till moln. Den här egenskapen innehåller information om den autentiseringsmetod som används för att autentisera enheten som skickar meddelandet.
iothub-app-iothub-creation-time-utc Gör att enheten kan skicka skapandetiden för händelser när data skickas i en batch.
iothub-creation-time-utc Gör att enheten kan skicka skapandetid för händelser när ett meddelande skickas i taget.
dt-dataschema Det här värdet anges av IoT Hub på meddelanden från enhet till moln. Den innehåller enhetsmodell-ID:t som angetts i enhetsanslutningen.
dt-subject Namnet på komponenten som skickar meddelanden från enheten till molnet.

Om du har valt Egenskaper för händelsesystem i avsnittet Datakälla i tabellen måste du inkludera egenskaperna i tabellschemat och mappningen.

Exempel på schemamappning

Exempel på mappning av tabellscheman

Om dina data innehåller tre kolumner (Timespan, Metricoch ) och Valuede egenskaper som du inkluderar är iothub-connection-device-id och sequence-number, skapar eller ändrar du tabellschemat med hjälp av det här kommandot:

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

Exempel på CSV-mappning

Kör följande kommandon för att lägga till data i början av posten. Observera ordningstalsvärden.

    .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"}}'
    ']'

JSON-mappningsexempel

Data läggs till med hjälp av mappningen av systemegenskaper. Kör dessa kommandon:

    .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"}}'
    ']'

Mappning av händelseanvändares egenskaper

Det finns inget stöd för att utöka nyttolasten för IoT Hub händelser med användaregenskaper. Överväg att bädda in användaregenskaper i händelsetexten överordnad.

IoT Hub anslutning

Anteckning

För bästa prestanda skapar du alla resurser i samma region som Azure Data Explorer-klustret.

Skapa en IoT Hub

Om du inte redan har en, skapa en Iot Hub. Anslutning till IoT Hub kan hanteras via Azure Portal, programmatiskt med C# eller Python eller med Azure Resource Manager-mallen.

Anteckning

  • Antalet device-to-cloud partitions kan inte ändras, så du bör överväga långsiktig skalning när du anger partitionsantal.
  • Konsumentgruppen måste vara unik per konsument. Skapa en konsumentgrupp som är dedikerad till Azure Data Explorer anslutning. Hitta resursen i Azure Portal och gå till för att lägga till Built-in endpoints en ny konsumentgrupp.
  • Dataanslutningen använder IoT Hub Built-in endpoint. Om du konfigurerar andra Message routing endpointslutar meddelanden att flöda till Built-in endpoint om inte en väg skapas till slutpunkten. För att säkerställa att meddelanden fortsätter att flöda till den inbyggda slutpunkten om en ny väg läggs till konfigurerar du en väg till events slutpunkten. Mer information finns i IoT Hub Felsökning av meddelanderoutning.

Skicka händelser

Se exempelprojektet som simulerar en enhet och genererar data.

Nästa steg