如何对来自 IOT Central 数据导出、通过事件中心路由并在 TSI 中使用的遥测进行类型和建模?

How to type and model telemetry from IOT Central data export, routed through Event Hub and consumed in TSI?

使用 IOT Central 数据导出到 Event Hub 时,消息格式为:

{
"applicationId": "A-GUID",
"component": null,
"deviceId": "AN-ID",
"enqueuedTime": "2022-02-23T20:34:11.0400000Z",
"enrichments": {},
"messageProperties": {},
"messageSource": "telemetry",
"module": null,
"schema": "default@v1",
"telemetry": [
{
"label": "temp",
"value": "33"
},
{
"label": "watts",
"value": 2183
}
...
"templateId": "A-TEMPLATE-ID",
"ts": "2022-02-23T20:26:39.0000000Z",
"EventProcessedUtcTime": "2022-02-23T20:37:53.1779856Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2022-02-23T20:34:12.5810000Z"
}

我的问题是如何将 Telemetry 属性 解压缩为 TSI 可以看到的类型?

Type似乎依赖于更扁平的命名结构,例如$event.telemety.watts,并且无法查询$event.telemetrty.label == "watts

我的一个想法是,我可能需要在这些数据到达 TSI 之前对其进行转换,方法是使用入站事件中心,然后是扁平化架构的函数和 TSI 从中读取的出站事件中心。

想通了。 IoT Central 数据导出中有一个新的(对我而言)转换功能。

我们使用以下规则来转换遥测数据。

telemetry: .telemetry | map({ (.name|tostring): .value }) | add