我试图通过流分析将我的IoT Hub数据发送到Power BI。 只要没有包含在物联网设备的json数据中的数组,就可以正常工作。Azure流分析查询:将json阵列数据发送到PowerBI
我的问题是:我希望如何修改我的分析数据查询,以便PowerBI能够解释数据作为数组/表?我如何使用TIMESTAMP BY每个数组元素(使用“timecreated”)?
JSON字符串我发送到物联网中心看起来像这样:
{"sensordata":[{"name":"Temp_0","value":3,"timecreated":"2016-11-09T11:08:00Z"},
{"name":"Temp_0","value":7,"timecreated":"2016-11-09T11:08:02Z"},
{"name":"Temp_1","value":2,"timecreated":"2016-11-09T11:08:04Z"}]}
流分析从物联网中心收到什么:
[{"sensordata":[{"name":"Temp_0","value":3,"timecreated":"2016-11-09T11:08:00.0000000Z"},
{"name":"Temp_0","value":7,"timecreated":"2016-11-09T11:08:02.0000000Z"},
{"name":"Temp_1","value":2,"timecreated":"2016-11-09T11:08:04.0000000Z"}],
"EventProcessedUtcTime":"2016-11-09T10:08:57.9325156Z","PartitionId":0,
"EventEnqueuedUtcTime":"2016-11-09T10:08:47.8050000Z","IoTHub":
{"MessageId":null,"CorrelationId":null,"ConnectionDeviceId":"toCloudDevice",
"ConnectionDeviceGenerationId":"607350268321425367",
"EnqueuedTime":"0001-01-01T00:00:00.0000000","StreamId":null}}]
我的分析数据查询看起来是这样的:
SELECT sensordata.ArrayValue AS data,
COUNT(*)
INTO
[transmit-data]
FROM
[receive-data] AS e
CROSS APPLY GetArrayElements(e.sensordata) AS sensordata
GROUP BY
sensordata,
tumblingWindow(Second, 10)
IoT Hub发送给Power BI的内容:
[{"data":{"name":"Temp_1","value":2,"timecreated":"2016-11-09T11:08:04.0000000Z"},
"count":1},{"data":{"name":"Temp_0","value":7,"timecreated":"2016-11-09T11:08:02.0000000Z"},
"count":1},{"data":{"name":"Temp_0","value":3,"timecreated":"2016-11-09T11:08:00.0000000Z"},
"count":1}]
PowerBI无法以合理的方式解释这些数据。
我希望能够生成图形,例如在x轴上有时间并且在y轴上具有Temp_0的值。
关于这个问题的任何想法?你的帮助将不胜感激。
(顺便说一句:从设备的IoT JSON串具有不同的数组元素的数!)
这是非常有用的thx! (尽管我不得不在SELECT语句中忽略'.data'。)PowerBI现在能够消化数据并生成图形。我暂时不能分开“Temp_0”和“Temp_1”,并会尝试按照您的想法使用中间事件中心。 –
(在PowerBI服务图表中分隔“Temp_0”和“Temp_1”的简单方法是在“名称”上使用过滤器。) –