DataLeap 实时/离线整库同步、实时分库分表同步解决方案,支持添加自定义 SQL 转换规则。它支持将源端采集的数据,对其进行各种数据转换操作,以满足各类业务场景需求。
说明
目前转换规则功能属于 BETA 公测阶段,在函数支持度、边界条件处理等细节方面仍在飞速演进。欢迎试用并提出建议。
目前兼容 Flink 1.11、Flink 1.16 的常用函数(详见数据转换函数库)及其输入输出行为,并持续引入高版本 Flink 函数、拓展函数(例如 JSON 函数、AES 加解密函数)来进一步拓展处理能力。
数据转换可以应用于各种轻量级数据处理场景,例如:
您可以通过以下方式进入数据转换配置:
目前离线整库同步解决方案支持数据转换规则的配置。

基本配置操作详见基本配置。
对于整库同步解决方案,您可在映射配置 > 数据转换配置栏目中,单击配置详情,在语句输入框中,输入对已选表的 SQL 转换语句,其中 FROM 后的源表名支持正则形式,且库表分隔符(.)无需转义,示例如下:
语句输入框右侧,您可进行以下操作:
SQL 规则与数据库表的关系如下:
注意
SELECT * 语法,例如可以通过 SELECT *, 'Hello' AS new_field 为每个选中的表统一添加一个名为 new_field 的新字段,每个表的 Schema(字段名和类型)可以不同。db_name.table_prefix.* 而非 db_name\.table_prefix.* 或 db_name.table_prefix\.*),但每个表仅能被一条规则所匹配,否则会报错,报错信息示例如下:FROM db_name.schema_name.table_prefix.*。WHERE name = FROM_BASE64('5ZOI5ZOI') 而非 WHERE name = '哈哈'。CAST(123.456 AS DOUBLE)。转换语句配置完成后,可以在下方目标库表映射配置栏目,配置完库/表名映射配置后,单击刷新源表和目标表映射按钮。如果语法正确,则会展示出变换后的新表的结构信息。
我们在 SELECT 语句中,可以引用一些数据字段,例如:
SELECT __namespace_name__, __schema_name__, __table_name__, __op_type__, __ts_ms__ FROM my_database..*
注意
CONCAT(__table_name__ , '-SUFFIX') 、__ts_ms__ + 100 是非法的。__table_name__ AS table_name。说明
下表中映射关系说明:
结构分类 | __namespace_name__ | __schema_name__ | __table_name__ | |
|---|---|---|---|---|
三级结构 | PostgreSQL | Database | Schema | Table |
GaussDB | Database | Schema | Table | |
SQL Server | Database | Schema | Table | |
二级结构 | MySQL | Database | - | Table |
veDB | Database | - | Table | |
Mongo | Database | - | Table | |
注意
分库分表模式下,全量阶段的库表元数据字段统一返回 "*",请从 _src_meta_info_ 字段读取源表信息。
__op_type__:__ts_ms__:
job.transform.ts_ms_field_value_for_batch 高级参数修改批作业的该字段默认值。此外,如果设置 job.transform.ts_ms_field_policy_for_batch 高级参数的值为 EPOCH_TIME,则返回每条数据的实际读取时刻(动态变化)。_src_meta_info_: