Как объединить все результаты запроса в Stream Analytics Query? - PullRequest
1 голос
/ 19 апреля 2020

У меня есть вход из IoT Hub и опорный вход из хранилища 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 сообщения на мой вывод, но я не хочу этого.

Я хочу все данные в BLOB, если идентификатор совпадает, но Я на самом деле хочу, чтобы они все CONCAT и стали массивом. Например:

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

Я искал по inte rnet и нашел GROUP CONCAT, однако Stream Analytics это не поддерживает. Есть ли другой альтернативный обходной путь, который я могу сделать, чтобы достичь того же?

1 Ответ

1 голос
/ 20 апреля 2020

Я воспроизвожу ваши тестовые данные:

enter image description here

Насколько мне известно, в ASA нет функции GROUP CONCAT. На самом деле, выход ASA - это уже массив. Вы можете проверить это в результате загрузки:

enter image description here

Я тестировал с выводом Blob, и он показывает как массив. Если ваш вывод дает 3 строки, я предлагаю вам использовать Azure Выход функции , чтобы сначала принять массив, а затем выполнить следующие шаги передачи.

...