【问题标题】:How to get IoT Analytics to create a new row for each element in the input JSON array?如何让 IoT Analytics 为输入 JSON 数组中的每个元素创建一个新行?
【发布时间】:2020-08-15 12:53:08
【问题描述】:

如果我一次从我的频道中的 IoT 设备接收作为 JSON 数组的数据记录。收到的消息如下所示:

{ 
    "state":{ 
        "reported":{
            "temperature": 24.28,
            "humidity": 37.67,
            "pressure": 1019.57,
            "proximity": 1485
        }
    }
}

数据存储是:

{ 
    reported = { 
        temperature = 24.28,
        humidity = 37.67, 
        pressure = 1019.57, 
        proximity = 1485
    }
}

我想要的结果是:

temperature        humidity        pressure        proximity  
Value1             Value2          Value3          Value4
AnotherValue1      AnotherValue2   AnotherValue3   AnotherValue4

如何让 IoT Analytics 在数据存储中为接收到的 JSON 数组中的每个元素创建一个新行?

【问题讨论】:

    标签: aws-iot aws-iot-analytics


    【解决方案1】:

    为了在数据存储中为温度、湿度、压力和邻近属性提供单独的列,您有以下选项:

    1. 使用管道中的AddAttributesRemoveAttributes 活动直接修改消息。

      1. 通过AddAttributes activity 将温度、湿度、压力和接近度添加到 json 的顶层。
      2. 通过 RemoveAttributes activity 从 json 的顶层移除状态。
    2. 直接使用AWS Lambda activity 修改消息以转换 json,以便温度、湿度、压力和接近度是 json 的顶级键,状态和报告不再是键。

    如果您希望在数据存储区中维护消息的当前结构,但又希望查询结果采用您指定的格式,您可以通过以下示例查询来完成此操作。

    SELECT state.reported.temperature, state.reported.humidity, state.reported.pressure, state.reported.proximity FROM datastore WHERE state IS NOT NULL AND state.reported IS NOT NULL
    

    有关此查询的更多信息,请参阅SQL expressions in IoT Analytics

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2019-07-15
      • 1970-01-01
      • 2022-11-23
      • 1970-01-01
      相关资源
      最近更新 更多