sql - 在 Microsoft 流分析查询中选择 JSON 数组中的第一个元素

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

所以我遇到了一点问题。
我从外部 API 中检索了一些天气数据。这将作为 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"
        }
      ]
    }
  }
}

还有一些关于我到底需要做什么的解释(不仅仅是一个例子或代码答案)对 future 会有好处。 (毕竟 request 元素也有同样的问题。)

提前致谢 :)

最佳答案

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

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

为了使它更好一点,您可以将查询分为 2 个步骤:
WITH CurrentConditions AS
(
    SELECT deviceId, GetArrayElement(Current_Condition, 0) as conditions
    FROM input
)

SELECT deviceID, conditions.humidity
FROM CurrentConditions

关于sql - 在 Microsoft 流分析查询中选择 JSON 数组中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503674/

相关文章:

python - 使用Psycopg2的SQL命令获取日期时间读数中的小时

javascript - WebSQL错误回调中的“无法读取未定义的属性'消息'”

json - 从JSON创建CSV文件时Powershell脚本性能不佳

c++ - JSON或 Protocol Buffer 以替换自定义TCP消息

javascript - 如何使用Angular JS从复选框中获取选中值

带有 .NET Core 3.0 的 Azure Web 应用程序失败 : Can't find Microsoft. AspNetCore.App

azure - Azure Sql 中的 Active Directory(AD) 身份验证不起作用

sql - 每位使用者的SELECT列,以及当天的最新时间

mysql - 我可以在MYSQL中联接两个表并创建一个新表吗

azure - 在 Windows Azure 中创建网站时配置失败