在Microsoft流分析查询

时间:2016-02-19 10:59:45

标签: sql json azure azure-stream-analytics cortana-intelligence

所以我遇到了一些问题。 我从外部API检索一些weatherdata。这将作为JSON返回并发送到Azure IoT中心。流分析将json处理成适当的格式,但我在这里遇到了问题。

元素:Current_Condition是一种数组格式。它总是在[0]位置有一个元素。我只需要从第一个位置获取该数组的数据,而不需要像id等那样的过滤器。

这里是完整的数据

{
  "deviceId": "aNewDevice",
  "data": {
    "data": {
      "current_condition": [
        {
          "cloudcover": "0",
          "FeelsLikeC": "0",
          "FeelsLikeF": "32",
          "humidity": "100",
          "observation_time": "10:00 AM",
          "precipMM": "0.0",
          "pressure": "1020",
          "temp_C": "2",
          "temp_F": "36",
          "visibility": "0",
          "weatherCode": "143",
          "weatherDesc": [ { "value": "Fog, Mist" } ],
          "weatherIconUrl": [ { "value": "http://cdn.worldweatheronline.net/images/wsymbols01_png_64/wsymbol_0006_mist.png" } ],
          "winddir16Point": "SSW",
          "winddirDegree": "210",
          "windspeedKmph": "7",
          "windspeedMiles": "4"
        }
      ],
      "request": [
        {
          "query": "Nijmegen, Netherlands",
          "type": "City"
        }
      ]
    }
  }
}

还有一些关于我究竟需要做什么的解释(不只是一个例子或代码答案)将来会很好。 (毕竟,请求元素存在同样的问题。)

提前致谢:)

1 个答案:

答案 0 :(得分:5)

您需要使用GetArrayElement功能。例如:

SELECT GetRecordProperty(GetArrayElement(Current_Condition, 0), 'humidity')

为了使它更好一点,你可以将查询分成两个步骤:

WITH CurrentConditions AS
(
    SELECT deviceId, GetArrayElement(Current_Condition, 0) as conditions
    FROM input
)

SELECT deviceID, conditions.humidity
FROM CurrentConditions