Microsoft Azure 时间序列见解:如何查询展平的动态数组
Microsoft Azure Time Series Insights: How to query a flattened dynamic array
我们使用 Time Series Insights Gen 2 从 IoT 中心读取数据。数据的形式与本文档中的示例 C 非常相似:https://docs.microsoft.com/en-us/azure/time-series-insights/concepts-json-flattening-escaping-rules
我们的数据结构如下:
{
"timestamp": "2020-11-01T10:00:00.000Z",
"sensors": [{
"name" : "temperature",
"unit" : "celsius"
"value": 25.39
},
{
"name" : "humidity",
"unit" : "percentage"
"value": 97.85
}
]
}
通常数组中还有更多 'sensor' 项。我们一直使用 Time Series Insights PAYG Preview,它运行良好。我们可以使用以下 JSON 有效载荷查询温度:
{
"getEvents": {
"timeSeriesId": ["some Id"],
"searchSpan": {
"from": "2020-08-27T07:34:00.000Z",
"to": "2020-08-27T07:34:10.000Z"
},
"filter": {
"tsx": "$event.sensors_name.String = 'temperature'"
},
"projectedProperties": [{
"name": "sensors_value",
"type": "Double"
}]
}
}
这非常有效,直到 Microsoft 将 PREVIEW PAYG 版本推向正式版本。它不再起作用,我们在文档中找到了它:
来源:https://docs.microsoft.com/en-us/azure/time-series-insights/concepts-supported-data-types
下面的文档更明确的说现在数组的展平是不一样的:
来源:https://docs.microsoft.com/en-us/azure/time-series-insights/ingestion-rules-update
是否有可能仍然查询这种动态类型的数组,而不必在每个数组项中放置时间戳或 deviceId?
该功能尚不存在,无法在 TSX 表达式中引用动态类型,并且无法将数组中的值检索为 projectedProperties。必须检索并解析整个数组 client-side。要触发展平,您必须如上所述在对象中添加 ID 或时间戳。
一个想法——创建一个新的 TSI 环境并配置一个复合 TS ID——无论你的初始 ID 是什么加上 sensor.name,(假设该名称是一个唯一标识符),那么你也消除对温度过滤器的需求。
我们使用 Time Series Insights Gen 2 从 IoT 中心读取数据。数据的形式与本文档中的示例 C 非常相似:https://docs.microsoft.com/en-us/azure/time-series-insights/concepts-json-flattening-escaping-rules
我们的数据结构如下:
{
"timestamp": "2020-11-01T10:00:00.000Z",
"sensors": [{
"name" : "temperature",
"unit" : "celsius"
"value": 25.39
},
{
"name" : "humidity",
"unit" : "percentage"
"value": 97.85
}
]
}
通常数组中还有更多 'sensor' 项。我们一直使用 Time Series Insights PAYG Preview,它运行良好。我们可以使用以下 JSON 有效载荷查询温度:
{
"getEvents": {
"timeSeriesId": ["some Id"],
"searchSpan": {
"from": "2020-08-27T07:34:00.000Z",
"to": "2020-08-27T07:34:10.000Z"
},
"filter": {
"tsx": "$event.sensors_name.String = 'temperature'"
},
"projectedProperties": [{
"name": "sensors_value",
"type": "Double"
}]
}
}
这非常有效,直到 Microsoft 将 PREVIEW PAYG 版本推向正式版本。它不再起作用,我们在文档中找到了它:
来源:https://docs.microsoft.com/en-us/azure/time-series-insights/concepts-supported-data-types
下面的文档更明确的说现在数组的展平是不一样的:
来源:https://docs.microsoft.com/en-us/azure/time-series-insights/ingestion-rules-update
是否有可能仍然查询这种动态类型的数组,而不必在每个数组项中放置时间戳或 deviceId?
该功能尚不存在,无法在 TSX 表达式中引用动态类型,并且无法将数组中的值检索为 projectedProperties。必须检索并解析整个数组 client-side。要触发展平,您必须如上所述在对象中添加 ID 或时间戳。
一个想法——创建一个新的 TSI 环境并配置一个复合 TS ID——无论你的初始 ID 是什么加上 sensor.name,(假设该名称是一个唯一标识符),那么你也消除对温度过滤器的需求。