如何在流分析查询中合并查询的所有结果?

问题描述 投票:1回答:1

我有来自IoT中心的输入和来自Blob存储的参考输入。我想结合我将IoTHubInput.id与BlobStorageInput.id匹配时发现的所有结果。

当前查询看起来像这样:

   SELECT Blob
   FROM iothub IoTHub
   JOIN blob Blob
   ON IoTHub.id = Blob.deviceId

此查询的结果如下:

[
  {
    "blob": 
    {
        "deviceId": "test001",
        "data": "Sample1"
    }
  },
  {
    "blob": 
    {
        "deviceId": "test002",
        "data": "Sample2"
    }
  },
  {
    "blob": 
    {
        "deviceId": "test003",
        "data": "Sample3"
    }
  },
]

它将在我的输出中返回3条消息,但我不想要。

如果ID匹配,我希望Blob中的所有数据,但实际上我希望它们全部CONCAT并成为一个数组。例如:

[
    {
        "deviceId": "test001",
        "data": "Sample1"
    },
    {
        "deviceId": "test002",
        "data": "Sample2"
    },
    {
        "deviceId": "test003",
        "data": "Sample3"
    }
]

我在互联网上搜索后发现GROUP CONCAT,但Stream Analytics不支持。我还有其他替代解决方法可以达到相同的效果吗?

sql azure azure-stream-analytics
1个回答
1
投票

我复制您的测试数据:

enter image description here

据我所知,ASA中没有GROUP CONCAT功能。实际上,ASA的输出已经是一个数组。您可以在下载结果中对其进行验证:

enter image description here

我测试了Blob输出,并显示为数组。如果您的输出产生3行,建议您先使用Azure Function Output接受该数组,然后再进行下一步传输。

© www.soinside.com 2019 - 2024. All rights reserved.