sql - Azure 流分析查询返回 0 行

标签 sql json azure azure-stream-analytics

我有来自带有嵌套列表的 KEPServerEx 的数据,因此我需要 CROSS APPLY 将单个值从传入流发送到我的 blob。我利用这篇文章( iterate nested list in json msg by cql stream analytics )让查询运行了几分钟,但无法再获得正确的输出。

消息如下所示:

[
  {
    "timestamp": 1575933997508,
    "values": [
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 5,
        "q": 1,
        "t": 1575933987573
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 196,
        "q": 1,
        "t": 1575933988076
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 56,
        "q": 1,
        "t": 1575933988570
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 104,
        "q": 1,
        "t": 1575933989077
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 24,
        "q": 1,
        "t": 1575933989567
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 177,
        "q": 1,
        "t": 1575933990069
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 168,
        "q": 1,
        "t": 1575933990575
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 113,
        "q": 1,
        "t": 1575933991067
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 189,
        "q": 1,
        "t": 1575933991572
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 96,
        "q": 1,
        "t": 1575933992075
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 15,
        "q": 1,
        "t": 1575933992567
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 179,
        "q": 1,
        "t": 1575933993074
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 22,
        "q": 1,
        "t": 1575933993569
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 98,
        "q": 1,
        "t": 1575933994073
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 9,
        "q": 1,
        "t": 1575933994575
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 142,
        "q": 1,
        "t": 1575933995071
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 54,
        "q": 1,
        "t": 1575933995576
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 174,
        "q": 1,
        "t": 1575933996070
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 188,
        "q": 1,
        "t": 1575933996567
      },
      {
        "id": "Channel1.Device1.RANDOM1",
        "v": 45,
        "q": 1,
        "t": 1575933997073
      }
    ]
  }
]

我用来成功地将上述消息值列表拆分为各个值的查询是:

SELECT
    event.timestamp as messageTS,
    [values].ArrayValue.id,
    [values].ArrayValue.v,
    [values].ArrayValue.t as valueTS
FROM
    brewingmqtt AS event
CROSS APPLY getarrayelements(event.eachvalue) AS [values]

不幸的是,现在执行测试时返回 0 行,我无法弄清楚我缺少什么。

最佳答案

为什么要在 getArrayElements 函数中设置 eachvalue?您的示例数据表明它应该是[值]。我根据您的示例数据测试了 SQL,它对我有用。

SELECT
    event.timestamp as messageTS,
    [values].ArrayValue.id,
    [values].ArrayValue.v,
    [values].ArrayValue.t as valueTS
FROM
    brewingmqtt AS event
CROSS APPLY getarrayelements(event.[values]) AS [values]

输出:

enter image description here

关于sql - Azure 流分析查询返回 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59258554/

相关文章:

json - 解析json文件

azure - 有没有办法在 Azure 数据工厂中进行简单的字符串操作?

MYSQL:多个表的平均计数

php - 外键可以引用具有复合(即两列的组合)键的表吗?

java - 将数组参数绑定(bind)到 native 查询

Javascript 本地化错误

java - 如何为 jsonPath 匹配器正确转换 java 对象?

c# - 使用横向扩展应用程序在 VS 中进行 Azure 远程调试

c# - 阻止 NServiceBus 记录我的 Azure 存储连接字符串

c# - 3 带有 where 子句的表 LINQ 查询