Функция ArrayJoin
Это совсем необычная функция.
Обычные функции не изменяют множество строк, а лишь изменяют значения в каждой строке (map).
Агрегатные функции выполняют свёртку множества строк (fold, reduce).
Функция arrayJoin
выполняет размножение каждой строки в множество строк (unfold).
Функция принимает в качестве аргумента массив, и размножает исходную строку в несколько строк - по числу элементов массива. Все значения в столбцах просто копируются, кроме значения в столбце с применением этой функции - он заменяется на соответствующее значение массива.
Пример:
Функция arrayJoin
влияет на все секции запроса, включая секцию WHERE
. Обратите внимание на результат 2, хотя подзапрос вернул 1 строку.
Пример:
В запросе может быть использовано несколько функций arrayJoin
. В этом случае, соответствующее преобразование делается несколько раз и строки перемножаются.
Пример:
Обратите внимание на синтаксис ARRAY JOIN в запросе SELECT, который предоставляет более широкие возможности.
ARRAY JOIN
позволяет преобразовать несколько массивов с одинаковым количеством элементов за раз.
Пример:
Или можно использовать Tuple
Пример: