4.2.13 SCD节点
SCD任务节点可以根据输入的数据针对历史拉链表的进行初始化/增量更新操作。
初始化拉链表
输入:可选择当前工作流中任何任务节点的输出数据作为输入
数据源:可选择配置好的数据库连接
目标表:可选择数据源中已经建好的数据表作为历史拉链表(如果选择的目标表中已经存在数据,将在清空数据后进行拉链表初始化)
字段匹配:将输入数据中的关键字段与历史拉链表进行匹配对于无时间戳的源数据,会根据初始化的运行时间来设置历史拉链表的“开始时间”和“结束时间”
源数据 | 历史拉链表 |
分组字段 | 分组字段 |
操作时间 | 开始时间、结束时间 |
状态字段 | 状态字段 |
自定义列:支持为历史拉链表中的某一列进行赋值
赋值内容支持使用全局参数/动态变量,调用方式为${参数名/变量名}
原始订单表(2020-07-10数据):
初始化历史拉链表:
拉链表增量更新
输入:可选择当前工作流中任何任务节点的输出数据作为输入
数据源:可选择配置好的数据库连接
目标表:可选择数据源中需要进行增量更新的历史拉链表
更新关注时间:
运行时间前一日:根据“源数据”中操作日期为“运行时间的前一天”的数据,对历史拉链表进行增量更新(适用于每天的凌晨进行增量更新的场景)
运行时间当日:根据“源数据”中操作日期为“运行时间的当天”的数据,对历史拉链表进行增量更新(适用于每天的深夜进行增量更新的场景)
字段匹配:将输入数据中的关键字段与历史拉链表进行匹配对于无时间戳的源数据,会采用以下逻辑进行拉链表的增量更新:
源数据没有“操作时间”字段,因此需要将“分组字段”作为主键字段,对于源数据和历史拉链表进行“状态字段”的比对,将状态不同的内容作为“增量数据”
根据增量更新的运行时间来设置历史拉链表的“开始时间”和“结束时间”
如果选择“更新关注时间”为“运行时间前一日”:封链记录的“结束时间”为运行时间-2;新建记录的“开始时间”为运行时间-1
如果选择“更新关注时间”为“运行时间当日”:封链记录的“结束时间”为运行时间-1;新建记录的“开始时间”为运行时间
源数据 | 历史拉链表 |
分组字段 | 分组字段 |
操作时间 | 开始时间、结束时间 |
状态字段 | 状态字段 |
自定义列:支持为历史拉链表中的某一列进行赋值
赋值内容支持使用全局参数/动态变量,调用方式为${参数名/变量名}
仅针对拉链表中新建的记录进行自定义列赋值,对于封链的记录不会修改自定义列的值内容
原始订单表(2020-07-13数据):
增量更新历史拉链表: