Array(T)
Массив элементов типа T
, с начальным индексом массива равным 1. T
может быть любым типом данных, включая массив.
Создание массива
Вы можете использовать функцию для создания массива:
Вы также можете использовать квадратные скобки.
Пример создания массива:
Работа с типами данных
При создании массива на лету, ClickHouse автоматически определяет тип аргумента как самый узкий тип данных, который может содержать все перечисленные аргументы. Если есть какие-либо Nullable или литеральные NULL значения, тип элемента массива также становится Nullable.
Если ClickHouse не смог определить тип данных, он генерирует исключение. Например, это происходит, когда вы пытаетесь создать массив со строками и числами одновременно (SELECT array(1, 'a')
).
Примеры автоматического определения типа данных:
Если вы попытаетесь создать массив из несовместимых типов данных, ClickHouse выбросит исключение:
Размер массива
Определить размер массива можно с помощью подстолбца size0
, не читая весь столбец. Для многомерных массивов вы можете использовать sizeN-1
, где N
- это нужное измерение.
Пример
Запрос:
Результат:
Чтение вложенных подстолбцов из массива
Если вложенный тип T
внутри Array
имеет подстолбцы (например, если это именованный кортеж), вы можете читать его подстолбцы из типа Array(T)
с одинаковыми именами подстолбцов. Тип подстолбца будет Array
оригинального типа подстолбца.
Пример