Поделиться через


Подключаемый модуль Azure Digital Twins для Azure Data Explorer

В этой статье описывается подключаемый модуль запросов Azure Digital Twin для Azure Data Explorer, использование данных Интернета вещей Azure с Azure Digital Twins, сопоставление данных в Azure Data Explorer и Azure Digital Twins и многое другое.

Подключаемый модуль Azure Digital Twins для Azure Data Explorer позволяет выполнять запросы Azure Data Explorer, которые обращаются к данным и объединяют их в базах данных графов Azure Digital Twins и временных рядов Azure Data Explorer. С его помощью вы можете добавить контекст для разрозненных временных рядов, связав их с цифровыми двойниками и отношениями между ними, чтобы получить представление о поведении моделируемых сред.

Например, с помощью этого подключаемого модуля можно написать запрос Kusto, который:

  1. Выбирает цифровые двойники, интересующие вас, с помощью подключаемого модуля запросов Azure Digital Twins.
  2. Присоединяет эти двойники к соответствующим временным рядам в Azure Data Explorer, а затем
  3. Выполняет расширенную аналитику временных рядов для этих двойников.

Объединение данных из графа двойника в Azure Digital Twins с данными временных рядов в Azure Data Explorer помогает понять особенности поведение различных частей вашего решения.

Использование подключаемого модуля

Вы можете вызвать подключаемый модуль в Kusto запросе с помощью следующей команды. Существует два заполнителя, <Azure-Digital-Twins-endpoint> и <Azure-Digital-Twins-query> — строки, представляющие соответственно конечную точку экземпляра Azure Digital Twins и запрос Azure Digital Twins.

evaluate azure_digital_twins_query_request(<Azure-Digital-Twins-endpoint>, <Azure-Digital-Twins-query>) 

Подключаемый модуль работает путем вызова API запросов Azure Digital Twins, а структура языка запросов аналогична использованию API с двумя исключениями:

  • Подстановочный * знак в предложении SELECT не поддерживается. Вместо этого запросы цифрового двойника Azure, выполняемые с помощью подключаемого модуля, должны использовать псевдонимы в предложении SELECT.

    Например, рассмотрим следующий запрос Azure Digital Twins, который выполняется с помощью API:

    SELECT * FROM DIGITALTWINS
    

    Чтобы выполнить этот запрос при использовании подключаемого модуля, его необходимо перезаписать следующим образом:

    SELECT T FROM DIGITALTWINS T
    
  • Имена столбцов, возвращаемые подключаемым модулем, не должны начинаться с $. Использование псевдонимов в предложении SELECT также позволит избежать этого сценария.

    Например, рассмотрим следующий запрос Azure Digital Twins, который выполняется с помощью API:

    SELECT T.$dtId, T.Temperature FROM DIGITALTWINS T
    

    Чтобы выполнить этот запрос при использовании подключаемого модуля, его необходимо перезаписать следующим образом:

    SELECT T.$dtId as tid, T.Temperature FROM DIGITALTWINS T
    

Внимание

Пользователю подключаемого модуля необходимо предоставить роль средства чтения данных Azure Digital Twins или роль владельца данных Azure Digital Twins, так как маркер Microsoft Entra пользователя используется для проверки подлинности. Сведения о назначении этой роли см. в статье Безопасность для решений Azure Digital Twins.

Дополнительные сведения об использовании подключаемого модуля см. в документации по Kusto для подключаемого модуля azure_digital_twins_query_request.

Примеры запросов и пошаговое руководство с демонстрационными данными см. в соответствующем разделе подключаемого модуля запросов к двойникам Azure Digital Twins для Azure Data Explorer на GitHub.

Прием данных Azure Digital Twins в Azure Data Explorer

Прежде чем запрашивать подключаемый модуль, необходимо принять данные Azure Digital Twins в Azure Data Explorer. Это можно сделать двумя основными способами: с помощью функции журнала данных или путем прямого приема. В следующих разделах эти варианты описываются подробнее.

Прием с помощью журнала данных

Самый простой способ приема данных Интернета вещей из Azure Digital Twins в Azure Data Explorer — использовать функцию журнала данных. Эта функция позволяет настроить подключение между экземпляром Azure Digital Twins и кластером Azure Data Explorer, а также обновления графов (включая обновления свойств двойников, события жизненного цикла двойников и события жизненного цикла связи) автоматически инициализированы в кластер. Это хороший выбор, если вы используете данные телеметрии устройства, чтобы обеспечить жизнь цифровых двойников. Дополнительные сведения об этой функции см. в разделе "Журнал данных" (с помощью Azure Data Explorer).

Прямое прием

Вы также можете принять данные Интернета вещей непосредственно в кластер Azure Data Explorer из Центр Интернета вещей или из других источников. Затем с помощью графа Azure Digital Twins можно контекстуализировать данные временных рядов с применением совместных запросов Azure Digital Twins/Azure Data Explorer. Этот вариант подходит для рабочих нагрузок прямого приема. Однако вы не сможете использовать архитектуру на основе событий Azure Digital Twins для обновления других двойников, активации подчиненных служб или отправки уведомлений при изменении состояния двойников. Дополнительные сведения об этом процессе см. в остальной части этого раздела.

Сопоставление данных в Azure Data Explorer и Azure Digital Twins

При приеме данных временных рядов непосредственно в Azure Data Explorer может потребоваться преобразовать эти необработанные данные временных рядов в схему, подходящую для совместных запросов Azure Digital Twins/Azure Data Explorer.

Политика обновления в Azure Data Explorer позволяет автоматически преобразовывать и добавлять данные в целевую таблицу при вставке новых данных в исходную таблицу.

Если идентификатор датчика в данных телеметрии устройства отличается от соответствующего идентификатора двойника в Azure Digital Twins, можно использовать политику обновления для обогащения необработанных данных временных рядов с идентификатором двойника и сохранения его в целевой таблице. По этому идентификатору двойника целевую таблицу затем можно соединять с цифровыми двойниками, выбираемыми подключаемым Azure Digital Twins.

Например, предположим, вы создали приведенную ниже таблицу для хранения необработанных данных временных рядов, передаваемых в экземпляр Azure Data Explorer.

.create-merge table rawData (Timestamp:datetime, someId:string, Value:string, ValueType:string)  

Вы можете создать таблицу сопоставления, чтобы связать идентификаторы временных рядов с идентификаторами двойников и другими необязательными полями.

.create-merge table mappingTable (someId:string, twinId:string, otherMetadata:string) 

Затем создайте целевую таблицу для хранения обогащенных данных временных рядов.

.create-merge table timeseriesSilver (twinId:string, Timestamp:datetime, someId:string, otherMetadata:string, ValueNumeric:real, ValueString:string)  

Затем создайте функцию Update_rawData для обогащения необработанных данных путем их соединения с таблицей сопоставления. Это приведет к добавлению идентификатора двойника в итоговую целевую таблицу.

.create-or-alter function with (folder = "Update", skipvalidation = "true") Update_rawData() { 
rawData 
| join kind=leftouter mappingTable on someId 
| project 
    Timestamp, ValueNumeric = toreal(Value), ValueString = Value, ... 
} 

Наконец, создайте политику обновления для вызова этой функции и обновления целевой таблицы.

.alter table timeseriesSilver policy update 
@'[{"IsEnabled": true, "Source": "rawData", "Query": "Update_rawData()", "IsTransactional": false, "PropagateIngestionProperties": false}]' 

После создания целевой таблицы можно с помощью подключаемого модуля Azure Digital Twins выбирать нужные двойники, а затем соединять их с данными временных рядов в целевой таблице.

Пример схемы

Ниже приведен пример схемы, которая может использоваться для представления общих данных. В этом примере показана схема журнала данных Azure Data Explorer для обновлений свойств двойника.

TimeStamp SourceTimeStamp TwinId ModelId Name Value RelationshipTarget RelationshipID
2021-02-01 17:24 2021-02-01 17:11 ConfRoomTempSensor dtmi:com:example:TemperatureSensor;1 Температура 301.0

Свойства цифрового двойника хранятся в виде пар "ключ-значение" (name, value). name и value хранятся в виде динамических типов данных.

Эта схема также поддерживает хранение свойств связей в полях relationshipTarget и relationshipID. Схема "ключ-значение" позволяет избежать необходимости создавать столбец для каждого свойства двойника.

Представление свойств с помощью нескольких полей

Свойство в схеме можно хранить в нескольких полях. Такие свойства представляются объектом JSON, сохраняемым в схеме как значение value.

Например, если необходимо представить свойство с тремя полями для тангажа, крена и рыскания, объект значения будет выглядеть следующим образом: {"roll": 20, "pitch": 15, "yaw": 45}.

Следующие шаги