可视化构建宽表
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.id and B.c_id = C.id, 则选择 B 的其他列时,必须选择 c_id。
2. 在复杂关联关系中,不同驱动表或关联表存在相同列名,故在选择其他列时,映射到不同列以规避冲突。
- 点击 确定 完成设置。
- 页面左侧选择 关联表,确认列和宽表列映射正确。
- 页面左侧选择 驱动表,并点击 操作 > 宽表,设定宽表定义。
- 继续任务创建过程。