跳到主要内容

可视化构建宽表

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. 关联表如果级联关联其他表,务必选择其对应关联列。如 A.b_id = B.id and B.c_id = C.id, 则选择 B 的其他列时,必须选择 c_id。

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

    2. 点击 确定 完成设置。
    3. 页面左侧选择 关联表,确认列和宽表列映射正确。
  4. 继续任务创建过程。