BigQuery - 复杂数据类型
BigQuery 除了支持"常规"数据类型(如 STRING、INTEGER 和 BOOLEAN)之外,还支持所谓的复杂数据。通常,这也被称为嵌套数据,因为数据不适合传统的平面表,必须存在于列的子集中。
复杂数据结构很常见
对嵌套架构的支持允许更简化的加载过程。尽管 Google Cloud 将以下数据类型的各种教程列为"高级",但嵌套数据非常常见。
了解如何扁平化和使用这些数据类型对于任何面向 SQL 的开发人员来说都是一项有用的技能。
这些数据结构很常见的原因是源数据(如 API 的 JSON 输出)通常以这种格式返回数据 −
[{data: "id": '125467", "name": "Acme Inc.", "locations": {"store_no": 4, "employee_count": 15}}]
- 请注意"id"和"name"都处于同一引用级别。可以使用"data"作为键来访问它们。
- 但是,要获取"store_no"等字段和"employee_count",则不仅需要访问数据键,还需要展平"locations"数组。
这就是 BigQuery 的复杂数据类型支持有用的地方。数据工程师无需编写脚本来迭代和取消嵌套"locations",而是可以将这些数据按原样加载到 BigQuery 表中。
BigQuery 中的复杂数据结构
BigQuery 支持以下三种类型的复杂或嵌套数据 −
- STRUCT
- ARRAY
- JSON
处理这些类型的策略将在下一章中解释。