如何从单个 JSON(IOT HUB)将流分析输出转换为多行
Posted
技术标签:
【中文标题】如何从单个 JSON(IOT HUB)将流分析输出转换为多行【英文标题】:How to get the stream analytics output into multiple rows from single JSON(IOT HUB) 【发布时间】:2016-08-24 11:40:47 【问题描述】:我有来自 iot hub 的数据,需要输入到 SQL 表中。 iot hub的JSON数据是这样的-
[ "设备 ID": "1",
"Parking1": 50,
"Parking2": 49,
"Parking3": 37,
"Parking4": 35
, “设备 ID”:“2”,
"Parking1": 45,
"Parking2": 54,
"Parking3": 37,
"Parking4": 35
]
表格是这样的
设备ID|描述 |值
1 |停车场1 | 10
1 |停车场2 | 20
1 |停车场3 | 30
1 |停车位4 | 40
2 |停车场1 | 10
2 |停车场2 | 20
需要流动的答案-
所以我需要在流分析中编写查询,以便查询解析 JSON 数据并将其放入表的 4 行中,如上所述。让我知道需要编写什么查询来转换表每一行中的每个键。
当设备 ID 在表中匹配时,应将 Parking1、Parking2、Parking3 和 Parking4 的值插入表中。
此外,表中的值每次都应该更新而不是插入。
提前致谢!
【问题讨论】:
您在发送数据的方式上有任何灵活性吗?如果您可以将停车信息作为单独的记录发送,您可以使用 GetRecordProperties() 将其转换为您需要的形状 msdn.microsoft.com/en-us/library/azure/mt270221.aspx 。 ASA 不支持更新 SQL 输出,如果可以接受保留所有数据,您可以添加时间戳列并编写视图以获取 deviceId、parkingId 组合的最新值。 【参考方案1】:浏览您的 JSON,“Parking1”、“Parking2”、“Parking3”、“Parking4”应该是表格列。
您的选择查询应该是
SELECT DeviceID, Parking, Parkign2, Parking3, Parking4
INTO <SQLOutput>
FROM <InputStream>
此外,由于 ASA 作业的输入(物联网集线器)和输出(SQL Azure)不同,因此只能插入数据而不能更新数据。
【讨论】:
以上是关于如何从单个 JSON(IOT HUB)将流分析输出转换为多行的主要内容,如果未能解决你的问题,请参考以下文章
阿里云iot hub一秒内能从设备上接受多少数据?一秒内能发送多少数据
需要使用 Azure 流分析和 IoT Hub 将数据存储到 Azure Data Lake Store:数据必须按 4MB 缓冲区存储
从DeviceClient明确打开与IoT Hub的连接,或者在发送消息时打开它?