0

我们使用从 IoT 中心读取数据的 Time Series Insights Gen 2。数据的形式与本文档中的示例 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
    }
  ]
}

而且通常在阵列中有更多的“传感器”项目。我们一直使用 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"
        }]
    }
}

这非常有效,直到微软将 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?

4

1 回答 1

1

该功能尚不存在,无法在 TSX 表达式中引用动态类型,并且无法将数组中的值作为projectedProperties 检索。必须检索整个数组,然后在客户端解析。要触发展平,您必须在上面提到的对象中添加 ID 或时间戳。

一个想法——创建一个新的 TSI 环境并配置一个复合 TS ID——无论你的初始 ID 是什么加上 sensor.name,(假设名称是唯一标识符),那么你也不需要过滤器对于温度。

于 2020-08-27T19:15:40.700 回答