Azure Stream Analytics嵌套数组查询推送PowerBI错误原因咨询
问题原因分析与修正方案
你的查询出错的核心问题在于没有正确处理嵌套的数组类型字段。
看你的输入JSON,values是一个数组(用方括号[]包裹),而你直接在SELECT语句里通过[values].id来引用数组内的属性——Azure Stream Analytics没办法自动将数组中的每个元素拆解出来,这样的查询要么会返回null值,要么会把整个数组对象原样传递给PowerBI,导致PowerBI无法正确识别这些字段,最终呈现出不符合预期的结果。
正确的处理方式
要解析嵌套数组,你需要使用Stream Analytics的GetArrayElements内置函数,配合CROSS APPLY(或OUTER APPLY)来展开数组中的每个元素,让每个数组元素都成为一条独立的记录,这样才能正确提取其中的属性。
以下是修正后的查询语句:
SELECT timestamp, vals.ArrayValue.id, vals.ArrayValue.v, vals.ArrayValue.q, vals.ArrayValue.t INTO [PowerBI] FROM [IoTHub] CROSS APPLY GetArrayElements([values]) AS vals
补充说明
GetArrayElements([values])会提取values数组中的每一个元素CROSS APPLY会将原始事件与数组中的每个元素进行关联,生成对应数量的新记录(比如你的示例里数组有1个元素,就会生成1条记录)- 如果你的场景中
values数组可能为空,建议用OUTER APPLY代替CROSS APPLY——这样即使数组为空,原始事件的timestamp等字段也会被保留,不会被过滤掉。
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

