规划具有迁移沿袭的迁移

在规划 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 工具来生成源输入 SQL 日志文件,然后将这些文件上传到 Cloud Storage。将输入文件上传到 Cloud Storage 后,您可以使用 Google Cloud 控制台或 BigQuery Migration API 生成迁移沿袭。

运行 dwh-migration-dumper 工具

从下列选项中选择一项:

Amazon Redshift

如需在 Amazon Redshift 数据库上构建和查看迁移沿袭,请执行以下操作:

  1. 运行 dwh-migration-dumper 工具,以生成源系统文件的转储。
  2. 将查询日志上传到 Cloud Storage

Snowflake

如需在 Snowflake 数据库上构建和查看迁移沿袭,请执行以下操作:

  1. 运行 dwh-migration-dumper 工具,以生成源系统文件的转储。
  2. 将查询日志上传到 Cloud Storage

TeraData

如需在 Teradata 数据库上构建和查看迁移沿袭,请执行以下操作:

  1. 运行 dwh-migration-dumper 工具,以生成源系统文件的转储。
  2. 将查询日志上传到 Cloud Storage

BigQuery

如需在 BigQuery 数据库上构建和查看迁移沿袭,请执行以下操作:

  1. 向账号或服务账号授予以下角色:
  2. 安装 dwh-migration-dumper 工具
  3. 如需生成元数据和查询日志,请运行 dwh-migration-dumper 工具。这些元数据和查询日志包含在一个或多个 ZIP 文件中。

    dwh-migration-dumper --connector bigquery
    
    dwh-migration-dumper --connector bigquery-logs
  4. 将 ZIP 文件上传到 Cloud Storage 存储桶。如需详细了解如何创建存储桶并将文件上传到 Cloud Storage,请参阅创建存储桶从文件系统上传对象

生成迁移沿袭

将包含元数据和查询日志的 ZIP 文件上传到 Cloud Storage 后,您可以生成迁移沿袭。从下列选项中选择一项:

控制台

  1. 前往您的迁移服务页面。

    前往“您的迁移服务”

  2. 转换 SQL 下,依次点击转换 > 批量转换

  3. 翻译配置下,输入以下内容:

    1. 显示名称部分,指定谱系作业的名称。名称可以包含字母、数字或下划线。
    2. 处理位置部分,选择要运行沿袭作业的位置。
    3. 源方言部分,选择源 SQL 方言。
    4. 目标方言部分,选择 GoogleSQL
  4. 点击下一步

  5. 文件位置详情下,执行以下操作:

    1. 输出目录位置部分,指定用于保存翻译输出文件的 Cloud Storage 存储桶的路径。您可以按 bucket_name/folder_name/ 格式输入路径,也可以点击浏览
    2. 输入目录位置部分,指定包含您之前上传的日志 ZIP 文件的 Cloud Storage 文件夹的路径。您可以按 bucket_name/folder_name/ 格式输入路径,也可以点击浏览。您还可以在输出子目录名称字段中为输出文件的子目录命名。
    3. 您可以点击添加输入目录位置来添加其他输入文件。
  6. 点击下一步

  7. 选中基于查询日志的沿袭复选框。

  8. 点击创建

沿袭作业现已运行。作业可能需要几个小时才能完成,具体取决于输入的大小。作业完成后,该工具会提供指向生成的迁移沿袭的链接。

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:处理位置。此值必须为 euus

此调用会返回类似于以下内容的消息:

  {
    "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

作业完成后,该工具会提供指向生成的谱系视图的链接。

打开迁移沿袭

生成迁移沿袭后,您可以使用以下任一选项打开迁移沿袭:

控制台

  1. 前往您的迁移服务页面。

    前往“您的迁移服务”

  2. 转换 SQL 下,点击查看最近

  3. SQL 转换页面上,点击作业名称以选择完整的沿袭作业。谱系作业的输出值为 Lineage

  4. 转换详细信息页面上,点击数据沿袭

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:处理位置。此值必须为 euus
  • WORKFLOW_ID:生成的沿袭的 workflow ID。

前往输出消息的 taskResult.translationTaskResult.consoleUri 字段中包含的链接。

使用迁移沿袭

以下部分介绍了如何使用迁移沿袭来处理源数据和数据库。

了解迁移沿袭术语

迁移沿袭中使用了以下术语:

条款 说明
脚本 在谱系构建期间提取的数据库日志中可见的 SQL 脚本和其他程序。脚本由语句组成,这些语句最常见的是单个 SQL 语句。
节点 沿袭图的顶点。这些对象包括
也称为关系,包括普通表、视图、结构化文件和其他类似表的资源。
Columns 也称为属性,包括表列、视图投影、伪列、文件和其他资源中的类列字段,以及子列(例如结构体字段)。
边缘 谱系节点之间的连接,表示因流水线执行读取或写入这些节点的脚本而产生的互动。边会附带时间戳、谓词以及边派生时的其他元数据。通过边与另一个节点相邻的节点称为直接连接;两个节点之间的边路径称为间接连接
沿袭边 有向边,表示源节点包含在影响目标节点数据的子句(例如 FROMWHEREGROUP BY 子句)中。
用户和流水线 源数据库提供的有关脚本执行者和脚本执行内容的元数据标签。它们对谱系引擎没有内在含义,但用于按来源将脚本分组。

以下部分介绍了迁移谱系中的不同页面。

检查着陆页

迁移沿袭的着陆页会显示沿袭作业的 ID、用于按名称查找沿袭对象的搜索字段,以及突出显示一些可能感兴趣的沿袭对象的建议列表。该页面还包含迁移沿袭中表、流水线和用户的总数。

如需前往特定表格、视图或列,请在搜索字段中搜索相应对象,或点击着陆页上的建议对象之一。

查看节点页面

如需查看迁移谱系中的节点,请点击以下标签页之一。

“数据流”标签页

数据流标签页会直观呈现沿袭图的一部分。当您首次在谱系服务中查看表或列时,系统会默认显示此页面。该图直观地展示了数据在源系统中的流动方式。此图中的节点表示表或视图,而节点之间的边表示数据从左侧的节点流向右侧的节点。

数据流图中的每个表都会显示其非限定名称。如需查看带有数据库和架构前缀的表的完全限定名称,请将指针悬停在相应节点上以显示其提示。每个表都会指明其架构,如节点上的竖线所示。谱系中的所有架构均按字母顺序排序并分配颜色,因此同一架构中的表具有相同的彩色条,名称相似的架构中的表具有颜色相似的彩色条。

每个节点都会显示一个图标,用于指示节点的属性:

  • 监控:一种视图,而不是表。
  • 缓存:始终完全刷新(截断,然后重写)的表。点击相应图标可查看此表旁边的脚本。
  • 已缓存:不会始终完全刷新的表(先截断,然后重写)。点击相应图标可查看此表旁边的脚本。
  • 计时器:一个生命周期较短的表。将指针悬停在相应图标上,即可查看相应表格存在的时间。
  • 雪花:上次写入时间超过 7 天的表,表明该表包含静态数据或写入频率较低的数据。

如需查看数据流图表中的对象,请执行以下操作:

  • 如需查看表格列的列表,请点击相应表格。此视图包含每个列的名称及其数据类型,这些信息可从提供的元数据转储中确定,也可从查询日志中看到的 SQL 推断出来。
  • 如需查看列的列级沿袭图,请点击相应列。在列级沿袭图中,边表示影响目标列的数据流。
  • 如需查看有关边的详细信息,请点击图表中的相应边。此视图包含指向导致相应边的 SQL 脚本的链接。

    当 SQL 语句引用源节点,同时计算要插入到目标节点中的数据时,系统会生成从源节点到目标节点的边。通常,这涉及将数据从源传输到目标,但当源节点用于影响目标的 WHEREGROUP BY 子句时,“数据流”标签页也会显示一条边。如需仅过滤数据转移,请切换工具栏中的显示非数据边按钮。

“连接”标签页

沿袭节点的连接标签页会显示沿袭图表中附近节点的列表。默认情况下,关联节点会按从当前节点到关联节点的最短路径距离进行排序,即从当前节点出发到达关联节点所需的边数越少,该关联节点就越先列出。您可以使用排序选项更改排序方式。

默认情况下,连接列表包含当前节点的上游(提供方)和下游(使用方)节点。您可以使用类型控件更改此过滤条件。在距离列中,当前节点的上游节点会显示一个向上指的箭头,其中包含从当前节点到相应节点的最短向后路径的距离;同样,当前节点的下游节点会显示一个向下指的箭头,其中包含从当前节点到相应节点的最短向前路径的距离。如果某个节点是环的一部分,则该节点既可以是当前节点的上游节点,也可以是下游节点。

如需下载包含所有显示节点的 CSV 文件,请点击下载 CSV

用户标签

节点的用户标签页会显示运行过读取或写入该节点或其上游/下游节点的脚本的用户。默认情况下,执行的单独操作次数最多的用户会列在最前面。您可以使用排序选项更改排序方式。

如需下载包含所有显示用户的 CSV 文件,请点击下载 CSV

“流水线”标签页

节点的流水线标签页会显示运行了读取或写入该节点或其上游/下游节点的脚本的流水线。默认情况下,执行的单独操作次数最多的流水线会列在最前面。您可以使用排序选项更改排序方式。

如需下载包含所有显示的流水线的文件,请点击下载 CSV

代码标签页

节点的代码标签页会显示输入文件中读取该节点的数据或向该节点写入数据的所有 SQL 脚本。SQL 文本中会突出显示对节点的提及。点击脚本即可展开查看完整文本。您可以更改过滤条件设置,以过滤显示的脚本列表。

如需下载包含所有显示的脚本的文件,请点击下载 CSV

查看边缘页面

如需查看谱系图中的节点边,请点击以下标签页之一。

“详情”标签页

边的详细信息标签页会显示谓词和类别,用于描述导致边的脚本执行的操作。

谓词以三部分代码表示,各部分之间以连字符分隔。第一部分是 r(表示边的来源是关系)或 a(表示边的来源是属性)。第二部分是以下缩写之一,用于指明源节点对目标节点中的数据产生的影响:

  • has:源关系包含目标属性。
  • dat:源将数据复制或转移到目标。
  • res:来源在 WHEREHAVINGJOIN ON 等子句中过滤或限制了目标的基数。
  • grp:来源用于影响目标的 GROUP BY 子句中。

第三部分也是 ra,用于指明边的目标是关系还是属性。

边缘类别可能包括以下各项:

  • dat 谓词:
    • AGGREGATE:来源用于写入目标的汇总计算中。
    • EXACT_COPY:源中的数据已完整复制到目标。
    • FUNCTION:来源用于计算目标。
    • IDENTITY_COPY:未计算目标。目标是源的字面副本,没有任何转换或类型转换。
    • PARTITION_PROMOTION:目标包含源中的数据,这是将源的分区提升为目标的结果。
    • WEAK_COPY:源中的数据已至少部分复制到目标。
  • res 谓词:
    • FILTER:来源已用于写入目标的比较中。
    • KEY:源中的数据用作联接比较中的键,该比较写入了目标。
  • grp 谓词:
    • GROUP:来源中的数据在 GROUP BY 子句中用作键,从而影响目标。

代码标签页

边的代码标签页会显示促成该边的 SQL 脚本。边的来源节点和目标节点在 SQL 文本中被提及时会突出显示。

后续步骤