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
- Dane są odczytywane z punktu końcowego centrum zdarzeń w postaci obiektów EventData .
- Zobacz obsługiwane formaty.
Uwaga
Usługa IoT Hub nie obsługuje formatu .raw.
- Zobacz obsługiwane kompresje.
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:
W witrynie Azure Portal przejdź do klastra.
Wybierz pozycję Bazy danych>Połączenia danych.
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).
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 innychMessage routing endpoint
komunikatów komunikaty przestaną przepływać doBuilt-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ńcowegoevents
. 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.