【发布时间】:2017-03-23 04:35:12
【问题描述】:
我正在尝试通过流分析将我的 IoT 中心数据发送到 Power BI。 只要物联网设备的 json 数据中不包含任何数组,就可以正常工作。
我的问题是:我必须如何修改我的流分析查询,以便 PowerBI 能够将数据解释为数组/表?如何对每个数组元素进行 TIMESTAMP(使用“timecreated”)?
我发送到 IoT Hub 的 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"}]}
流分析从 IoT 中心接收到的内容:
[{"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 字符串具有不同数量的数组元素!)
【问题讨论】:
标签: powerbi azure-stream-analytics azure-iot-hub