簡體   English   中英

流分析-處理沒有數組名稱的JSON

[英]Stream Analytics - Processing JSON with no array name

帶有modbus模塊的IoT Edge v2將數據發送到IoT中心,格式為:

[
{
    "DisplayName": "Voltage",
    "HwId": "",
    "Address": "400001",
    "Value": "200",
    "SourceTimestamp": "2019-01-03 23:40:24"
},
{
    "DisplayName": "Voltage",
    "HwId": "",
    "Address": "400002",
    "Value": "24503",
    "SourceTimestamp": "2019-01-03 23:40:24"
},
...
]

我想使用包含CROSS APPLY GetArrayElements()的流分析查詢將此數組轉換為行,但是此函數需要一個數組名稱。 顯然沒有名字。 有什么建議么?

https://docs.microsoft.com/zh-CN/stream-analytics-query/getarrayelements-azure-stream-analytics https://docs.microsoft.com/zh-CN/azure/stream-analytics/stream-analytics -parsing-json

是的,它需要一個數組名稱。 CROSS APPLY GetArrayElements()用於嵌套數組。

例:

[{
      "source": "xda",
      "data": 
        [{
            "masterTag": "UNIFY1",
            "speed": 180
        },
        {
            "masterTag": "UNIFY2",
            "speed": 180
        }],
      "EventEnqueuedUtcTime": "2018-07-20T19:28:18.5230000Z",
  },
  {
      "source": "xda",
      "data": [{
            "masterTag": "UNIFY3",
            "speed": 214
        },
        {
            "masterTag": "UNIFY4",
            "speed": 180
        }],
      "EventEnqueuedUtcTime": "2018-07-20T19:28:20.5550000Z",
  }
]

您可以使用下面的sql將其轉換為行:

SELECT 
    jsoninput.source, 
    arrayElement.ArrayValue.masterTag
INTO 
    output
FROM jsoninput
CROSS APPLY GetArrayElements(jsoninput.data) AS arrayElement 

但是,現在您提供的輸入數據是純數組。 如果要將此數組轉換為行,只需使用sql:

select jsoninput.* from jsoninput

在此處輸入圖片說明

您不必使用GetArrayElements。 僅選擇json數組作為輸入格式就足夠了。 流分析將讀取數組中的每個對象作為記錄。 與行或空格分隔的ja那教對象相同,每個對象都作為記錄讀取。

暫無
暫無

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

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