BigQuery - ARRAY 数据类型

ARRAY 与 STRUCT

与允许包含不同类型的数据的 STRUCT 类型不同,ARRAY 数据类型必须包含相同类型的元素。

  • Python 等编程语言中,ARRAY(也称为列表)用括号表示:[ ]
  • STRUCT 类型可以包含其他结构(以创建高度嵌套的数据),ARRAY 不能包含另一个 ARRAY。
  • 但是,ARRAY 可以包含 STRUCT,因此开发人员可能会遇到嵌入了多个 STRUCT 的 ARRAY。

BigQuery 不会将列标记为显式ARRAY 类型。而是用不同的模式表示。虽然常规 STRING 类型具有"NULLABLE"模式,但 ARRAY 类型具有"REPEATED"模式。

ARRAY vs STRUCT

可以使用点选择 STRUCT 类型,但是 ARRAY 类型在表面级操作方面受到更多限制。

可以选择 ARRAY 作为分组元素:

选择 ARRAY

但是,使用点或任何其他方法选择数组元素是不可能的,因此这不起作用 −

选择 ARRAY

UNNEST() 函数

要从 store_information 中访问名称,必须执行一个额外的步骤:UNNEST(),该函数将扁平化数据,使其更易于访问。

UNNEST() 函数在 FROM 子句中与逗号一起使用。上下文:逗号代表隐式 CROSS JOIN。

要正确访问此 ARRAY,请使用以下查询 −

UNNEST() 函数

它将为您获取一个 输出 表,如下所示 −

UNNEST() 函数输出

除了使用 UNNEST(),还可以为记录设置别名。生成的别名 "wd" 随后可用于访问未嵌套的数据。