到目前为止,我没有运气通过流分析工作从JSON字符串中以宽格式提取某些值。
JSON具有以下格式:
{"devicename":"demo","msgtime":"2018-04-13T11:00:00.0000000Z",
"payload":[{"Sensor":"one","Value":1.817,"Unit":"W"},
{"Sensor":"two","Value":0.481,"Unit":"W"},
{"Sensor":"three","Value":0.153,"Unit":"W"}]}}
我试图按以下格式获取它:
name one two three
demo 1.817 0.481 0.153
… … … …
我尝试使用" Cross APPLY GetPropertyValues(输入)"来获取值,但我无法以宽幅格式获取它们。
答案 0 :(得分:2)
有一篇博文描述了您的方案的查询模式: Using Azure Stream Analytics JavaScript UDF to lookup values in JSON array
答案 1 :(得分:-1)
尝试下面的代码
SELECT
localInput.devicename,
udf.getValue('one', localInput.payload) as One,
udf.getValue('two', localInput.payload) as Two,
udf.getValue('three', localInput.payload) as Three
FROM localInput;
function main(identifier, arr) {
var result = null;
if (Object.prototype.toString.call(arr) == "[object Array]") {
for (i = 0; i < arr.length; i++) {
if (arr[i].type == identifier) {
result = arr[i].value;
}
}
}
return result;
}