在 Dataform 中创建和运行工作流
本快速入门面向希望在 BigQuery 中管理数据转换的数据工程师和数据分析师。在本快速入门中,您将学习如何使用 Dataform 核心(一种基于 SQL 的框架,用于将原始数据转换为经过整理、测试和记录的数据资产)创建和运行 Dataform 工作流。借助 Dataform,您可以在中央代码库中开发数据建模流水线并对其进行版本控制,从而确保可靠性和可伸缩性。
本快速入门将引导您完成以下 Dataform 流程,以创建工作流并在 BigQuery 中高效运转该工作流:
准备工作
- 登录您的 Google Cloud 账号。如果您是 Google Cloud新手,请 创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery and Dataform APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigQuery and Dataform APIs.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
所需的角色
如需获得执行本快速入门中的所有任务所需的权限,请让您的管理员为您授予以下 IAM 角色:
- 针对项目或代码库的 Dataform Admin (
roles/dataform.admin) - 项目或特定数据集的 BigQuery Data Editor (
roles/bigquery.dataEditor) 角色 - 项目的 BigQuery Job User (
roles/bigquery.jobUser) - 自定义服务账号的 Service Account User (
roles/iam.serviceAccountUser) 角色
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
授予必需的角色
如需在 BigQuery 中运行工作流,您可以使用自定义服务账号或您的 Google 账号。
您的自定义服务账号必须具有以下必需角色:
- BigQuery Data Editor (
roles/bigquery.dataEditor) 角色,用于 Dataform 需要同时具有读取和写入权限的项目或特定 BigQuery 数据集。这通常包括托管 Dataform 代码库的项目。 - Dataform 需要对项目或特定 BigQuery 数据集具有只读权限,因此您需要为这些项目或数据集授予 BigQuery Data Viewer (
roles/bigquery.dataViewer) 角色。 - BigQuery Job User (
roles/bigquery.jobUser) 角色,该角色针对的是托管 Dataform 代码库的项目。
如需让 Dataform 使用您的自定义服务账号,默认 Dataform 服务代理必须对自定义服务账号资源拥有以下角色:
- Service Account Token Creator
(
roles/iam.serviceAccountTokenCreator) - Service Account User
(
roles/iam.serviceAccountUser)
如需授予这些角色,请按照以下步骤操作:
在 Google Cloud 控制台中,前往 IAM 页面。
点击授予访问权限。
在新的主账号字段中,输入您的自定义服务账号 ID。
在选择角色菜单中,使用添加其他角色为每个额外角色逐一选择以下角色:
- BigQuery Data Editor
- BigQuery Data Viewer
- BigQuery Job User
点击保存。
在 Google Cloud 控制台中,打开服务账号页面。
选择您的自定义服务账号。
前往具有访问权限的正文,然后点击授予访问权限。
在新的主账号字段中,输入您的默认 Dataform 服务代理 ID。
默认 Dataform 服务代理 ID 采用以下格式:
service-PROJECT_NUMBER@gcp-sa-dataform.iam.gserviceaccount.com将
PROJECT_NUMBER替换为您的Google Cloud 项目的数字 ID。您可以在Google Cloud 控制台信息中心找到 Google Cloud 项目 ID。如需了解详情,请参阅查找项目名称、编号和 ID。在选择角色列表中,添加以下角色:
- Service Account User
- 服务账号令牌创建者
点击保存。
如需详细了解如何授予角色,请参阅向 Dataform 授予所需的访问权限。
创建 Dataform 仓库
Dataform 代码库是一种资源,表示包含 Dataform 项目代码的 Git 代码库,用于开发、版本控制和编排工作流。如需创建代码库,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往 BigQuery Dataform 页面。
点击 创建制品库。
在创建仓库页面上,执行以下操作:
在代码库 ID 字段中,输入
quickstart-repository。在区域列表中,选择
europe-west4。在服务账号列表中,为代码库选择一个自定义服务账号。
在 actAs 权限检查部分,强制对代码库的用户操作执行权限检查。
点击创建。
点击前往代码库。
您已成功创建 Dataform 代码库。接下来,您可以创建并初始化开发工作区。
API
如需创建代码库,请使用 projects.locations.repositories.create 方法。
使用以下信息运行 API 请求:
- 端点:
POST https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories - 查询参数:
repositoryId=REPOSITORY_ID
或者,在终端中运行以下 curl 命令:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{"serviceAccount": "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"}' \
"https://dataform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/repositories?repositoryId=REPOSITORY_ID"
替换以下内容:
PROJECT_ID:您要在其中创建 Dataform 代码库的Google Cloud 项目的唯一标识符。LOCATION:您希望在其中创建代码库的 Google Cloud 区域,例如europe-west4。REPOSITORY_ID:新 Dataform 代码库的唯一标识符,例如quickstart-repository。SERVICE_ACCOUNT_NAME:为运行 BigQuery 作业而创建的自定义服务账号的 ID。
创建并初始化开发工作区
Dataform 工作区是一个独立的开发环境(类似于 Git 分支),您可以在其中修改和编译代码。如需创建工作区,请选择以下选项之一:
控制台
在 Google Cloud 控制台中,前往 BigQuery Dataform 页面。