BigQuery - ARRAY 数据类型
ARRAY 与 STRUCT
与允许包含不同类型的数据的 STRUCT 类型不同,ARRAY 数据类型必须包含相同类型的元素。
- 在 Python 等编程语言中,ARRAY(也称为列表)用括号表示:[ ]。
- STRUCT 类型可以包含其他结构(以创建高度嵌套的数据),ARRAY 不能包含另一个 ARRAY。
- 但是,ARRAY 可以包含 STRUCT,因此开发人员可能会遇到嵌入了多个 STRUCT 的 ARRAY。
BigQuery 不会将列标记为显式ARRAY 类型。而是用不同的模式表示。虽然常规 STRING 类型具有"NULLABLE"模式,但 ARRAY 类型具有"REPEATED"模式。
可以使用点选择 STRUCT 类型,但是 ARRAY 类型在表面级操作方面受到更多限制。
可以选择 ARRAY 作为分组元素:
但是,使用点或任何其他方法选择数组元素是不可能的,因此这不起作用 −
UNNEST() 函数
要从 store_information 中访问名称,必须执行一个额外的步骤:UNNEST(),该函数将扁平化数据,使其更易于访问。
UNNEST() 函数在 FROM 子句中与逗号一起使用。上下文:逗号代表隐式 CROSS JOIN。
要正确访问此 ARRAY,请使用以下查询 −
它将为您获取一个 输出 表,如下所示 −
除了使用 UNNEST(),还可以为记录设置别名。生成的别名 "wd" 随后可用于访问未嵌套的数据。