如何解决解析 azure 流分析中的 json 内容
我的 sql 技能非常有限。请帮忙。
Azure IoT 边缘上的 Modbus 模块以这种格式(来自下载的示例数据)将 JSON 内容返回到流分析作业 -
[
{
"PublishTimestamp": "2021-07-28 19:28:15","Content": [
{
"HwId": "XY-MOD2-1","Data": [
{
"CorrelationId": "DefaultCorrelationId","SourceTimestamp": "2021-07-28 19:28:15","Values": [
{
"displayName": "Temperature","Address": "30002","Value": "210"
},{
"displayName": "Temperature","Address": "30003","Value": "538"
}
]
}
]
}
],"EventProcessedUtcTime": "2021-07-28T20:26:23.9127084Z","PartitionId": 0,"EventEnqueuedUtcTime": "2021-07-28T19:28:15.9460000Z","IoTHub": {
"MessageId": null,"CorrelationId": null,"Connectiondeviceid": "rp4linuxedge1","ConnectionDeviceGenerationId": "637630846187016425","EnqueuedTime": "2021-07-28T19:28:15.9550000Z","StreamId": null
}
},
源时间戳 | 地址 | 价值 |
---|---|---|
时间 1 | 30002 | 210 |
时间 1 | 30003 | 538 |
时间 2 | 30002 | 215 |
时间 2 | 30003 | 540 |
解决方法
JSON 对象中的数组可以使用这个代码块访问 -
select
cast(dataArr.ArrayValue.SourceTimestamp as datetime) as SourceTimestamp,cast(valuesArr.ArrayValue.Address as bigint) as Address,cast(valuesArr.ArrayValue.Value as float) as Value
into powerbioutput
from iotinput i
cross apply GetArrayElements(i.Content) as contentArr
cross apply GetArrayElements(contentArr.ArrayValue.Data) as dataArr
cross apply GetArrayElements(dataArr.ArrayValue.[Values]) as valuesArr
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。