使用迁移沿袭规划迁移
在规划 BigQuery 数据仓库迁移时,您可以使用迁移沿袭服务直观呈现源数据库中的数据流和连接。
创建迁移沿袭后,沿袭服务会提供一个图表,直观呈现数据在源系统中的移动方式,以及源系统中每个表或视图的连接方式,如下图所示:
迁移沿袭服务支持以下 SQL 方言:
- Amazon Redshift SQL
- Snowflake SQL
- Teradata SQL
- GoogleSQL (BigQuery)
限制
沿袭服务会处理源数据库中最旧日志的前 5 GB。
支持的位置
迁移沿袭服务仅在部分位置提供。如需了解详情,请参阅 BigQuery SQL 转换器和沿袭服务位置。
所需权限
如需获得使用迁移沿袭服务所需的权限,请让您的管理员为您授予项目的 MigrationWorkflow Editor (roles/bigquerymigration.editor) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含使用迁移沿袭服务所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需使用迁移沿袭服务,您需要拥有以下权限:
-
bigquerymigration.workflows.create -
bigquerymigration.workflows.get -
bigquerymigration.lineageDbs.query
如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅 BigQuery IAM 角色和权限。
跟踪迁移沿袭
如需跟踪迁移沿袭,您首先需要运行 dwh-migration-dumper 工具,以生成要上传到 Cloud Storage 的源输入 SQL 日志文件。将输入文件上传到 Cloud Storage 后,您可以使用 Google Cloud 控制台或 BigQuery Migration API 跟踪迁移沿袭。
运行 dwh-migration-dumper 工具
从下列选项中选择一项:
Amazon Redshift
如需在 Amazon Redshift 数据库上跟踪和查看迁移沿袭,请执行以下操作:
- 运行
dwh-migration-dumper工具,生成源系统文件的转储。 - 将查询日志上传到 Cloud Storage。
Snowflake
如需在 Snowflake 数据库上跟踪和查看迁移沿袭,请执行以下操作:
- 运行
dwh-migration-dumper工具,生成源系统文件的转储。 - 将查询日志上传到 Cloud Storage。
TeraData
如需在 Teradata 数据库上跟踪和查看迁移沿袭,请执行以下操作:
- 运行
dwh-migration-dumper工具,生成源系统文件的转储。 - 将查询日志上传到 Cloud Storage。
BigQuery
如需在 BigQuery 数据库上跟踪和查看迁移沿袭,请执行以下操作:
- 向账号或服务账号授予以下角色:
- BigQuery Metadata Viewer (
roles/bigquery.metadataViewer) - Data Catalog Viewer (
roles/datacatalog.viewer)
- BigQuery Metadata Viewer (
- 安装
dwh-migration-dumper工具。 如需生成元数据和查询日志,请运行
dwh-migration-dumper工具。 这些元数据和查询日志包含在一个或多个 ZIP 文件中。dwh-migration-dumper --connector bigquery dwh-migration-dumper --connector bigquery-logs
将 ZIP 文件上传到 Cloud Storage 存储桶。如需详细了解如何创建存储桶并将文件上传到 Cloud Storage,请参阅创建存储桶和从文件系统上传对象。
跟踪沿袭
将包含元数据和查询日志的 ZIP 文件上传到 Cloud Storage 后,您可以跟踪沿袭。选择以下某个选项:
控制台
前往您的迁移服务页面。
在跟踪沿袭下,点击跟踪转换。
在谱系配置下,输入以下内容:
- 在显示名称部分,指定沿袭作业的名称。名称可以包含字母、数字或下划线。
- 在处理位置部分,选择要运行沿袭作业的位置。
在修改输入目录位置部分,指定包含您之前上传的日志 ZIP 文件的 Cloud Storage 文件夹的路径。您可以按
bucket_name/folder_name/格式输入路径,也可以点击浏览。您还可以在输出子目录名称字段中为输出文件的子目录命名。您可以点击添加输入目录位置,以添加更多输入文件。
点击 Trace。
沿袭作业现已运行。该作业可能需要几个小时才能完成,具体取决于输入大小。作业完成后,该工具会提供一个指向跟踪的迁移沿袭的链接。
API
如需跟踪沿袭作业,请运行以下 curl 命令:
curl -d "{ \"tasks\": { \"TASK_NAME\": { \"type\": \"Experimental_Lineage\", \"translation_details\": { \"target_base_uri\": \"BUCKET_PATH\", \"source_target_mapping\": { \"source_spec\": { \"base_uri\": \"BUCKET_PATH\" } }, \"target_types\": \"LINEAGE\" } } } } " \ -H "Content-Type:application/json" \ -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows
替换以下内容:
TASK_NAME:用于标识此沿袭作业的名称。BUCKET_PATH:包含输入 ZIP 文件的 Cloud Storage 存储桶的路径。PROJECT_ID:Google Cloud 项目的项目 ID。LOCATION:处理位置。此值必须为eu或us。
此调用会返回类似于以下内容的消息:
{ "name": "projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID", "tasks": { "task_name": { /*...*/ } }, "state": "RUNNING" }
沿袭作业现已运行。该作业可能需要几个小时才能完成,具体取决于输入大小。如需检查沿袭作业的状态,请运行以下带有工作流 ID 的 curl 命令:
curl \ -H "Content-Type:application/json" \ -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID
作业完成后,该工具会提供一个指向跟踪的沿袭视图的链接。
打开迁移沿袭
跟踪迁移沿袭后,您可以使用以下选项之一打开迁移沿袭:
控制台
前往您的迁移服务页面。
在跟踪沿袭下,点击查看近期沿袭。
在迁移沿袭页面上,点击作业名称以选择完整的沿袭作业。
在转换详情页面上,点击数据沿袭。
API
如需打开已完成的迁移沿袭,请使用 BigQuery Migration API 运行以下 curl 命令:
curl \ -H "Content-Type:application/json" \ -H "Authorization:Bearer " -X GET https://bigquerymigration.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID
替换以下内容:
PROJECT_ID:Google Cloud 项目的项目 ID。LOCATION:处理位置。此值必须为eu或us。WORKFLOW_ID:跟踪的沿袭的工作流 ID。
前往输出消息的 taskResult.translationTaskResult.consoleUri 字段中包含的链接。
使用迁移沿袭
以下部分介绍了如何使用迁移沿袭来处理源数据和数据库。
了解迁移沿袭术语
迁移沿袭中使用以下术语:
| 条款 | 说明 |
|---|---|
| 脚本 | 在沿袭构建期间提取的数据库日志中可见的 SQL 脚本和其他程序。脚本由语句组成,最常见的是单个 SQL 语句。 |
| 节点 | 沿袭图的顶点。这些数据由表和列组成。 |
| 表 | 也称为“关系”,包括普通表、视图、结构化文件和其他类似表的资源。 |
| Columns | 也称为属性,包括表列、视图投影、伪列、文件和其他资源中类似列的字段,以及结构体字段等子列。 |
| 边缘 | 沿袭节点之间的连接,表示由于流水线执行读取或写入这些节点的脚本而产生的交互。边带有时间戳、谓词和其他元数据,这些元数据来自边派生时。通过边与另一个节点相邻的节点称为直接连接;两个节点之间的边路径称为间接连接。 |
| 沿袭边缘 | 有向边,表示源节点包含在影响目标节点数据的子句(例如 FROM、WHERE 或 GROUP BY 子句)中。 |
| 用户和流水线 | 源数据库提供的有关谁执行了脚本以及执行了什么脚本的元数据标签。它们对沿袭引擎没有固有含义,但用于按来源将脚本分组在一起。 |
以下部分介绍了迁移沿革中的不同页面。
检查着陆页
迁移沿袭的着陆页会显示沿袭作业的 ID、用于按名称查找沿袭对象的搜索字段,以及突出显示一些可能感兴趣的沿袭对象的建议列表。该页面还包含整个迁移沿袭中的表、流水线和用户的总数。
如需前往特定表、视图或列,请在搜索字段中搜索对象,或点击着陆页上的某个建议对象。
查看节点页面
如需查看迁移沿革中的节点,请点击以下标签页之一。
“数据流”标签页
数据流标签页会直观呈现沿袭图的一部分。当您首次在沿袭服务中查看表或列时,系统会默认显示此页面。该图表直观地展示了数据在源系统中的移动方式。此图中的节点表示表或视图,而节点之间的边表示数据从左侧节点流向右侧节点。
数据流图中的每个表都会显示其非限定名称。如需查看表的完全限定名称(包含数据库和架构前缀),请将指针悬停在节点上以显示其提示。每个表都通过节点上的竖条来指示其架构。沿袭中的所有架构均按字母顺序排序,并分配有颜色,因此同一架构中的表具有相同颜色的条形,而名称相似的架构中的表具有颜色相似的条形。
每个节点都会显示一个图标,用于指示节点的属性:
- monitor:视图,而不是表。
- cached:始终完全刷新(截断,然后重写)的表。点击该图标可查看此表旁边的脚本。
- 缓存:不总是完全刷新(截断,然后重写)的表。点击此图标可查看此表格旁边的脚本。
- timer:一个生命周期较短的表。将指针悬停在图标上,即可查看表存在的时间。
- snowflake:上次写入时间超过 7 天的表,这表明该表包含静态数据或不经常写入的数据。
如需查看数据流图中的对象,请执行以下操作:
- 如需查看表列的列表,请点击相应表。此视图包含每列的名称及其数据类型,这些信息是根据提供的元数据转储确定的,或根据查询日志中显示的 SQL 推导出的。
- 如需查看某个列的列级沿袭图,请点击该列。在列级沿袭图中,边表示影响目标列的数据流。
如需查看边缘的详细信息,请点击图表中的边缘。此视图包含指向导致该边的 SQL 脚本的链接。
当 SQL 语句在计算插入到目标节点的数据时引用源节点,系统会生成从源节点到目标节点的边。通常,这涉及将数据从来源转移到目标,但如果来源节点在影响目标的
WHERE或GROUP BY子句中使用,数据流标签页也会显示一条边。如需仅过滤数据传输,请切换工具栏中的显示非数据边缘按钮。
“连接”标签页
沿袭节点的连接标签页会显示沿袭图表中附近节点的列表。默认情况下,连接的节点会按从当前节点出发的最短路径距离进行排序,即从当前节点出发所需边缘较少的节点会排在前面。您可以使用排序选项更改排序。
默认情况下,连接列表包含当前节点的上游(提供方)和下游(使用方)节点。您可以使用类型控件更改此过滤条件。在距离列中,当前节点上游的节点会显示一个向上箭头,以及从当前节点到该节点的最短反向路径的距离;同样,当前节点下游的节点会显示一个向下箭头,以及从当前节点到该节点的最短正向路径的距离。如果节点是循环的一部分,则它可以同时位于当前节点的上游和下游。
如需下载包含所有显示节点的文件,请点击下载 CSV
用户标签
节点的用户标签页会显示运行脚本来读取或写入该节点或其上游或下游节点的用户。默认情况下,执行了最多单独操作的用户会列在最前面。您可以使用排序选项更改排序。
如需下载包含所有显示的用户的文件,请点击下载 CSV。
“流水线”标签页
节点的流水线标签页会显示运行脚本的流水线,这些脚本读取或写入该节点或其上游或下游节点。默认情况下,执行了最多单独操作的流水线会列在最前面。您可以使用排序选项更改排序。
如需下载包含所有显示的流水线的文件,请点击下载 CSV。
代码标签页
节点的代码标签页会显示在输入文件中看到的所有 SQL 脚本,这些脚本从该节点读取数据或向该节点写入数据。SQL 文本中会突出显示提及该节点的内容。点击脚本即可展开全文。您可以更改过滤条件设置,以过滤显示的脚本列表。
如需下载包含所有显示的脚本的文件,请点击下载 CSV。
查看边缘页面
如需查看沿袭图中的节点边缘,请点击以下标签页之一。
“详情”标签页
边的详细信息标签页会显示谓词和类别,用于描述导致该边的脚本所执行的操作。
谓词表示为由连字符分隔的三部分代码。第一部分是 r(表示边缘的来源是关系)或 a(表示边缘的来源是属性)。第二部分是以下缩写之一,表示源节点影响目标节点中数据的方式:
has:源关系包含目标属性。dat:源会将数据复制或转移到目标。res:源在WHERE、HAVING或JOIN ON等子句中过滤或限制目标的基数。grp:来源在影响目标的GROUP BY子句中使用。
第三部分也是 r 或 a,表示边的目标是关系还是属性。
边缘类别可能包括:
dat个谓词:AGGREGATE:源用于写入目标的汇总计算。EXACT_COPY:源中的数据已完整复制到目标。FUNCTION:源用于计算目标。IDENTITY_COPY:未计算目标。目标是源的字面量副本,没有任何类型转换。PARTITION_PROMOTION:目标包含来自源的数据,这是将源的分区提升到目标的结果。WEAK_COPY:来源中的数据至少部分复制到了目标。
res个谓词:FILTER:在写入目标的比较中使用了来源。KEY:来源中的数据在写入目标的联接比较中用作键。
grp个谓词:GROUP:来自来源的数据在影响目标的GROUP BY子句中用作键。
代码标签页
边的代码标签页会显示导致该边的 SQL 脚本。边缘的来源节点和目标节点在 SQL 文本中提及的位置会突出显示。
后续步骤
- 运行迁移评估,以评估将数据仓库迁移到 BigQuery 的可行性和潜在优势。
- 使用 SQL 转换服务(例如交互式 SQL 转换器、Translation API 和批量 SQL 转换器)自动将 SQL 查询转换为 GoogleSQL,包括 Gemini 增强型 SQL 自定义。