如何从单个 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的连接,或者在发送消息时打开它?

国内物联网平台初探 ——百度物接入IoT Hub

Azure IoT Hub 十分钟入门系列 - 实现从设备上传日志文件/图片到 Azure Storage

Android 应用未连接 Azure-iot Hub