【问题标题】:Azure Stream Analytics JSON ParsingAzure 流分析 JSON 解析
【发布时间】:2021-05-23 00:15:14
【问题描述】:

尝试建立一个相对简单的 ASA 查询来提取作为数组摄取的数据。我似乎无法弄清楚的部分是如何让返回的表自动填充每个键的列。这意味着我们需要每一行都有一列温度值、湿度值、照明值和接触值(如果存在)。其他一些数组只有 Key: Temperature 和 Key: Humidity。

谢谢!

"telemetry": {
      "data": [
        {
          "key": "temperature",
          "value": 19.1,
          "unit": "°C"
        },
        {
          "key": "humidity",
          "value": 38.5,
          "unit": "%"
        },
        {
          "key": "illumination",
          "value": 0,
          "unit": "lx"
        },
        {
          "key": "accelerationStatus",
          "value": "heartbeat",
          "meaning": "Heartbeat"
        },
        {
          "key": "accelerationX",
          "value": -0.02,
          "unit": "g"
        },
        {
          "key": "accelerationY",
          "value": 0,
          "unit": "g"
        },
        {
          "key": "accelerationZ",
          "value": 1.01,
          "unit": "g"
        },
        {
          "key": "contact",
          "value": "open",
          "meaning": "Window opened"
        }
      ],

【问题讨论】:

    标签: arrays json azure azure-stream-analytics


    【解决方案1】:

    您可以在 ASA 中使用 UDF。

    UDF功能码:

    function main(arg) {
        var array = arg.telemetry.data;
        var map = {};
        for(var i=0;i<array.length;i++){        
            var key=array[i].key;
            if(key == "temperature" || key == "humidity" || key == "illumination"){
                map[key] = array[i].value + "" + array[i].unit;
            }
            if(key == "contact"){
                 map[key] = array[i].value;
            }    
        }
        return map;
    }
    

    SQL:

    WITH 
    c AS
    (
        SELECT 
        udf.processArray(t) AS result
        FROM input AS t
    )
    
    SELECT c.result
    FROM c
    

    结果:

    【讨论】:

    • 啊哈!这很有意义。好主意@史蒂夫。太感谢了!奇迹般有效。刚刚编辑了 UDF 以包含一些额外的数组元素,例如传感器 ID 和名称以及所有它的工作。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 2020-08-31
    • 2014-03-01
    • 1970-01-01
    • 2021-07-14
    • 1970-01-01
    • 2019-11-14
    • 2022-01-02
    相关资源
    最近更新 更多