欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SymmetricDS Transform

程序员文章站 2024-03-24 23:14:28
...

字段映射部分及自定义规则部分:

transform_table:

  • transform_id、source_table_name、source_node_group_id、target_node_group_id、

  • transform_point(EXTRACT、LOAD)、

  • column_policy
    (SPECIFIED只有被定义的参与变更的列才会作为变更的一部分、
    IMPLIED如果没有明确指定,则会源端列会被同步到目标端
    NONE删除操作不会对目标端有影响)

  • update_first
    这个选项会覆盖插入操作的默认行为,symDS会先执行更新操作,如若更新失败,会执行插入操作

  • delete_action

    (DEL_ROW 删除操作、UPDATE_COL、删除操作会使目标端更新操作、NONE 目标端不会变化)

  • update_action

    (UPD_ROW 正常的更新操作、INS_ROW更新操作->插入操作、DEL_ROW 更新操作->删除操作、NONE nothing done)

  • 一些transfrom 使用样例

     1.从一张源表复制一列同步到多表的列上
     2.合并多个源表的列成为目标表的一行
     3.依靠源数据同步,在目标表里插入列的约束
     4.依据源表的变动情况,将多行数据插入到一张目标表中。
     5.当加载到目标库时可应用bean shell脚本来实现自定义转变
    

transform_column

  • pk

    无所谓是不是目标表的主键,是用来辨识目标行的。
    被用来定义where从句当更新还有删除操作发生在目标的时候。
    Unless the column policy is “IMPLIED” at least one row marked as a pk
    should be present for each transform_id.
    source_column_name、target_column_name、

  • include_on
    (I、U、D、*)应用于哪种操作,插入、更新、删除、所有

  • transform_type

    实现IColumnTransform接口可以自行定义变更类型

  • 现有类型如下:

  1. copy default: 将源列值复制到目标列

  2. remove :exclude the source column,仅限用于column_policy为IMPLIED

  3. const:将常量给目标列赋值

  4. variable:将动态变量给目标列赋值

  5. additive:数值的计算

  6. substring:源数据的substring给目标列赋值

  7. Left 、BLeft 、Multiply

  8. lookup:可使用查询语句(可查其他表),不过查询必须仅返回一行、并且首列作为同步值

  9. bsh: BeanShell Script,在转变表达式中支持bsh脚本。它可以返回String or an instance of
    NewAndOldValue 有很多变量以及函数可以使用。

  10. identity、

  11. math:简单科学计算可以使用(源列数据,更新前数据、现数据)

  12. copyIfChanged:这个外部配置就行了吧
    trigger.update.capture.changed.data.only.enabled 默认是false
    可以设置为true;多了个配置就是列的值一致,忽略该列还可以忽略该行。

  13. valueMap: 映射值
    Clarion Date Time、Columns To Rows、isEmpty、isBlank、Null Value、Deleted Columns

DEMO:

insert into sym_transform_table values ('tftype', 'corp', 'store', 'LOAD', null, null, 'jsy', null, null, 'jsytemp', 
0, 'UPD_ROW', 'DEL_ROW', 1, 'IMPLIED', current_timestamp, 'yuye', current_timestamp, 'type map');
insert into sym_transform_column values ('tftype', '*', 'nian', 'age', 0, 'copy', '', 1, CURRENT_TIMESTAMP, 'dota', CURRENT_TIMESTAMP, 'type map');
insert into sym_transform_column values ('tftype', '*', 'mingzi', 'name', 0, 'copy', '', 1, CURRENT_TIMESTAMP, 'dota', CURRENT_TIMESTAMP, 'type map');