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

处理这些类型的策略将在下一章中解释。