数据工厂数据重复问题排查
1. 简介
通过数据工厂加工处理数据时,常常因为处理不当使得数据被重复计算。数据重复的原因大致有以下三个方面:
可能原因 | 示例 |
横向连接条件不全 | 原本区分唯一性需要关联产品名称、产品型号、单位这三个字段,但是设置的时候只设置了产品名称、产品型号,没有关联上单位,此时同一名称型号的,可能会有多个单位,就会导致数据重复 |
输入中选择了子表单 | 输入中同时选择了主表字段和子表单字段的话,主表单的字段都会按照子表单的行数重复,子表单有几行,主表字段就重复几次 |
数据本身有重复 | 数据本身有重复的话,输出就可能重复 |
2. 横向连接条件不全
2.1 问题描述
横向连接需要保证连接字段的唯一性,如果连接字段不能唯一匹配,则计算的数据可能会出现重复。
如,原本区分唯一性需要关联产品名称、产品型号、单位这三个字段,但是设置的时候只设置了产品名称、产品型号,没有关联上单位,此时同一名称型号的,可能会有多个单位,就会导致数据重复。
示例原始数据:
正确示例 | |
错误示例 |
2.2 解决方案
横向连接的连接字段,需要将可以确定唯一性的字段全部作为横向连接的关联字段,比如上述案例,关联字段就需要设置为产品名称=产品名称,产品型号=产品型号,单位=单位,缺一不可。
3. 输入中选择了子表单
3.1 问题描述
当输入选择了主表字段,同时又选择了子表单之后,主表字段会重复,所以主表字段无法区分数据的唯一性,后续加工数据的时候,比如横向连接,关联字段就无法仅仅设置为这个主表字段进行关联。
主表字段的入库单号全部一样,效果如下:
3.2 解决方案
以上面举例的数据,后续如果需要横向连接的话,关联字段就需要设置为订单号=订单号(订单相关的单号),产品名称=产品名称,产品型号=产品型号,单位=单位。
4. 数据本身有重复
4.1 问题描述
原始数据有子表单在数据工厂计算时,子表单中的每一条子数据都会被拆分成一条一条独立的数据。下图为示例原始数据:
在数据工厂处理时,原始数据将变成如下所示,其中牛奶-光明-箱有 2 条重复的数据:
4.2 解决方案
如果处理数据时,需要保证数据唯一性,不需要重复的数据,那么我们可以使用「分组汇总」功能,将重复数据进行去重。
- 分组字段添加:入库单号、产品名称、产品型号、单位
- 汇总字段添加:入库数量
设置如下图所示:
处理后的数据如下图所示,已经不再有重复数据: