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