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 子句中使用 点符号 −
执行查询时,您可能会得到类似这样的 输出 −