如何在流分析查询中连接查询的所有结果?

How to concat all the results of a query in Stream Analytics Query?

我有来自 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"
    }
  },
]

它将 return 3 条消息发送到我的输出,但我不希望那样。

如果 id 匹配,我想要 blob 中的所有数据,但实际上我想要它们全部 CONCAT 并成为一个数组。例如:

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

我在互联网上搜索并发现 GROUP CONCAT 但是流分析不支持。是否有任何其他替代解决方法可以实现同样的效果?

我重现你的测试数据:

据我所知,ASA 中没有 GROUP CONCAT 功能。其实ASA的输出是一个数组already.You可以在下载结果中验证:

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