You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Azure Stream Analytics作业将原始JSON数据写入Azure SQL数据库?

解决Azure Stream Analytics保存原始JSON到SQL数据库的问题

要直接把IoT Hub传来的完整原始JSON存入Azure SQL数据库,你可以利用Stream Analytics的ToString()函数,将整个输入记录(也就是原始JSON消息体)转换为字符串,然后插入到数据库的对应列中。具体步骤如下:

1. 准备SQL数据库表结构

首先确保你的SQL表有一个足够容纳长JSON字符串的列,建议定义为NVARCHAR(MAX),同时可以保留自增的RecID列(匹配你示例中的需求):

CREATE TABLE RawTelemetry (
    RecID INT IDENTITY(1,1) PRIMARY KEY,
    JsonValue NVARCHAR(MAX) NOT NULL
);

2. 修改Stream Analytics查询

在你的SA作业中,替换原来的解析查询,改用以下语句——直接将整个IoT Hub输入的消息体转换为字符串,然后写入SQL表:

SELECT ToString([iothub]) AS JsonValue
INTO [YourSQLDatabaseOutput]
FROM [YourIoTHubInput]

这里的[iothub]是你SA作业中IoT Hub输入的别名,[YourSQLDatabaseOutput]是你配置的SQL输出别名,根据实际名称替换即可。

3. 验证效果

运行这个作业后,SQL表中的JsonValue列就会完整存储每条IoT Hub传来的原始JSON数据,和你期望的结果一致:

RecID  JsonValue
1      {"gtwid": "0013A200419F2BAA","devid": "0013A200418975CC","telemetry": {"t1": {"id": "a698ab4d2001","avg": 26,"max": 26,"min": 26}}}

额外注意事项

  • 一定要用NVARCHAR(MAX)类型存储JSON,避免因字符串长度超出限制导致数据截断,同时兼容JSON中的Unicode字符。
  • 如果你的IoT Hub消息包含系统属性(如入队时间),且需要一并保存,可以结合GetMetadataPropertyValue函数把属性和消息体拼接成JSON;但如果只需要原始消息体,上面的查询就足够了。
  • 可以在SA的测试查询功能中先验证输出,确认ToString()返回的是完整的原始JSON字符串后再正式运行作业。

内容的提问来源于stack exchange,提问作者Radim Pluskal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 03:22:33