Azure 流分析实施或最佳方法

azure stream analytics implementation or the best approach

我是 Steam 分析的新手,我需要这里的帮助来完成特定任务。 我有来自这种格式的物联网中心的遥测数据。 基本上,我将获取机器遥测数据和该机器上的操作阶段流式传输到物联网中心。 这些阶段将用标签 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"
}

}]

请帮助我,我们可以通过查询实现这一点吗?查询可能是什么,或者其他最佳方法是什么? 谢谢,

据我所知,ASA 内置功能无法满足您的需求。 ASA 是一个实时收集数据和分析 service.In 换句话说,数据需要在真实中处理 - time.Current 数据不能等待下一个数据集做一些计算或合并的事情。即使你可以使用 windows function 和 group by,我相信设备推送消息的频率也是可变的。

作为解决方法,我的想法是使用iot-hub azure function trigger。在触发器内部,您可以使用代码来解析消息并将关键列(stageid、timestamp、devid)保存到一些存储中,也许是天蓝色的table 贮存。在每次插入之前,只需获取当前设备的最新行来计算当前消息所花费的时间,以便您可以将时间存储在其他 residence.In 末尾,为每个设备更新最新行。