2017-11-22 06:14:09 +00:00
|
|
|
|
<a name="functions_arrayjoin"></a>
|
|
|
|
|
|
2017-12-11 12:07:26 +00:00
|
|
|
|
# Функция arrayJoin
|
2017-10-25 05:27:09 +00:00
|
|
|
|
|
2017-03-12 17:58:51 +00:00
|
|
|
|
Это совсем необычная функция.
|
|
|
|
|
|
|
|
|
|
Обычные функции не изменяют множество строк, а лишь изменяют значения в каждой строке (map).
|
|
|
|
|
Агрегатные функции выполняют свёртку множества строк (fold, reduce).
|
|
|
|
|
Функция arrayJoin выполняет размножение каждой строки в множество строк (unfold).
|
|
|
|
|
|
|
|
|
|
Функция принимает в качестве аргумента массив, и размножает исходную строку в несколько строк - по числу элементов массива.
|
|
|
|
|
Все значения в столбцах просто копируются, кроме значения в столбце с применением этой функции - он заменяется на соответствующее значение массива.
|
|
|
|
|
|
2017-10-25 05:27:09 +00:00
|
|
|
|
В запросе может быть использовано несколько функций `arrayJoin`. В этом случае, соответствующее преобразование делается несколько раз.
|
2017-03-12 17:58:51 +00:00
|
|
|
|
|
|
|
|
|
Обратите внимание на синтаксис ARRAY JOIN в запросе SELECT, который предоставляет более широкие возможности.
|
|
|
|
|
|
|
|
|
|
Пример:
|
|
|
|
|
|
2017-10-25 05:27:09 +00:00
|
|
|
|
```sql
|
|
|
|
|
SELECT arrayJoin([1, 2, 3] AS src) AS dst, 'Hello', src
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
```text
|
|
|
|
|
┌─dst─┬─\'Hello\'─┬─src─────┐
|
|
|
|
|
│ 1 │ Hello │ [1,2,3] │
|
|
|
|
|
│ 2 │ Hello │ [1,2,3] │
|
|
|
|
|
│ 3 │ Hello │ [1,2,3] │
|
|
|
|
|
└─────┴───────────┴─────────┘
|
|
|
|
|
```
|