嵌套
Nested(name1 Type1, Name2 Type2, ...)
嵌套数据结构就像是单元格内的一个表。嵌套数据结构的参数——列名和类型——以与 CREATE TABLE 查询中相同的方式指定。每个表行可以对应嵌套数据结构中的任意数量行。
示例:
此示例声明了 Goals
嵌套数据结构,该结构包含有关转化(达成的目标)的数据。'visits' 表中的每一行可以对应零个或任意数量的转化。
当 flatten_nested 设置为 0
(默认情况下不是这样),支持任意层级的嵌套。
在大多数情况下,处理嵌套数据结构时,其列以点号分隔的列名指定。这些列构成了相同类型的数组。单个嵌套数据结构的所有列数组具有相同的长度。
示例:
想象嵌套数据结构为多个同长度列数组的集合是最简单的。
SELECT 查询中唯一可以指定整个嵌套数据结构名称而不是单独列的地方是 ARRAY JOIN 子句。有关更多信息,请参见“ARRAY JOIN 子句”。示例:
您不能对整个嵌套数据结构执行 SELECT。您只能显式列出其组成的单独列。
对于 INSERT 查询,您应该将嵌套数据结构的所有组件列数组单独传递(就像它们是单独的列数组一样)。在插入过程中,系统会检查它们的长度是否相同。
对于 DESCRIBE 查询,嵌套数据结构中的列以相同的方式单独列出。
嵌套数据结构元素的 ALTER 查询具有一定的限制。