项目当中遇到一个问题
一个班级会和其他班级合班。合班的数量不一定。
目前人数= 合班班级目前人数之和。
处理思路
分列,获取班级目前人数,过滤,排序记录、分组、输出结果
实践
1、目前数据的原始格式:
2、分列
分列组件位于:转换-》列拆分为多行
分列组件需要制定拆分字段、分隔符。在特殊需求下可以结合正则表达式进行数据拆分。
分列后结果:
3、获取目前人数
目前疑惑:一个excel sheet 去另外一个sheet 当中查找数据 如何在 kettle 当中实现。
在数据库当中查找相应数据,并把原始数据当中的班号、合班关联班级、dudu作为参数传入 。dudu作为查询条件。
注意 :上一步字段的传入顺序 将和sql 当中的 ? 对应
在数据库查询完成之后需要对数据的格式进行改变(不然合并记录会报错):
4、合并记录(链接-》合并记录)
为了和原有数据对比,进行记录合并,筛选出赋值的数据。
旧数据源:原本的数据(列转行,不包含人数信息)。
新数据源:从数据库查找的数据(包含人数信息)。
标志字段:默认为flagfield,自己可以进行修改。此字段是对比之后的结果。
identical | 旧数据和薪数据一样 |
changed | 数据发生了变化 |
new | 新数据当中有而旧数据没有的记录 |
deleted | 旧数据中有而新数据当中没有 |
关键字段:用于定位两个数据源中的同一记录。
比较字段:对于两个数据源中的同一条记录中,制定需要比较的字段。
经过此步骤之后出现的数据:
5、过滤记录(流程-》过滤记录)
过滤记录需要根据上步骤的 标志字段 进行,即根据标志字段(dudu_1)的值进行过滤
此步骤我们值需要对值不是deleted的数据进行处理。(按道理此步骤多余,都应该处理,deleted说明数据库查询时没匹配到值)。
6、排序合并(转换-》排序记录,统计-》分组)
排序记录:只需要制定根据哪个字段排序即可。
分组:分组字段:排序记录当中选定的字段
名称:自己命名,该字段为操作后产生数值的列名
subject :进行运算的字段
类型:字段进行运算的类别,求和、均值、最大、最小等。
点击确认产生的警告无视即可,单分组之前必须要有排序记录。
最后输出统计结果即可,查询时只有要保证全部数据能够在数据库当中找到才能保证最后结果的准确性。
解决问题的方法有很多种,欢迎各位指正。
指正微信:c243126035