拉链表组件的主要功能是将前置输入的周期表转成拉链表,并根据当前组件设置的更新策略插入到当前组件选择的数据库表中。
1.界面
字段列表页面:
字段列表界面设置将要入库的表,并在字段映射中设置与输入字段的映射,字段列表的字段名称可以修改;
设置页面:
设置界面中源设置要设置输入的时间字段,关键字字段和比较字段,关键字字段和比较字段可以多选。
关键字段:对应为组件配置页面的分组字段。
比较字段:除关键字段以外该表中其他的字段均为比较字段。
目标设置需要设置当前组件中的起始时间和结束时间字段。
更新策略有两种,一种是数据覆盖,会清空目标表,一种是插入更新,有对应的数据则更新,没有则添加。
2.应用场景
先清空表,然后将源的数据根据关键字字段和时间字段分组,时间字段排序,取每组的第一行,然后根据关键字字段和时间字段分组,时间字段排序,取下一行的时间-1为结束日期,最后插入到目标表中。
例如存在以下源表(正常数据)场景1:
关键字字段(合同) | 比较字段(余款) | 时间 |
1 | 100 | 20160101 |
1 | 100 | 20160115 |
1 | 90 | 20160131 |
转成拉链表后:
关键字字段(合同) | 比较字段(余款) | 起始时间 | 结束日期 |
1 | 100 | 20160101 | 20160130 |
1 | 90 | 20160131 | Null |
场景2(有相同关键字和相同时间,比较字段不同时的处理):
存在以下表:
关键字字段(合同) | 比较字段(余款) | 时间 |
1 | 100 | 20160101 |
1 | 90 | 20160101 |
1 | 80 | 20160131 |
该表转成拉链表属于脏数据,只取其中一行所以可能生成的拉链表有以下两种情况;
关键字字段(合同) | 比较字段(余款) | 起始时间 | 结束时间 |
1 | 90 | 20160101 | 20160130 |
1 | 80 | 20160131 | Null |
关键字字段(合同) | 比较字段(余款) | 起始时间 | 结束时间 |
1 | 100 | 20160101 | 20160130 |
1 | 80 | 20160131 | Null |
脏数据的定义:
1.源表中,如果有多条除了比较字段都相同的数据,则属于脏数据,取其中一条即可。
2.源表中,时间字段和周期对应不合法,属于脏数据。
数据覆盖场景:清空目的表,同上述场景一致。
更新插入场景:
首先对关键字段进行分组
2.1场景一:源表时间在目的时间之前
目标表:
关键字字段(合同) | 比较字段(余款) | 起始时间 | 结束时间 |
1 | 100 | 20160201 | 20160229 |
比较字段相同的源表:
关键字字段(合同) | 比较字段(余款) | 时间 |
1 | 100 | 20160111 |
1 | 100 | 20160101 |
转换成拉链表后:
关键字字段(合同) | 比较字段(余款) | 起始时间 | 结束时间 |
1 | 100 | 20160201 | 20160229 |
关键字字段(合同) | 比较字段(余款) | 时间 |
1 | 90 | 20160101 |
转换成拉链表后:
关键字字段(合同) | 比较字段(余款) | 起始时间 | 结束时间 |
1 | 90 | 20160101 | 20160131 |
1 | 100 | 20160201 | 20160229 |
2.2场景二:源表时间在目的时间之间
目标表:
关键字字段(合同) | 比较字段(余款) | 起始时间 | 结束时间 |
1 | 100 | 20160101 | 20160131 |
源表:
关键字字段(合同) | 比较字段(余款) | 时间 |
1 | 80 | 20160111 |
转换成拉链表后:
关键字字段(合同) | 比较字段(余款) | 起始时间 | 结束时间 |
1 | 100 | 20160101 | 20160110 |
1 | 80 | 20160111 | 20160111 |
1 | 100 | 20160112 | 20160131 |
源表:
关键字字段(合同) | 比较字段(余款) | 时间 |
1 | 100 | 20160111 |
转换成的拉链表:
关键字字段(合同) | 比较字段(余款) | 起始时间 | 结束时间 |
1 | 100 | 20160101 | 20160131 |
请先登录