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


Подключаемый модуль 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 Data Explorer. С его помощью вы можете добавить контекст для разрозненных временных рядов, связав их с цифровыми двойниками и отношениями между ними, чтобы получить представление о поведении моделируемых сред.

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

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

Объединение данных из графа двойника в 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 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}.

Использование плагина

После поступления данных 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>) 

Внимание

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

Подключаемый модуль работает путем вызова 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
    

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

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

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