实施Azure流分析或最佳方法

时间:2020-02-04 14:44:52

标签: azure-stream-analytics stream-analytics

我是Steam Analytics的新手,我需要帮助才能完成特定任务。 我有来自IoT枢纽的遥测数据采用这种格式。 基本上,我将获得机器遥测数据,并将该机器上的操作阶段流式传输到iot集线器。 这些阶段将用标签ex:“ stageid”:“ stage1”表示。我需要使用基于时间戳和阶段标签的流分析来计算每个阶段花费的时间。

数据包前:

[{
"Payload": {
    "devid": "01",
    "locid": "loc01",
    "machid": "mac01",
    "stageid": "stage1",
    "timestamp": "2020-01-24T09:22:00.3270000Z"
},
"Payload": {
    "devid": "02",
    "locid": "loc01",
    "machid": "mac01",
    "stageid": "stage1",
    "timestamp": "2020-01-24T09:22:00.3270000Z"
}

}]

[{
"Payload": {
    "devid": "01",
    "locid": "loc01",
    "machid": "mac01",
    "stageid": "stage2",
    "timestamp": "2020-01-24T09:26:00.3270000Z"
},
"Payload": {
    "devid": "02",
    "locid": "loc01",
    "machid": "mac01",
    "stageid": "stage2",
    "timestamp": "2020-01-26T09:24:00.3270000Z"
}

}]

pls可以帮助我通过查询实现此目标,这可能是查询还是另一种最佳方法? 谢谢,

1 个答案:

答案 0 :(得分:1)

据我所知,您的需求无法通过ASA内置功能来实现。 ASA是一种实时收集数据和分析服务。换句话说,数据需要实时处理。当前数据不能等待下一个数据集进行某些计算或合并。即使您可以使用windows function并进行分组,我也认为设备推送消息的频率也是可变的。

作为一种解决方法,我的想法是使用iot-hub azure function trigger。在触发器内部,您可以使用代码来解析消息,并将键列(stageid,timestamp,devid)保存到某个存储中,例如天蓝色的表存储中。在每次插入之前,只需抓住当前设备的最新行来计算当前消息所花费的时间,以便您可以产生该时间存储在其他住所中。最后,为每个设备更新最新行。