Nested
Nested(name1 Type1, Name2 Type2, ...)
Вложенная структура данных подобна таблице внутри ячейки. Параметры вложенной структуры данных – имена колонок и типы – задаются так же, как в запросе CREATE TABLE. Каждая строка таблицы может соответствовать произвольному числу строк во вложенной структуре данных.
Пример:
Этот пример объявляет вложенную структуру данных Goals
, которая содержит данные оConversions (достигнутые цели). Каждая строка в таблице 'visits' может соответствовать нулю или любому количеству конверсий.
Когда flatten_nested установлено в 0
(что не является значением по умолчанию), поддерживаются произвольные уровни вложенности.
В большинстве случаев, работая с вложенной структурой данных, колонки указываются с именами колонок, разделенными точкой. Эти колонки составляют массив соответствующих типов. Все массивы колонок одной вложенной структуры данных имеют одинаковую длину.
Пример:
Проще всего представить вложенную структуру данных как набор нескольких массивов колонок одинаковой длины.
Единственное место, где запрос SELECT может указать имя всей вложенной структуры данных вместо отдельных колонок – это оператор ARRAY JOIN. Для получения дополнительной информации см. "ARRAY JOIN clause". Пример:
Невозможно выполнить SELECT для всей вложенной структуры данных. Можно только явно указать отдельные колонки, которые являются её частью.
Для запроса INSERT вы должны передать все массивы колонок, составляющие вложенную структуру данных, отдельно (как если бы они были отдельными массивами колонок). Во время вставки система проверяет, чтобы они имели одинаковую длину.
Для запроса DESCRIBE колонки во вложенной структуре данных перечисляются отдельно таким же образом.
Запрос ALTER для элементов во вложенной структуре данных имеет ограничения.