0

如果我一次从我的频道中的 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 数组中的每个元素创建一个新行?

4

1 回答 1

1

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

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

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

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

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

有关此查询的详细信息,请参阅IoT Analytics 中的 SQL 表达式

于 2020-07-23T21:21:09.910 回答