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 的帮助!