簡體   English   中英

Azure Stream 分析 JSON 解析

[英]Azure Stream Analytics JSON Parsing

試圖建立一個相對簡單的 ASA 查詢來提取作為數組攝取的數據。 我似乎無法弄清楚的部分是如何讓返回的表自動填充每個鍵的列。 這意味着我們需要每一行都有一列溫度值、濕度值、照明值和接觸值(如果存在)。 其他一些 arrays 將只有鍵:溫度和鍵:濕度。

謝謝!

"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"
        }
      ],

您可以在 ASA 中使用 UDF。

UDF function 代碼:

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

結果:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM