BigQuery 批量来源

本页面提供了有关如何在 Cloud Data Fusion 中配置 BigQuery 批量来源插件的指南。

借助 BigQuery 来源插件,您可以从 BigQuery 表连接和加载数据。BigQuery 表中的数据将导出到 Cloud Storage 中的临时位置,然后从该位置被读入流水线。

准备工作

Cloud Data Fusion 通常有两个服务帐号:

在使用 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 存储桶上分配此角色和这些权限。

配置插件

  1. 转到 Cloud Data Fusion 网页界面,然后点击 Studio
  2. 检查是否已选择 Data Pipeline - Batch(而非实时)。
  3. 来源菜单中,点击 BigQuery。BigQuery 节点随即会显示在您的流水线中。
  4. 如需配置来源,请转到 BigQuery 节点,然后点击属性
  5. 输入以下属性。如需查看完整列表,请参阅属性

    1. 为 BigQuery 节点输入标签,例如 BigQuery tables
    2. 输入连接详情。您可以设置新的一次性连接,也可以设置可重复使用的现有连接。

      新增关联项

      如需添加与 BigQuery 的一次性连接,请按以下步骤操作:

      1. 项目 ID 字段中,将值保留为“自动检测”。
      2. 如果 BigQuery 数据集位于其他项目中,请在数据集项目 ID 字段中输入该 ID。
      3. 服务帐号类型字段中,选择以下选项之一,然后在下一个字段中输入内容:

        • 文件路径
        • JSON

      可重复使用的连接

      要重复使用现有连接,请按以下步骤操作:

      1. 开启使用网络连接
      2. 点击浏览连接
      3. 点击连接名称,例如 BigQuery Default

      4. 可选:如果连接不存在,并且您想要创建新的可重复使用的连接,请点击添加连接,然后参阅本页面上新建连接标签页中的步骤。

    3. 引用名称字段中,输入用于沿袭的名称。

    4. 可选:如果实例中已有数据集,请点击浏览,然后选择要读取的数据。

    5. 数据集字段中,输入包含该表的数据集的名称。

    6. 字段中,输入表的名称。

    7. 如需测试连接,请点击获取架构

    8. 可选:在 Partition start date 字段中,输入包含的开始日期字符串,例如 2021-01-11

    9. 可选:在 Partition end date 字段中,输入包含边界的结束日期字符串,例如 2024-01-11

    10. 可选:在过滤条件字段中,输入 BigQuery WHERE 子句

    11. 可选:在临时存储桶名称字段中,输入 Cloud Storage 存储桶的名称。

    12. 可选:在加密密钥名称字段中,输入 Cloud Key Management Service (Cloud KMS) 加密密钥名称。如需了解详情,请参阅获取密钥的资源名称

    13. 可选:开启启用查询视图。如果要启用它们,请执行以下操作:

      • 临时表创建项目字段中,输入创建临时表的项目名称。
      • 临时表创建数据集字段中,输入创建临时表的数据集名称。
    14. 可选:点击验证,并解决发现的所有错误。

    15. 点击 Close。属性已保存,您可以继续在 Cloud Data Fusion 网页界面中构建数据流水线。

属性

属性 已启用宏 必需属性 说明
标签 数据流水线中节点的名称。
使用连接 浏览以查找可重复使用的来源连接。如需详细了解如何添加、导入和修改连接时显示的连接,请参阅管理连接
连接 如果 Use connection 处于开启状态,您选择的可重复使用的连接的名称将显示在此字段中。
项目 ID 仅在使用连接处于关闭状态时使用。运行 BigQuery 作业的项目的全局唯一标识符。
默认值为 auto-detect
数据集项目 ID 仅在使用连接关闭时使用。如果数据集不属于运行 BigQuery 作业的项目,则此值是包含 BigQuery 数据集的项目的全局唯一标识符。如果未指定值,则该字段默认为项目 ID 值。必须将 BigQuery Data Viewer 角色授予指定服务帐号才能读取项目的 BigQuery 数据。
服务帐号类型 从下列选项中选择一项:
  • 文件路径:服务帐号所在的路径。
  • JSON:服务账号的 JSON 内容。
服务账号文件路径 仅在服务账号类型值为文件路径时使用。用于授权的服务帐号密钥的本地文件系统上的路径。如果作业在 Dataproc 集群上运行,请将该值设置为自动检测。如果作业在其他类型的集群上运行,则该文件必须存在于集群中的每个节点上。
默认值为 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 视图,因此查询此类视图可能会产生性能开销。
默认值为“否”。
临时表创建项目 仅在启用查询视图处于启用状态时使用。应在其中创建临时表的项目名称。默认为表所属的项目。
临时表创建数据集 指定项目中应创建临时表的数据集。默认为表所在的同一数据集。
输出架构 要读取的表的架构。您可以通过点击获取架构来获取该架构。

数据类型映射

下表列出了具有相应 CDAP 类型的 BigQuery 数据类型。

BigQuery 数据类型 CDAP 架构数据类型
BOOL boolean
BYTES bytes
DATE date
DATETIME datetime, string
FLOAT64 double
GEO unsupported
INT64 long
NUMERIC decimal
BIGNUMERIC decimal
REPEATED array
STRING stringdatetime(ISO 8601 格式)
STRUCT record
TIME time(微秒)
TIMESTAMP timestamp(微秒)
JSON unsupported

后续步骤