IoT 中心和 ASA 输入之间 JSON 反序列化中的部分数据丢失
Partial data loss in JSON deserialization between IoT Hub and ASA Input
Setup is: IoT Hub > input into > Stream Analytics
我目前有 (3) 个传感器和一个来自 ncd.io 的 Azure 网关,它们都向 Azure IoT 中心报告得很好。
在 ASA 中设置 IoT 中心输入时,来自我的传感器的记录数据只有两个元素通过自动 JSON 反序列化。
我在 IoT 中心设置了一个设备,它从我的本地网关报告正确的 Device Twin 数据,如下所示:
"reported": {
"nodes": {
"SN0013A20041DADDF7": {
"firmware_version": 10,
"transmission_count": 192,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 27.93,
"temperature": 22.28
},
"SN0013A20041DADD51": {
"firmware_version": 10,
"transmission_count": 175,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 42.25,
"temperature": 22.55
},
"SN0013A20041DADE33": {
"firmware_version": 10,
"transmission_count": 217,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 39.33,
"temperature": 22.62
}
},
我将来自我的 IoT 中心的 ASA 中的输入设置为 JSON,没有压缩。 ASA 中的结果看起来不错,但是第一个位置 'node' 似乎被排除在结果 .
之外
[
{
"nodes": {
"SN0013A20041DADE33": {
"firmware_version": 10,
"transmission_count": 164,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 39.01,
"temperature": 23.08
}
},
"EventProcessedUtcTime": "2022-05-02T20:39:23.3568635Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2022-05-02T19:55:43.2820000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "***",
"ConnectionDeviceGenerationId": "***",
"EnqueuedTime": "2022-05-02T19:55:43.1570000Z"
}
},
{
"nodes": {
"SN0013A20041DADD51": {
"firmware_version": 10,
"transmission_count": 122,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 42.09,
"temperature": 22.62
}
},
"EventProcessedUtcTime": "2022-05-02T20:39:23.3568635Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2022-05-02T19:55:40.8290000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "***",
"ConnectionDeviceGenerationId": "***",
"EnqueuedTime": "2022-05-02T19:55:40.8130000Z"
}
},
{
"nodes": {
"SN0013A20041DADE33": {
"firmware_version": 10,
"transmission_count": 163,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 38.9,
"temperature": 23.14
}
},
"EventProcessedUtcTime": "2022-05-02T20:39:23.3568635Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2022-05-02T19:55:03.7180000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "***",
"ConnectionDeviceGenerationId": "***",
"EnqueuedTime": "2022-05-02T19:55:03.6710000Z"
}
},
{
"nodes": {
"SN0013A20041DADD51": {
"firmware_version": 10,
"transmission_count": 121,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 42.22,
"temperature": 22.65
}
},
我真的找不到任何选项来调整它,因为它都是单个记录的一部分...我可以查询我收到的数据并输出它没问题。
Example output in ASA
Reference of the issue
似乎在更深入地研究传感器后,丢失的传感器在报告方面存在问题,并且明显落后于集线器上的其他两个设备,导致它从结果中被剥离。
在重新启动传感器并对数据进行采样后,我能够接收到所有三个传感器并将它们毫无问题地传递给 PowerBI。
感谢@Florian-Eiden 的帮助!
Setup is: IoT Hub > input into > Stream Analytics
我目前有 (3) 个传感器和一个来自 ncd.io 的 Azure 网关,它们都向 Azure IoT 中心报告得很好。
在 ASA 中设置 IoT 中心输入时,来自我的传感器的记录数据只有两个元素通过自动 JSON 反序列化。
我在 IoT 中心设置了一个设备,它从我的本地网关报告正确的 Device Twin 数据,如下所示:
"reported": {
"nodes": {
"SN0013A20041DADDF7": {
"firmware_version": 10,
"transmission_count": 192,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 27.93,
"temperature": 22.28
},
"SN0013A20041DADD51": {
"firmware_version": 10,
"transmission_count": 175,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 42.25,
"temperature": 22.55
},
"SN0013A20041DADE33": {
"firmware_version": 10,
"transmission_count": 217,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 39.33,
"temperature": 22.62
}
},
我将来自我的 IoT 中心的 ASA 中的输入设置为 JSON,没有压缩。 ASA 中的结果看起来不错,但是第一个位置 'node' 似乎被排除在结果 .
之外 [
{
"nodes": {
"SN0013A20041DADE33": {
"firmware_version": 10,
"transmission_count": 164,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 39.01,
"temperature": 23.08
}
},
"EventProcessedUtcTime": "2022-05-02T20:39:23.3568635Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2022-05-02T19:55:43.2820000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "***",
"ConnectionDeviceGenerationId": "***",
"EnqueuedTime": "2022-05-02T19:55:43.1570000Z"
}
},
{
"nodes": {
"SN0013A20041DADD51": {
"firmware_version": 10,
"transmission_count": 122,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 42.09,
"temperature": 22.62
}
},
"EventProcessedUtcTime": "2022-05-02T20:39:23.3568635Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2022-05-02T19:55:40.8290000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "***",
"ConnectionDeviceGenerationId": "***",
"EnqueuedTime": "2022-05-02T19:55:40.8130000Z"
}
},
{
"nodes": {
"SN0013A20041DADE33": {
"firmware_version": 10,
"transmission_count": 163,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 38.9,
"temperature": 23.14
}
},
"EventProcessedUtcTime": "2022-05-02T20:39:23.3568635Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2022-05-02T19:55:03.7180000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "***",
"ConnectionDeviceGenerationId": "***",
"EnqueuedTime": "2022-05-02T19:55:03.6710000Z"
}
},
{
"nodes": {
"SN0013A20041DADD51": {
"firmware_version": 10,
"transmission_count": 121,
"reserve_byte": 0,
"battery_level": 3.29406,
"type": 1,
"node_id": 0,
"rssi": 100,
"humidity": 42.22,
"temperature": 22.65
}
},
我真的找不到任何选项来调整它,因为它都是单个记录的一部分...我可以查询我收到的数据并输出它没问题。
Example output in ASA
Reference of the issue
似乎在更深入地研究传感器后,丢失的传感器在报告方面存在问题,并且明显落后于集线器上的其他两个设备,导致它从结果中被剥离。
在重新启动传感器并对数据进行采样后,我能够接收到所有三个传感器并将它们毫无问题地传递给 PowerBI。
感谢@Florian-Eiden 的帮助!