BigQuery - 数组数据类型



ARRAY 与 STRUCT 的比较

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

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

BigQuery 不会将列标记为显式的 ARRAY 类型。相反,它以不同的模式表示。常规的 STRING 类型具有“NULLABLE”模式,而 ARRAY 类型具有“REPEATED”模式。

ARRAY vs STRUCT

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

可以将 ARRAY 作为分组元素进行选择。

Select an ARRAY

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

Select an ARRAY

UNNEST() 函数

要访问 store_information 中的名称,需要执行一个额外的步骤:UNNEST(),这是一个将数据展平以使其更容易访问的函数。

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

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

The UNNEST() Function

它将为您获取如下所示的输出表 -

The UNNEST() Function Output

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

广告