Подключение к данным Центра Интернета вещей
Центр Интернета вещей Azure — это управляемая служба, размещенная в облаке, которая действует как центральный узел сообщений для двунаправленной связи между вашим приложением Интернета вещей и устройствами, которыми оно управляет. Azure Data Explorer предлагает непрерывную приемку из управляемых клиентом Центр Интернета вещей, используя совместимый с концентратором событий встроенную конечную точку сообщений устройства в облако.
Конвейер приема данных Центра Интернета вещей проходит несколько этапов. Сначала вы создадите Центр Интернета вещей и регистрируете в нем устройство. Затем вы создадите целевую таблицу в Azure Data Explorer, в которой данные в определенном формате будут приняты с использованием заданных свойств приема. Подключению центра Интернета вещей необходимо сообщить о событиях маршрутизации для подключения к таблице Azure Data Explorer. Данные внедряются с выбранными свойствами в соответствии с сопоставлением свойств системы событий. Этим процессом можно управлять с помощью портала Azure, программно с помощью C# или Pythonили с помощью шаблона Azure Resource Manager.
Общие сведения о приеме данных в обозревателе данных Azure см. в разделе Обзор приема данных Azure Data Explorer.
Формат данных
- Данные считываются из конечной точки Центра событий в виде объектов EventData.
- См. раздел Поддерживаемые форматы.
Примечание.
Центр Интернета вещей не поддерживает формат .raw.
- См. раздел Поддерживаемые сжатия.
Свойства приема
Свойства приема указывают процессу приема, куда направлять данные и как их обрабатывать. Вы можете указать свойства приема событий с помощью EventData.Properties. Можно задать следующие свойства:
Свойство | Description |
---|---|
База данных | Имя (с учетом регистра) целевой базы данных. Это свойство можно использовать, если требуется отправить данные в базу данных, отличную от базы данных, для которой было создано подключение к данным (база данных по умолчанию). Чтобы направить данные в несколько баз данных, необходимо сначала настроить подключение в виде подключения к нескольким базам данных. Дополнительные сведения см. в разделе Маршрутизация событий. |
Таблица | Имя (с учетом регистра) существующей целевой таблицы. Переопределяет набор Table на панели Data Connection . |
Формат | Формат данных. Переопределяет набор Data format на панели Data Connection . |
IngestionMappingReference | Имя существующего сопоставления приема, которое будет использоваться. Переопределяет набор Column mapping на панели Data Connection . |
Кодировка | Кодировка данных, по умолчанию — UTF8. Может быть любой из поддерживаемых кодировок .NET. |
Примечание.
Принимаются только события, поставленные в очередь после создания подключения к данным.
Маршрутизация событий
При создании подключения к данным в кластере вы задаете маршрутизацию для отправки принимаемых данных. По умолчанию используется маршрутизация к целевой таблице, указанной в строке подключения, которая связана с целевой базой данных. Маршрутизация по умолчанию для данных также называется статической маршрутизацией. Вы также можете указать альтернативную маршрутизацию для данных с помощью свойств данных событий.
Маршрутизация данных событий в альтернативную базу данных
По умолчанию маршрутизация данных в альтернативную базу данных отключена. Чтобы отправить данные в другую базу данных, необходимо сначала настроить подключение в виде подключения к нескольким базам данных. Пример этого в портал Azure см. в разделе "Включение маршрутизации с несколькими базами данных". Пользователь, группа, субъект-служба или управляемое удостоверение, используемые для поддержки маршрутизации базы данных, должны иметь по крайней мере роль участника и разрешения на запись в кластер.
Чтобы указать альтернативную базу данных, задайте свойство приема базы данных.
Предупреждение
Указание альтернативной базы данных без настройки подключения в виде подключения к данным для нескольких баз данных приведет к сбою приема.
Включение маршрутизации с несколькими базами данных
Прежде чем задавать альтернативную целевую базу данных, необходимо разрешить маршрутизацию данных в несколько баз данных. Чтобы разрешить маршрутизацию данных в альтернативные базы данных, сделайте следующее:
На портале Azure перейдите к своему кластеру.
Выберите элементы Базы данных>Подключения к данным.
Создайте или измените подключение к данным и в области Подключение к данным в разделе Параметры маршрутизации данных включите параметр, разрешающий маршрутизацию данных в другую базу данных (подключение к данным нескольких баз данных).
Маршрутизация данных событий в альтернативную таблицу
Вы также можете указать свойства целевой таблицы для каждого события, используя свойства события. Соединение будет динамически маршрутизировать данные, как указано в EventData.Properties, переопределяя статические свойства для этого события. Чтобы указать альтернативную таблицу, задайте свойство приема таблицы.
Примечание.
Если выбран параметр Мои данные включают информацию о маршрутизации, необходимо указать необходимую информацию о маршрутизации как часть свойств событий.
Сопоставление свойств системы событий
Системные свойства — это коллекция, используемая для хранения свойств, установленных службой Центра Интернета вещей в момент получения события. Соединение Azure Data Explorer IoT Hub внедрит выбранные свойства в посадку данных в вашей таблице.
Примечание.
Для отображения csv
свойства добавляются в начало записи в порядке, указанном в таблице ниже. Для сопоставления json
свойства добавляются в соответствии с именами свойств в следующей таблице.
Свойства системы
Центр Интернета вещей предоставляет следующие системные свойства для сообщений Центр Интернета вещей устройства в облако:
Свойство | Description |
---|---|
message-id | Задаваемый пользователем идентификатор сообщения, используемый для шаблонов типа "запрос-ответ". Формат: строка с учетом регистра (длиной до 128 знаков), состоящая из букв и цифр в 7-битовом формате ASCII + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''} . |
iothub-enqueuedtime | Дата и время получения сообщения, отправленного с устройства в облако, Центром Интернета вещей. |
user-id | Идентификатор, используемый для указания источника сообщений. Если сообщения создаются Центр Интернета вещей, это значение имеет {iot hub name} значение . |
iothub-connection-device-id | Центр Интернета вещей устанавливает этот идентификатор в сообщениях, отправляемых с устройства в облако. Содержит идентификатор deviceId устройства, отправившего сообщение. |
iothub-connection-module-id | Центр Интернета вещей устанавливает этот идентификатор в сообщениях, отправляемых с устройства в облако. Содержит идентификатор moduleId устройства, с которого было отправлено сообщение. |
iothub-connection-auth-generation-id | Центр Интернета вещей устанавливает этот идентификатор в сообщениях, отправляемых с устройства в облако. Содержит идентификатор generationId устройства, с которого было отправлено сообщение (согласно разделу Свойства удостоверений устройств). |
iothub-connection-auth-method | Центр Интернета вещей устанавливает этот метод проверки подлинности в сообщениях, отправляемых с устройства в облако. Это свойство содержит сведения о методе проверки подлинности, используемом для аутентификации устройства, отправляющего сообщение. |
iothub-app-iothub-creation-time-utc | Разрешает устройству отправлять время создания события при отправке данных в пакет. |
iothub-creation-time-utc | Разрешает устройству отправлять время создания события при отправке одного сообщения за раз. |
dt-dataschema | Центр Интернета вещей устанавливает это значение в сообщениях, отправляемых с устройства в облако. Оно содержит идентификатор модели устройства, указанный в подключении устройства. |
dt-subject | Имя компонента, который отправляет сообщения с устройства в облако. |
Если вы выбрали Свойства системы событий в разделе Источник данных таблицы, вы должны включить свойства в схему таблицы и сопоставление.
Примеры схемы сопоставления
Пример схемы сопоставления таблицы
Если данные содержат три столбца (Timespan
, Metric
и Value
) и включены свойства iothub-connection-device-id
и sequence-number
, создайте или измените схему таблицы с помощью следующей команды:
.create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, IotHubDeviceId:long, IotHubSequenceNumber:long)
Пример сопоставления CSV-файла
Выполните следующие команды, чтобы добавить данные в начало записи. Запишите порядковые номера.
.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
Данные добавляются с помощью сопоставления свойств системы. Выполните следующие команды.
.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"}}'
']'
Сопоставление пользовательских свойств событий
Обогащение полезных данных событий Центра Интернета вещей свойствами пользователя не поддерживается. Рекомендуем внедрить свойства пользователя в вышестоящий текст события.
Подключение к Центру Интернета вещей
Примечание.
Для обеспечения максимальной производительности создавайте все ресурсы в том же регионе, что и кластер Azure Data Explorer.
Создание Центра Интернета вещей
Создайте центр Интернета вещей, если у вас его еще нет. Подключение к центру Интернета вещей может осуществляться через портал Azure, программно с помощью C# или Python или с помощью шаблона Azure Resource Manager.
Примечание.
- Счетчик
device-to-cloud partitions
нельзя изменить, поэтому при настройке количества разделов следует учитывать долгосрочное масштабирование. - Группа потребителей должна быть уникальной для каждого потребителя. Создайте группу потребителей, предназначенную для подключения к Azure Data Explorer. Найдите свой ресурс на портале Azure и перейдите в
Built-in endpoints
, чтобы добавить новую группу потребителей. - Соединение данных использует Центр Интернета вещей
Built-in endpoint
. Если вы настроили другие параметрыMessage routing endpoint
, сообщения перестают передаваться вBuilt-in endpoint
, пока для этой конечной точки не будет создан маршрут. Чтобы обеспечить передачу сообщений во встроенную конечную точку при добавлении нового маршрута, настройте маршрут к конечной точкеevents
. Дополнительные сведения см. в статье Устранение неполадок с маршрутизацией сообщений Центра Интернета вещей.
Отправка событий
См. пример проекта, который имитирует устройство и создает данные.