一个IoT传感器每10分钟进行1000个测量值 @ 1kHz,并将10个单独消息中的值发送到Azure IoT Hub中。我应该将十个单独的消息加入到一条以进行进一步处理,例如计算RMS和FFT。
消息具有以下结构:
{
"SampleID" : 12344,
"PartionIdx" : 2,
"NbrPartitions": 10,
"Values" : [12,13,14,13,12,11,10,9]
}
因此,在收到了所有十个后,应将所有具有相同sampleID的消息的值通过partitionIdx顺序连接在一起。我尝试使用流分析,但失败了。
这对于流分析来说这太复杂了吗?如果是的,除了编码网络作业外,还有其他选项吗?
问题有两个方面
- 知道所有值何时到达。
- 将它们连接在一起。
1,如果特定设备ID的事件到达以始终为EventHub和同一EventHub分区或始终到达同一EventHub分区,或者您有一个想法,您可以使用Over()条款使用时间戳来创建不同的时间表,则可以使用时间戳对于每个设备。这将阻止设备ID的输出,直到收到该分区的足够数据为止。
对于2,您可以使用collect(),如 @js-azure所述。如果您希望将数据以特定而不是记录数组的形式格式化,则可以使用JavaScript聚合。