0

我是 Steam 分析的新手,我需要帮助来完成特定任务。我有来自这种格式的 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"
}

}]

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

4

1 回答 1

1

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

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

于 2020-02-06T07:54:23.290 回答