最近处理数据,遇到这2个问题,思考了很久,最近突然开窍把问题解决了,记录如下:
第一个问题,如下图所示,数据生成的csv文件只有时分秒,而数据库设定的格式为年月日时分秒,因此导入数据库是提示出错,那年月日那里去了?
原来写软件的工程师把年月日作为文件名了
这样用PDI处理的话,可以用如下方式解决,整体过程如下:
1. 读取文件时,将文件名一起读入,这样的话年月日就有了,但是还是要做二次处理,用Text File Input导入数据时,在content栏下勾上 Include filename in output, 并给个栏位名:date
这样的话,文件名就作为一栏数据进来了
2. 然后用string cut,按照规则,只将对应位置信息,将36到46之间的10个字符,即年月日裁剪出来,放到date2这个栏位
3. 然后用Concat Filed将date2与对应栏位的时间合并起来
第二个问题,如下图,数据导入时发现重复
之前尝试过在数据库端设定index,通过锁定序列号加时间戳的方式来防止重复数据,但是这样做的话,在数据导入前有重复则会提示错误,无法导入,因此前端也要进行去重的处理,整体过程如下:
用到Sort Row这个组件来处理,其中勾上只输出唯一值,组合对比栏位为序列号加时间
这样过滤后,重复项在数据导入前就清除掉了
在使用Pentaho PDI处理数据时,遇到两个关键问题:时间格式不匹配和数据重复。针对时间格式问题,解决方案是通过Text File Input读取文件名获取年月日,再利用String Cut和Concat Field组合时间信息。对于重复数据,通过Sort Row组件,设置只输出唯一值,以序列号和时间戳作为对比栏位进行去重,确保导入的数据不重复。
555

被折叠的 条评论
为什么被折叠?



