跳到主要内容

可视化构建宽表

CloudCanal 支持可视化宽表构建,通过勾选驱动表、关联表,并且设定关联字段关系,在数据全量迁移、增量同步过程中通过反查实现宽表数据补全。

宽表定义

CloudCanal 宽表构建中的角色分为 驱动表关联表 ,驱动表只可选择一张,关联表可以选择多张,默认实现的是 Left Join 语义,即返回驱动表所有数据,即使未在关联表中发现对应数据。

目前,CloudCanal 支持 2 种形状的关联关系:

  • A.b_id = B.id and B.c_id = C.id and ...,即 线形 关联关系,其中所有表均不可重复选择,且不允许形成环状关联。
  • A.b_id = B.id and A.c_id = C.id and ...,即 星形 关联关系,不允许形成环状关联。

其中 A 表定义为驱动表,B、C 表定义为关联表。

数据变更规则

对端为关系型数据库(如 MySQL)

  • 驱动表 INSERT,自动补全关联表字段。
  • 驱动表 UPDATE 或 DELETE,不做关联表字段关联。
  • 关联表 INSERT,如有下一层关联表,则做关联表字段关联,INSERT 操作转换为 UPDATE。
  • 关联表 UPDATE,如有下一层关联表,不做关联表字段关联。
  • 关联表 DELETE,如有下一层关联表,则做关联表字段关联,DELETE 操作转换为全字段为 NULL 的 UPDATE 操作。

对端为整行覆盖类数据库(如 StarRocks)

  • 驱动表 INSERT,UPDATE 或 DELETE,自动补全关联表字段
  • 关联表 INSERT,UPDATE 或 DELETE,自动忽略。

功能限制

不支持修改宽表关联关系。

操作说明

  1. 进入 CloudCanal 控制台,点击 同步任务 > 创建任务

  2. 进入 选择表 步骤。

    1. 选择需要打宽表的表。
    2. 点击 批量修改目标表名 > 统一表名,设置宽表的表名。
  3. 进入 数据处理 步骤。

    1. 页面左侧选择 驱动表,定义驱动表到宽表的列映射关系。

      信息
      1. 只需手动定义驱动表到宽表的列映射关系,关联表字段映射关系会根据宽表定义自动建立。
      2. 避免字段重复映射,若维表与驱动表存在同名列,需要确认好数据来源,避免出现驱动表和维表映射到宽表的同一个字段。
    2. 页面左侧选择 驱动表,并点击 操作 > 宽表,设定宽表定义。

      • 添加驱动表与关联表的 表关联关系

      • 设定驱动表与关联表的 关联列映射

        信息

        关联列 选择和设置,支持多个。

      • 设定关联表到宽表的 其他列映射

        • 关联表 其他列 选择,以及宽表映射字段填写,此操作主要防止多张来源表字段名在目标宽表中重复。

          信息

          1. 在线性关联关系中,务必选择其对应关联列。如关联关系为 A.b_id = B.b_id and B.c_id = C.c_id and C.d_id = D.d_id,宽表名为 ABCD_WIDE,则宽表定义步骤:

          • 配置表 A -> B 关联,关联列映射选择 A.b_id -> B.b_id,其他列映射额外添加 B.b_id -> ABCD_WIDE.b_id,将 B 表的 b_id 字段映射到宽表的 b_id 字段。
          • 配置表 B -> C 关联,关联列映射选择 B.c_id -> C.c_id,其他列映射额外添加 C.c_id -> ABCD_WIDE.c_id,将 C 表的 c_id 字段映射到宽表的 c_id 字段。
          • 配置表 C -> D 关联,关联列映射选择 C.d_id -> D.d_id,其他列映射额外添加 D.d_id -> ABCD_WIDE.d_id,将 D 表的 d_id 字段映射到宽表的 d_id 字段。

          2. 在复杂关联关系中,不同驱动表或关联表存在相同列名,故在选择其他列时,映射到不同列以规避冲突

    3. 点击 确定 完成设置。

    4. 关联表字段根据宽表定义自动建立映射,页面左侧选择 关联表,确认列和宽表列映射正确。

  4. 继续任务创建过程。

联系我们
微信二维码

扫码添加微信,获取技术支持