可视化构建宽表
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,自动忽略。
功能限制
不支持修改宽表关联关系。
操作说明
-
进入 CloudCanal 控制台,点击 同步任务 > 创建任务 。
-
进入 选择表 步骤。
- 选择需要打宽表的表。
- 点击 批量修改目标表名 > 统一表 名,设置宽表的表名。
-
进入 数据处理 步骤。
-
页面左侧选择 驱动表,定义驱动表到宽表的列映射关系。
信息- 只需手动定义驱动表到宽表的列映射关系,关联表字段映射关系会根据宽表定义自动建立。
- 避免字段重复映射,若维表与驱动表存在同名列,需要确认好数据来源,避免出现驱动表和维表映射到宽表的同一个字段。
-
页面左侧选择 驱动表,并点击 操作 > 宽表,设定宽表定义。
-
添加驱动表与关联表的 表关联关系。
-
设定驱动表与关联表的 关联列映射。
信息关联列 选择和设置,支持多个。
-
设定关联表到宽表的 其他列映射。
-
关联表 其他列 选择,以及宽表映射 字段填写,此操作主要防止多张来源表字段名在目标宽表中重复。
信息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. 在复杂关联关系中,不同驱动表或关联表存在相同列名,故在选择其他列时,映射到不同列以规避冲突。
-
-
-
点击 确定 完成设置。
-
关联表字段根据宽表定义自动建立映射,页面左侧选择 关联表,确认列和宽表列映射正确。
-
-
继续任务创建过程。
