BigQuery - STRUCT 数据类型

STRUCT 和 ARRAY 是开发人员在 BigQuery 的列式结构中存储嵌套数据的方式。

什么是结构?

STRUCT 是具有指定类型(必需)和字段名称(可选)的字段集合。值得注意的是,STRUCT 类型与 ARRAY 不同,它可以包含多种数据类型。

为了更好地理解 STRUCT 类型,请再看一下上一章中的示例,现在有一些变化。

"locations": [
{"store_no": 4, "employee_count": 15, "store_name": "New York 5th Ave"},
{"store_no": 5, "employee_count": 30, "store_name": "New York Lower Manh"}
]

虽然以前的"locations"是相同类型的dict(以 JSON 表示),但现在它包含两个类型为 <INTEGER, INTEGER, STRING> 的 STRUCT。

  • 尽管支持 STRUCT 类型,但 BigQuery 在表创建阶段没有可用的显式标签 STRUCT。
  • 相反,STRUCT 表示为具有 NULLABLE 模式的 RECORD。

注意 − 将 STRUCT 视为容器而不是专用数据类型。

在架构中定义时,STRUCT 内的元素将用"。"表示和选择。此处,模式 应为 −

{"locations", "RECORD", "NULLABLE"},
{"locations.store_no", "INTEGER", "NULLABLE},
{"locations.employee_count", "INTEGER", "NULLABLE"},
{"locations.store_name", "STRING", "NULLABLE"}

点符号

要选择 STRUCT 元素,必须在 FROM 子句中使用 点符号

点符号

执行查询时,您可能会得到类似这样的 输出

点符号