- BigQuery 教程
- BigQuery - 首页
- BigQuery - 概述
- BigQuery - 初始设置
- BigQuery 与本地 SQL 引擎的比较
- BigQuery - Google Cloud Console
- BigQuery - Google Cloud 层次结构
- 什么是 Dremel?
- 什么是 BigQuery Studio?
- BigQuery - 数据集
- BigQuery - 表
- BigQuery - 视图
- BigQuery - 创建表
- BigQuery - 基础架构设计
- BigQuery - 修改表
- BigQuery - 复制表
- 删除和恢复表
- BigQuery - 填充表
- 标准 SQL 与传统 SQL 的区别
- BigQuery - 编写第一个查询
- BigQuery - CRUD 操作
- 分区和聚类
- BigQuery - 数据类型
- BigQuery - 复杂数据类型
- BigQuery - STRUCT 数据类型
- BigQuery - ARRAY 数据类型
- BigQuery - JSON 数据类型
- BigQuery - 表元数据
- BigQuery - 用户自定义函数
- 连接外部数据源
- 集成定时查询
- 集成 BigQuery API
- BigQuery - 集成 Airflow
- 集成连接的表格
- 集成数据传输
- BigQuery - 物化视图
- BigQuery - 角色和权限
- BigQuery - 查询优化
- BigQuery - BI 引擎
- 监控使用情况和性能
- BigQuery - 数据仓库
- 挑战与最佳实践
- BigQuery 资源
- BigQuery - 快速指南
- BigQuery - 资源
- BigQuery - 讨论
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
成功执行后,您将获得如下输出:
选择 Cloud Shell 而不是 UI 没有性能优势;这仅仅取决于用户偏好。但是,以这种方式创建表在创建循环或自动化流程时非常有用。