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"}

如果您只是添加列或更改现有列的类型,可以使用此查询生成现有表的模式:

[Generate schema query]

只需确保将结果设置为“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 命令行**是一个基于 Python 的命令行工具,与 Cloud Shell 兼容。

要创建表,需要将**“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

成功执行后,您将获得如下输出:

BigQuery Basic Schema Design

选择 Cloud Shell 而不是 UI 没有性能优势;这仅仅取决于用户偏好。但是,以这种方式创建表在创建循环或自动化流程时非常有用。

广告