Complemento de consulta de Azure Digital Twins para Azure Data Explorer
En este artículo se explica el complemento de consulta de Azure Digital Twins para Azure Data Explorer, cómo usar datos de IoT de Azure Data Explorer con Azure Digital Twins y cómo asignar datos entre Azure Data Explorer y Azure Digital Twins, entre otras cosas.
El complemento de Azure Digital Twins para Azure Data Explorer permite ejecutar consultas de Azure Data Explorer que acceden a datos en grafos de Azure Digital Twins y bases de datos de series temporales de Azure Data Explorer y los combinan. Use el complemento para contextualizar datos de series temporales dispares mediante el razonamiento entre los gemelos digitales y sus relaciones para obtener información sobre el comportamiento de los entornos modelados.
Por ejemplo, con este complemento, puede escribir una consulta de Kusto que:
- seleccione gemelos digitales de interés mediante el complemento de consulta de Azure Digital Twins,
- combine esos gemelos con la serie temporal correspondiente de Azure Data Explorer y, luego,
- realice análisis avanzados de series temporales en esos gemelos.
La combinación de los datos de un grafo de un gemelo de Azure Digital Twins con datos de series temporales de Azure Data Explorer puede ayudarle a comprender el comportamiento operativo de varios componentes de la solución.
Uso del complemento
Puede invocar el complemento en una consulta de Kusto con el siguiente comando. Hay dos marcadores de posición, <Azure-Digital-Twins-endpoint>
y <Azure-Digital-Twins-query>
, que son cadenas que representan el punto de conexión de la instancia de Azure Digital Twins y la consulta de Azure Digital Twins, respectivamente.
evaluate azure_digital_twins_query_request(<Azure-Digital-Twins-endpoint>, <Azure-Digital-Twins-query>)
El complemento funciona mediante una llamada a la API de consulta de Azure Digital Twins y la estructura de lenguaje de la consulta es la misma que cuando se usa la API, con dos excepciones:
No se admite el carácter comodín
*
en la cláusulaSELECT
. En su lugar, las consultas de Azure Digital Twins que se ejecutan mediante el complemento deben usar alias en la cláusulaSELECT
.Por ejemplo, considere la siguiente consulta de Azure Digital Twins que se ejecuta mediante la API:
SELECT * FROM DIGITALTWINS
Para ejecutar esa consulta cuando se usa el complemento, debe reescribirse de esta forma:
SELECT T FROM DIGITALTWINS T
Los nombres de columna devueltos por el complemento no pueden empezar por
$
. El uso de alias en la cláusulaSELECT
también ayudará a evitar este escenario.Por ejemplo, considere la siguiente consulta de Azure Digital Twins que se ejecuta mediante la API:
SELECT T.$dtId, T.Temperature FROM DIGITALTWINS T
Para ejecutar esa consulta cuando se usa el complemento, debe reescribirse de esta forma:
SELECT T.$dtId as tid, T.Temperature FROM DIGITALTWINS T
Importante
Al usuario del complemento se le debe conceder el rol Lector de datos de Azure Digital Twins o Propietario de datos de Azure Digital Twins, ya que el token de Microsoft Entra del usuario se usa para autenticarse. Encontrará información sobre cómo asignar este rol en Seguridad para las soluciones de Azure Digital Twins.
Para más información sobre el uso del complemento, consulte la documentación de Kusto para el complemento azure_digital_twins_query_request.
Para ver consultas de ejemplo y completar un tutorial con datos de ejemplo, consulte Complemento de consulta de Azure Digital Twins para Azure Data Explorer: Consultas y tutorial de ejemplo en GitHub.
Ingesta de datos de Azure Digital Twins en Azure Data Explorer
Antes de realizar consultas con el complemento, deberá ingerir los datos de Azure Digital Twins en Azure Data Explorer. Existen dos maneras principales de hacerlo: a través de la característica del historial de datos o a través de la ingesta directa. En las secciones siguientes, se describen estas opciones con más detalle.
Ingesta con historial de datos
La manera más sencilla de ingerir datos de IoT de Azure Digital Twins a Azure Data Explorer consiste en usar la característica historial de datos. Esta característica le permite establecer una conexión entre su instancia de Azure Digital Twins y un clúster de Azure Data Explorer, y las actualizaciones de los gráficos (incluidas las actualizaciones de las propiedades de los gemelos, los eventos del ciclo de vida de los gemelos y los eventos del ciclo de vida de las relaciones) se registran como historial automáticamente en el clúster. Esta es una buena opción si usa datos de telemetría de dispositivo para dar vida a los gemelos digitales. Para obtener más información sobre esta característica, consulte Historial de datos (con Azure Data Explorer).
Ingesta directa
También puede optar por ingerir los datos de IoT directamente en el clúster de Azure Data Explorer desde IoT Hub o desde otros orígenes. Posteriormente, se usará el grafo de Azure Digital Twins para contextualizar los datos de la serie temporal mediante consultas conjuntas de Azure Digital Twins y Azure Data Explorer. Esta opción es una buena elección para cargas de trabajo de ingesta directa; sin embargo, no podrá sacar provecho de la arquitectura basada en eventos de Azure Digital Twins para actualizar otros gemelos, desencadenar servicios de bajada o emitir notificaciones cuando los gemelos cambien de estado. Para obtener más información sobre este proceso, continúe con el resto de esta sección.
Asignación de datos entre Azure Data Explorer y Azure Digital Twins
Si va a ingerir datos de serie temporal directamente en Azure Data Explorer, es posible que tenga que convertir estos datos de serie temporal sin procesar en un esquema adecuado para consultas conjuntas de Azure Digital Twins y Azure Data Explorer.
Una directiva de actualización en Azure Data Explorer permite transformar y anexar datos automáticamente a una tabla de destino cada vez que se inserten nuevos datos en una tabla de origen.
Si el id. del sensor de los datos de telemetría de dispositivo difiere del id. de gemelo correspondiente de Azure Digital Twins, puede usar una directiva de actualización para enriquecer los datos de serie temporal sin procesar con el id. de gemelo y conservarlo en una tabla de destino. Con el identificador del gemelo, la tabla de destino se puede combinar con los gemelos digitales seleccionados por el complemento de Azure Digital Twins.
Por ejemplo, supongamos que ha creado la tabla siguiente para que contenga los datos de serie temporal sin procesar que se transfieren a la instancia de Azure Data Explorer.
.create-merge table rawData (Timestamp:datetime, someId:string, Value:string, ValueType:string)
Puede crear una tabla de asignación para relacionar los identificadores de series temporales con los identificadores de los gemelos y otros campos opcionales.
.create-merge table mappingTable (someId:string, twinId:string, otherMetadata:string)
A continuación, cree una tabla de destino que contenga los datos de series temporales enriquecidos.
.create-merge table timeseriesSilver (twinId:string, Timestamp:datetime, someId:string, otherMetadata:string, ValueNumeric:real, ValueString:string)
A continuación, cree una función Update_rawData
para enriquecer los datos sin procesar combinándolos con la tabla de asignación. Esto agregará el identificador del gemelo a la tabla de destino resultante.
.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, ...
}
Por último, cree una directiva de actualización para llamar a la función y actualizar la tabla de destino.
.alter table timeseriesSilver policy update
@'[{"IsEnabled": true, "Source": "rawData", "Query": "Update_rawData()", "IsTransactional": false, "PropagateIngestionProperties": false}]'
Una vez creada la tabla de destino, puede usar el complemento de Azure Digital Twins para seleccionar los gemelos de interés y, a continuación, combinarlos con los datos de series temporales de la tabla de destino.
Esquema de ejemplo
Este es un ejemplo de un esquema que podría usarse para representar datos compartidos. El ejemplo sigue el esquema del historial de datos de Azure Data Explorer para actualizaciones de propiedades de gemelos.
TimeStamp |
SourceTimeStamp |
TwinId |
ModelId |
Name |
Value |
RelationshipTarget |
RelationshipID |
---|---|---|---|---|---|---|---|
2021-02-01 17:24 | 2021-02-01 17:11 | ConfRoomTempSensor | dtmi:com:example:TemperatureSensor;1 |
temperatura | 301,0 |
Las propiedades de los gemelos digitales se almacenan como pares clave-valor (name, value
). name
y value
se almacenan como tipos de datos dinámicos.
El esquema también admite el almacenamiento de propiedades de las relaciones, según los campos relationshipTarget
y relationshipID
. El esquema clave-valor evita la necesidad de crear una columna para cada propiedad del gemelo.
Representación de propiedades con varios campos
Es posible que quiera almacenar una propiedad en el esquema con varios campos. Estas propiedades se representan mediante el almacenamiento de un objeto JSON como value
en el esquema.
Por ejemplo, si desea representar una propiedad con tres campos para roll, pitch y yaw, el objeto de valor tendría este aspecto: {"roll": 20, "pitch": 15, "yaw": 45}
.
Pasos siguientes
Vea la documentación del complemento para el lenguaje de consulta Kusto en Azure Data Explorer: complemento azure_digital_twins_query_request.
Vea consultas de ejemplo mediante el complemento, incluido un tutorial que ejecuta las consultas en un escenario de ejemplo: Complemento de consulta de Azure Digital Twins para Azure Data Explorer: Consultas y tutorial de ejemplo.