0

到目前为止,我没有运气通过流分析作业从 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(input)”获取值,但我无法以宽格式获取它们。

4

2 回答 2

2

有一篇博客文章描述了您的方案的查询模式: Using Azure Stream Analytics JavaScript UDF to lookup values in JSON array

于 2018-04-15T05:39:24.500 回答
-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;
  }
于 2018-04-16T04:00:59.253 回答