我試圖通過流分析將我的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」的簡單方法是在「名稱」上使用過濾器。) –