BigQuery - 基本架构设计
与 Excel 电子表格不同,SQL 表不会自动接受所呈现的数据。数据源和表必须就数据的范围和类型达成一致,然后才能成功提取数据。类型必须一致,并且采用 BigQuery 可以解析并在 BigQuery Studio 中提供的格式。
什么是架构?
为此,开发人员必须提供架构。本质上,架构是属性及其对应类型的有序列表。
在 BigQuery 中,列顺序和列数很重要,因此任何提供的架构都必须与源表的架构相匹配。
指定架构的三种方法
在 BigQuery 中,有三种指定架构的方法 −
- 在"创建表"步骤期间在 UI 中创建架构。
- 以 JSON 文本文件的形式编写或上传架构。
- 告诉 BigQuery 自动推断架构。
自动推断架构
虽然自动推断架构对于开发人员来说是最少的工作,但这也会给数据管道带来最大的风险。
即使数据类型在一次运行时是一致的,它们也可能会发生变化意外地。如果没有固定的架构,BigQuery 必须"弄清楚"要接受哪种数据类型,这可能会导致架构不匹配错误。
创建架构的 UI 方法
由于创建架构的 UI 方法相当直观,下一部分将重点介绍如何将架构创建为 JSON 文件。
将架构创建为 JSON 文件
JSON 架构的格式是列表"[ ]"内的字典"{ }"。每个字段可以有三个属性 −
- 字段名称
- 列类型
- 列模式
默认列模式为"NULLABLE",这意味着该列接受 NULL 值。在讨论嵌套数据类型时将介绍其他列模式。
一行 JSON 架构的示例如下 −
{"name": "id", "type": "STRING", "mode": "NULLABLE"}
如果您只是添加一列或更改现有列的类型,则可以使用此查询生成现有表的架构 −
[生成架构查询]
只需确保结果设置为"JSON"即可复制/下载生成的 JSON 文件。
GCP Cloud Shell:创建表
Cloud Shell 是 Google Cloud Platform 的命令行界面 (CLI) 工具,允许用户直接从终端窗口与数据源交互。就像可以使用 GCP Console 中的 BigQuery UI 创建表一样,也可以通过 CLI 使用类似 Linux 的语法快速创建表。
与在本地机器上配置 CLI 不同,只要您登录 Google 帐户,就会自动登录 Cloud Shell,因此可以在终端中与 BigQuery 资源进行交互。也可以(但更复杂)在本地 IDE 中配置 gcloud CLI。
"bq"命令行
无论哪种情况,BigQuery cloud shell 集成都取决于一个命令:bq。 bq 命令行 是一个与 Cloud Shell 兼容的基于 Python 的命令行工具。
要创建表,需要将 "bq" 与 "mk" 结合使用 −
--bq mk
此语法与 "–table"或"-t"标志结合使用。还有指定多个参数的选项,就像在 BigQuery UI 中创建表时一样。
可用的参数包括 −
- 过期规则(过期时间,以秒为单位)
- 描述
- 标签
- 添加标签(策略标签)
- 项目 ID
- 数据集 ID
- 表名称
- 架构
以下是示例 −
注意 −提供了内联模式。
Bq mk -t sample_dataset.bikeshare_table_cli name:STRING,station_id:STRING,modified_date:TIMESTAMP
成功执行后,您将获得类似这样的输出 −
选择 Cloud Shell 而不是 UI 时,性能没有优势;这完全取决于用户偏好。但是,在创建重复或自动化流程时,以这种方式创建表会很有用。