Azure timeseries insights Microsoft Azure时间序列洞察:如何查询扁平化动态阵列

Azure timeseries insights Microsoft Azure时间序列洞察:如何查询扁平化动态阵列,azure-timeseries-insights,Azure Timeseries Insights,我们使用Time Series Insights Gen 2从物联网中心读取数据。数据的形式与本文档中的示例C非常相似: 我们的数据结构如下: { "timestamp": "2020-11-01T10:00:00.000Z", "sensors": [{ "name" : "temperature", "unit" : "ce

我们使用Time Series Insights Gen 2从物联网中心读取数据。数据的形式与本文档中的示例C非常相似:

我们的数据结构如下:

{
  "timestamp": "2020-11-01T10:00:00.000Z",
  "sensors": [{
        "name" : "temperature",
        "unit" : "celsius"
        "value": 25.39
    },
    {
        "name" : "humidity",
        "unit" : "percentage" 
        "value": 97.85
    }
  ]
}
而且阵列中还有更多的“传感器”项目。我们总是使用时间序列洞察PAYG预览,效果很好。我们可以使用以下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"
        }]
    }
}
在微软将预览版PAYG推向正式发布之前,这种做法一直运作良好。它不再工作了,我们在文档中发现了这一点:

资料来源:

以下文档甚至明确指出,阵列的平坦化现在已经不同了:

资料来源:


是否仍有可能查询此动态类型的数组,而不必在每个数组项中添加时间戳或设备ID?

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


一个想法是——创建一个新的TSI环境并配置一个复合的TS ID——不管您的初始ID加上sensor.name(假设名称是唯一的标识符),那么您也不需要对temp进行筛选。

“动态类型仅通过GetEvents API公开”这意味着什么?如何通过GetEventsAPI暴露它们?我上面提到的负载也是一个GetEvents负载,对吗?是的,你是对的,我响应得太快了,没有真正查看你的请求主体。以上编辑。GetEvents——刚刚得到“原始”的消息,谢谢你的回复。尽管这是可行的,但需要为现有生产环境重新安装TSI。我们可能需要重建传入消息的结构,以便在每个对象中包含一个时间戳。。。或我们能否保持现有环境的当前结构?你知道什么时候会更新它们,这样我们就不能再使用当前的getEvents查询了吗?我读到API将在10月底更新,但这是否意味着TSI的版本也将升级到官方版本?嗨,我很抱歉我关闭了通知。以前的API版本将在10月底失效($event['sensor_name'].String或$event.sensor_name.String,但不是$event.[sensor_name].String),但这与摄取规则正交——两个不同的序列。预览期间创建的任何环境都可以(必须)使用新的API语法。在某个时候,预览展平规则将失效,但当前没有时间表。它属于破坏Azure的更改范围,因此您将有充足的时间进行准备。