借助 BigQuery 源插件,您可以连接到 BigQuery 表并从中加载数据。系统会将 BigQuery 表中的数据导出到 Cloud Storage 中的某个临时位置,然后从该位置将数据读取到流水线中。
准备工作
Cloud Data Fusion 通常有两个服务账号:
- 设计时服务账号:Cloud Data Fusion API Service Agent
- 执行时服务账号:Compute Engine 服务账号
在使用 BigQuery 批量来源插件之前,请向每个服务账号授予以下角色或权限。
Cloud Data Fusion API Service Agent
此服务账号已拥有所有必要权限,您无需添加其他权限。仅供参考,该角色具有以下权限:
bigquery.datasets.get
bigquery.tables.create
bigquery.tables.get
bigquery.tables.updateData
bigquery.tables.update
bigquery.tables.export
如果您除了默认的设计时服务账号之外还使用了命名空间服务账号,请向其添加上方列表中的权限。
Compute Engine 服务账号
在您的 Google Cloud 项目中,向 Compute Engine 服务账号授予以下 IAM 角色或权限:
- BigQuery Job User (
roles/bigquery.jobUser
)。此预定义角色包含所需的bigquery.jobs.create
权限。 BigQuery Data Editor (
roles/bigquery.dataEditor
)。此预定义角色包含以下必需权限:bigquery.datasets.get
bigquery.tables.create
bigquery.tables.get
bigquery.tables.updateData
bigquery.tables.update
bigquery.tables.export
您还可以在 BigQuery 数据集或表上分配这些角色和权限,具体取决于您的用例。
Storage Legacy Bucket Writer (
roles/storage.legacyBucketWriter
)。此预定义角色包含以下必要权限:storage.buckets.get
storage.objects.get
storage.objects.list
您还可以在 Cloud Storage 存储分区上分配此角色和这些权限,具体取决于您的用例。
配置插件
- 前往 Cloud Data Fusion 网页界面,然后点击 Studio。
- 检查是否已选择 Data Pipeline - Batch(而不是 Realtime)。
- 在来源菜单中,点击 BigQuery。BigQuery 节点会显示在流水线中。
- 如需配置该来源,请前往 BigQuery 节点,然后点击属性。
输入以下属性。如需查看完整列表,请参阅属性。
- 为 BigQuery 节点输入一个标签,例如
BigQuery tables
。 输入连接详情。您可以设置新的一次性连接,也可以设置现有的可重复使用连接。
新增关联项
如需向 BigQuery 添加一次性连接,请按以下步骤操作:
- 在项目 ID 字段中,将值保留为“自动检测”。
- 如果 BigQuery 数据集位于其他项目中,请在数据集项目 ID 字段中输入相应 ID。
在服务账号类型字段中,选择以下选项之一,然后在下一个字段中输入相应内容:
- 文件路径
- JSON
可重复使用的连接
如需重复使用现有连接,请按以下步骤操作:
- 开启使用连接。
- 点击浏览连接。
点击连接名称,例如 BigQuery 默认。
可选:如果不存在关联,并且您想创建新的可重复使用关联,请点击添加关联,然后参阅本页面新关联标签页中的步骤。
在参考名称字段中,输入要用于谱系的名称。
可选:如果您的数据集已在您的实例中提供,请点击浏览,然后选择要读取的数据。
在数据集字段中,输入包含该表的数据集的名称。
在表字段中,输入表的名称。
如需测试连接,请点击获取架构。
可选:在分区开始日期字段中,输入包含开始日期的字符串,例如
2021-01-11
。可选:在分区结束日期字段中,输入包含结束日期的字符串,例如
2024-01-11
。可选:在过滤字段中,输入 BigQuery
WHERE
子句。可选:在临时存储分区名称字段中,输入 Cloud Storage 存储分区的名称。
可选:在加密密钥名称字段中,输入 Cloud Key Management Service (Cloud KMS) 加密密钥名称。如需了解详情,请参阅获取密钥的资源名称。
可选:开启启用查询视图。如果您启用这些功能,请执行以下操作:
- 在临时表创建项目字段中,输入创建临时表的项目名称。
- 在临时表创建数据集字段中,输入要创建临时表的数据集名称。
可选:点击验证,然后解决发现的所有错误。
点击
关闭。系统会保存属性,然后您可以在 Cloud Data Fusion 网页界面中继续构建数据流水线。
- 为 BigQuery 节点输入一个标签,例如
属性
属性 | 已启用宏 | 必需属性 | 说明 |
---|---|---|---|
标签 | 否 | 是 | 数据流水线中相应节点的名称。 |
使用连接 | 否 | 否 | 浏览可重复使用的来源连接。如需详细了解如何添加、导入和修改浏览连接时显示的连接,请参阅管理连接。 |
连接 | 是 | 是 | 如果使用连接处于开启状态,您选择的可重复使用连接的名称会显示在此字段中。 |
项目 ID | 是 | 否 | 仅在使用连接处于关闭状态时使用。BigQuery 作业运行所在项目的全球唯一标识符。 默认为 auto-detect 。 |
数据集项目 ID | 是 | 否 | 仅在使用连接处于关闭状态时使用。如果数据集位于与运行 BigQuery 作业的项目不同的项目中,此值为包含 BigQuery 数据集的项目的全局唯一标识符。如果未指定任何值,则该字段默认为 Project ID 值。必须向指定的服务账号授予 BigQuery Data Viewer 角色,才能读取项目中的 BigQuery 数据。 |
服务账号类型 | 是 | 否 | 从下列选项中选择一项:
|
服务账号文件路径 | 是 | 否 | 仅当服务账号类型值为文件路径时使用。用于授权的服务账号密钥在本地文件系统中的路径。如果作业在 Dataproc 集群上运行,请将此值设置为“auto-detect”。如果作业在其他类型的集群上运行,该文件必须存在于集群中的每个节点上。 默认值为 auto-detect 。 |
服务账号 JSON | 是 | 否 | 仅当服务账号类型值为 JSON 时使用。 服务账号的 JSON 文件内容。 |
参考名称 | 否 | 是 | 用于唯一标识此来源以便其他服务(例如沿袭和注释元数据)使用。 |
数据集 | 是 | 是 | 表所属的数据集。数据集包含在特定项目中。数据集是用来组织和控制表和视图访问权限的顶级容器。 |
表格 | 是 | 是 | 要读取的表。表包含按行整理的各条记录。每条记录都由列(也称为字段)组成。每个表由描述列名、数据类型和其他信息的架构进行定义。 |
分区开始日期 | 是 | 否 | 包含分区起始日期(指定为 yyyy-mm-dd )。如果未指定任何值,系统将读取截至分区结束日期的所有分区。 |
分区结束日期 | 是 | 否 | 不含边界值的分区结束日期,指定为 yyyy-mm-dd 。如果未指定任何值,则系统会读取从分区开始日期起的所有分区。 |
过滤 | 是 | 否 | 用于按给定条件进行过滤的 SQL 查询。例如,以下查询会返回 Roster 表中 SchoolID 列值为 SchoolID > 52 的所有行:SELECT * FROM Roster WHERE SchoolID > 52; 。这与 BigQuery 中的 WHERE 子句相同。 |
临时存储分区名称 | 是 | 否 | 用于存储临时数据的 Cloud Storage 存储分区。如果该配置文件不存在,则系统会自动创建一个。临时数据会在读取后被删除。如果未提供名称,系统会创建唯一存储分区,然后在运行完成后将其删除。 |
加密密钥名称 | 是 | 否 | 用于加密写入由插件创建的任何存储分区的数据的密钥。如果存储分区已存在,系统会忽略此值。如需了解详情,请参阅 CMEK。 |
启用查询视图 | 是 | 否 | 是否允许 BigQuery 逻辑视图和具体化视图。由于 BigQuery 视图默认处于停用状态,因此查询它们可能会产生性能开销。 默认值为“否”。 |
临时表创建项目 | 是 | 否 | 仅当启用查询视图处于开启状态时才使用。应在其中创建临时表的项目名称。默认为表所在的项目。 |
临时表创建数据集 | 是 | 否 | 应在其中创建临时表的指定项目中的数据集。默认为表所在的数据集。 |
输出架构 | 是 | 是 | 要读取的表的架构。您可以点击获取架构来提取该架构。 |
数据类型映射
下表列出了 BigQuery 数据类型及其对应的 CDAP 类型。
BigQuery 数据类型 | CDAP 架构数据类型 |
---|---|
BOOL |
boolean |
BYTES |
bytes |
DATE |
date |
DATETIME |
datetime, string |
FLOAT64 |
double |
GEO |
unsupported |
INT64 |
long |
NUMERIC |
decimal |
BIGNUMERIC |
decimal |
REPEATED |
array |
STRING |
string 、datetime (ISO 8601 格式) |
STRUCT |
record |
TIME |
time (微秒) |
TIMESTAMP |
timestamp (微秒) |
JSON |
unsupported |
后续步骤
- 详细了解 Cloud Data Fusion 中的插件。