mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-16 20:53:27 +00:00
13b292865f
* Split create.md into separated files * Fixed links * Fixed a typo * Fixed links * Fixed link Co-authored-by: Anna Devyatova <annadevyatova@yandex-team.ru>
4.6 KiB
4.6 KiB
toc_priority |
---|
112 |
groupArrayInsertAt
Вставляет значение в заданную позицию массива.
Синтаксис
groupArrayInsertAt(default_x, size)(x, pos);
Если запрос вставляет вставляется несколько значений в одну и ту же позицию, то функция ведет себя следующим образом:
- Если запрос выполняется в одном потоке, то используется первое из вставляемых значений.
- Если запрос выполняется в нескольких потоках, то в результирующем массиве может оказаться любое из вставляемых значений.
Параметры
x
— Значение, которое будет вставлено. Выражение, возвращающее значение одного из поддерживаемых типов данных.pos
— Позиция, в которую вставляется заданный элементx
. Нумерация индексов в массиве начинается с нуля. UInt32.default_x
— Значение по умолчанию для подстановки на пустые позиции. Опциональный параметр. Выражение, возвращающее значение с типом параметраx
. Еслиdefault_x
не определен, используются значения по умолчанию.size
— Длина результирующего массива. Опциональный параметр. При использовании этого параметра должно быть указано значение по умолчаниюdefault_x
. UInt32.
Возвращаемое значение
- Массив со вставленными значениями.
Тип: Array.
Примеры
Запрос:
SELECT groupArrayInsertAt(toString(number), number * 2) FROM numbers(5);
Результат:
┌─groupArrayInsertAt(toString(number), multiply(number, 2))─┐
│ ['0','','1','','2','','3','','4'] │
└───────────────────────────────────────────────────────────┘
Запрос:
SELECT groupArrayInsertAt('-')(toString(number), number * 2) FROM numbers(5);
Результат:
┌─groupArrayInsertAt('-')(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2','-','3','-','4'] │
└────────────────────────────────────────────────────────────────┘
Запрос:
SELECT groupArrayInsertAt('-', 5)(toString(number), number * 2) FROM numbers(5);
Результат:
┌─groupArrayInsertAt('-', 5)(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2'] │
└───────────────────────────────────────────────────────────────────┘
Многопоточная вставка элементов в одну позицию.
Запрос:
SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;
В результат этого запроса мы получите случайное целое число в диапазоне [0,9]
. Например:
┌─groupArrayInsertAt(number, 0)─┐
│ [7] │
└───────────────────────────────┘