有没有办法通过流分析作业将原始 JSON 数据传输到 Azure SQL 中?
Posted
技术标签:
【中文标题】有没有办法通过流分析作业将原始 JSON 数据传输到 Azure SQL 中?【英文标题】:Is there any way to reach raw JSON data through Stream Analytics Job into Azure SQL? 【发布时间】:2021-08-09 13:42:32 【问题描述】:我有一些传感器以 JSON 格式的字符串向 Azure IoT Hub 发送数据。到目前为止,我通过 Hub Trigger 上的 Function Apps 处理数据。
现在我正在尝试寻找方法,如何通过 Azure 流分析作业将“原始”JSON 数据保存到 Azure SQL 数据库中。问题是“原始”数据没有设置,SA 总是将输入 JSON 解析(反序列化)到数据字段中。我只想获取“原始” JSON 并将其保存到数据库中。
让我通过例子来解释这个...... 原始 JSON(由 IoT 中心捕获)如下所示:
"gtwid": "0013A200419F2BAA",
"devid": "0013A200418975CC",
"telemetry":
"t1":
"id": "a698ab4d2001",
"avg": 26,
"max": 26,
"min": 26
当我尝试在 SA 中使用以下查询代码时,我得到了部分想要的结果,但仅适用于“遥测”树:
WITH s AS
(
SELECT
gtwid
, devid
, telemetry.*
FROM
[iothub]
)
SELECT gtwid,devid,gtwtime,timestamp,t1 INTO [db] FROM s
它在 db 中产生这个结果:
RecID gtwid devid t1
1 0013A200419F2BAA 0013A200418975CC "id":"a698ab4d2001","avg":26,"max":26,"min":26
我想得到这样的结果:
RecID JsonValue
1 "gtwid": "0013A200419F2BAA","devid": "0013A200418975CC","telemetry": "t1": "id": "a698ab4d2001","avg": 26,"max": 26,"min": 26
请问我该怎么做?
【问题讨论】:
【参考方案1】:目前无法绕过反序列化。
相反,您可以使用javascript UDF 重新生成原始有效负载。这显然不是一回事,但它可以提供帮助,具体取决于您需要它的原因。
【讨论】:
以上是关于有没有办法通过流分析作业将原始 JSON 数据传输到 Azure SQL 中?的主要内容,如果未能解决你的问题,请参考以下文章
Azure 流分析作业在输入格式错误 (JSON) 后被阻止