Udostępnij za pośrednictwem


Połączenie danych usługi IoT Hub

Azure IoT Hub to zarządzana usługa hostowana w chmurze, która działa jako centralne centrum komunikatów na potrzeby dwukierunkowej komunikacji między aplikacją IoT a zarządzanymi urządzeniami. Usługa Azure Data Explorer oferuje ciągłe pozyskiwanie z zarządzanych przez klienta usług IoT Hub przy użyciu swojego centrum zdarzeń zgodnego z wbudowanym punktem końcowym komunikatów z urządzenia do chmury.

Potok pozyskiwania IoT przechodzi kilka kroków. Najpierw należy utworzyć centrum IoT Hub i zarejestrować w nim urządzenie. Następnie utworzysz tabelę docelową w usłudze Azure Data Explorer, w której dane w określonym formacie zostaną pozyskane przy użyciu podanych właściwości pozyskiwania. Połączenie usługi Iot Hub musi znać routing zdarzeń w celu nawiązania połączenia z tabelą usługi Azure Data Explorer. Dane są osadzone z wybranymi właściwościami zgodnie z mapowaniem właściwości systemu zdarzeń. Ten proces można zarządzać za pośrednictwem witryny Azure Portal, programowo za pomocą języka C# lub Python albo szablonu usługi Azure Resource Manager.

Aby uzyskać ogólne informacje na temat pozyskiwania danych w usłudze Azure Data Explorer, zobacz Omówienie pozyskiwania danych w usłudze Azure Data Explorer.

Format danych

Właściwości pozyskiwania

Właściwości pozyskiwania intruują proces pozyskiwania, gdzie mają być kierowane dane i jak je przetwarzać. Właściwości pozyskiwania zdarzeń można określić przy użyciu właściwości EventData.Properties. Można ustawić następujące właściwości:

Właściwości opis
baza danych Nazwa (uwzględniana wielkość liter) docelowej bazy danych. Tej właściwości można użyć, jeśli chcesz wysłać dane do innej bazy danych niż baza danych, w której utworzono połączenie danych (domyślna baza danych). Aby kierować dane do wielu baz danych, należy najpierw skonfigurować połączenie jako połączenie z wieloma bazami danych. Aby uzyskać więcej informacji, zobacz Routing zdarzeń.
Table Nazwa (uwzględniana wielkość liter) istniejącej tabeli docelowej. Table Zastępuje zestaw w okienkuData Connection.
Formatuj Format danych. Data format Zastępuje zestaw w okienkuData Connection.
IngestionMappingReference Nazwa istniejącego mapowania pozyskiwania do użycia. Column mapping Zastępuje zestaw w okienkuData Connection.
Kodowanie Kodowanie danych, wartość domyślna to UTF8. Może być dowolnym z obsługiwanych kodowań platformy .NET.

Uwaga

Tylko zdarzenia umieszczone w kolejce po utworzeniu połączenia danych są pozyskiwane.

Routing zdarzeń

Podczas tworzenia połączenia danych z klastrem należy określić routing dla miejsca wysyłania pozyskanych danych. Domyślnym routingiem jest tabela docelowa określona w parametry połączenia, która jest skojarzona z docelową bazą danych. Domyślny routing danych jest również określany jako routing statyczny. Możesz określić alternatywny routing dla danych przy użyciu właściwości danych zdarzenia.

Kierowanie danych zdarzeń do alternatywnej bazy danych

Routing danych do alternatywnej bazy danych jest domyślnie wyłączony. Aby wysłać dane do innej bazy danych, należy najpierw ustawić połączenie jako połączenie z wieloma bazami danych. Aby zapoznać się z przykładem tego, jak to zrobić w witrynie Azure Portal, zobacz Włączanie routingu z wieloma bazami danych. Użytkownik, grupa, jednostka usługi lub tożsamość zarządzana używana do zezwalania na routing bazy danych musi mieć co najmniej rolę współautora i uprawnienia do zapisu w klastrze.

Aby określić alternatywną bazę danych, ustaw właściwość Pozyskiwanie bazy danych.

Ostrzeżenie

Określenie alternatywnej bazy danych bez ustawienia połączenia jako połączenia danych z wieloma bazami danych spowoduje niepowodzenie pozyskiwania.

Włączanie routingu z wieloma bazami danych

Aby można było ustawić alternatywną docelową bazę danych, należy najpierw zezwolić na kierowanie danych do wielu baz danych. Wykonaj następujące kroki, aby zezwolić na kierowanie danych do alternatywnych baz danych:

  1. W witrynie Azure Portal przejdź do klastra.

  2. Wybierz pozycję Bazy danych>Połączenia danych.

  3. Utwórz lub edytuj połączenie danych, a następnie w okienku Połączenie danych w obszarze Ustawienia routingu danych włącz opcję Zezwalaj na routing danych do innej bazy danych (połączenie danych z wieloma bazami danych).

    Zrzut ekranu przedstawiający internetową interfejs użytkownika usługi Azure Data Explorer z wyświetloną opcją Ustawienia routingu danych ustawioną na wartość zezwalaną.

Kierowanie danych zdarzeń do tabeli alternatywnej

Można również określić właściwości tabeli docelowej dla każdego zdarzenia przy użyciu właściwości zdarzenia. Połączenie będzie dynamicznie kierować dane określone w eventData.Properties, przesłaniając właściwości statyczne dla tego zdarzenia. Aby określić tabelę alternatywną, ustaw właściwość pozyskiwania tabeli.

Uwaga

Jeśli moje dane zawierają wybrane informacje o routingu, musisz podać niezbędne informacje o routingu w ramach właściwości zdarzeń.

Mapowanie właściwości systemu zdarzeń

Właściwości systemu są kolekcją służącą do przechowywania właściwości ustawionych przez usługę IoT Hub po odebraniu zdarzenia. Połączenie usługi IoT Hub w usłudze Azure Data Explorer osadzi wybrane właściwości w danych docelowych w tabeli.

Uwaga

W przypadku csv mapowania właściwości są dodawane na początku rekordu w kolejności wymienionej w poniższej tabeli. W przypadku json mapowania właściwości są dodawane zgodnie z nazwami właściwości w poniższej tabeli.

Właściwości systemu

Usługa IoT Hub uwidacznia następujące właściwości systemowe dla komunikatów usługi IoT Hub z urządzenia do chmury:

Właściwości opis
message-id Identyfikator tabeli zdefiniowanej przez użytkownika dla komunikatu używanego dla wzorców żądań i odpowiedzi. Format: Ciąg uwzględniający wielkość liter (do 128 znaków długości) znaków alfanumerycznych ASCII 7-bitowych + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''}.
iothub-enqueuedtime Data i godzina odebrania komunikatu urządzenie-chmura przez usługę IoT Hub.
identyfikator użytkownika Identyfikator używany do określania źródła komunikatów. Gdy komunikaty są generowane przez usługę IoT Hub, ta wartość jest ustawiona na {iot hub name}wartość .
iothub-connection-device-id Identyfikator ustawiony przez usługę IoT Hub w komunikatach urządzenie-chmura. Zawiera identyfikator deviceId urządzenia, które wysłało komunikat.
iothub-connection-module-id Identyfikator ustawiony przez usługę IoT Hub w komunikatach urządzenie-chmura. Zawiera on identyfikator moduleId urządzenia, które wysłało komunikat.
iothub-connection-auth-generation-id Identyfikator ustawiony przez usługę IoT Hub w komunikatach urządzenie-chmura. Zawiera on parametr connectionDeviceGenerationId (zgodnie z właściwościami tożsamości urządzenia) urządzenia, które wysłało komunikat.
iothub-connection-auth-method Metoda uwierzytelniania ustawiona przez usługę IoT Hub w komunikatach urządzenie-chmura. Ta właściwość zawiera informacje o metodzie uwierzytelniania używanej do uwierzytelniania urządzenia wysyłającego komunikat.
iothub-app-iothub-creation-time-utc Umożliwia urządzeniu wysyłanie czasu tworzenia zdarzeń podczas wysyłania danych w partii.
iothub-creation-time-utc Umożliwia urządzeniu wysyłanie czasu tworzenia zdarzeń podczas wysyłania jednej wiadomości naraz.
dt-dataschema Ta wartość jest ustawiana przez centrum IoT w komunikatach urządzenie-chmura. Zawiera identyfikator modelu urządzenia ustawiony w połączeniu urządzenia.
dt-subject Nazwa składnika wysyłającego komunikaty z urządzenia do chmury.

W przypadku wybrania właściwości systemu zdarzeń w sekcji Źródło danych tabeli należy uwzględnić właściwości w schemacie tabeli i mapowaniu.

Przykłady mapowania schematu

Przykład mapowania schematu tabeli

Jeśli dane zawierają trzy kolumny (Timespan, Metric, i Value) oraz właściwości, które zawierasz iothub-connection-device-id , i sequence-number, utwórz lub zmień schemat tabeli przy użyciu tego polecenia:

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

Przykład mapowania woluminów CSV

Uruchom następujące polecenia, aby dodać dane na początku rekordu. Zanotuj wartości porządkowe.

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

Przykład mapowania JSON

Dane są dodawane przy użyciu mapowania właściwości systemowych. Uruchom te polecenia:

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

Mapowanie właściwości użytkownika zdarzenia

Brak obsługi wzbogacania ładunku zdarzeń usługi IoT Hub za pomocą właściwości użytkownika. Rozważ osadzanie właściwości użytkownika w treści zdarzenia nadrzędnej.

Połączenie usługi IoT Hub

Uwaga

Aby uzyskać najlepszą wydajność, utwórz wszystkie zasoby w tym samym regionie co klaster usługi Azure Data Explorer.

Tworzenie centrum IoT Hub

Jeśli jeszcze go nie masz, utwórz centrum IoT Hub. Połączenie z usługą IoT Hub można zarządzać za pośrednictwem witryny Azure Portal, programowo za pomocą języka C# lub Python albo szablonu usługi Azure Resource Manager.

Uwaga

  • Liczba device-to-cloud partitions nie jest zmienialna, dlatego podczas ustawiania liczby partycji należy rozważyć długoterminową skalę.
  • Grupa konsumentów musi być unikatowa dla każdego konsumenta. Utwórz grupę odbiorców dedykowaną połączeniu usługi Azure Data Explorer. Znajdź zasób w witrynie Azure Portal i przejdź do strony , aby Built-in endpoints dodać nową grupę odbiorców.
  • Połączenie danych używa usługi IoT Hub Built-in endpoint. W przypadku skonfigurowania innych Message routing endpointkomunikatów komunikaty przestaną przepływać do Built-in endpoint tego punktu końcowego, chyba że zostanie utworzona trasa. Aby zapewnić, że komunikaty będą nadal przepływać do wbudowanego punktu końcowego w przypadku dodania nowej trasy, skonfiguruj trasę do punktu końcowego events . Aby uzyskać więcej informacji, zobacz IoT Hub Troubleshooting Message Routing (Rozwiązywanie problemów z routingiem komunikatów w usłudze IoT Hub).

Wysyłanie zdarzeń

Zobacz przykładowy projekt, który symuluje urządzenie i generuje dane.

Następny krok