Pentaho PDI 数据导入关于时间格式及重复数据处理这2个问题的解决方法

在使用Pentaho PDI处理数据时,遇到两个关键问题:时间格式不匹配和数据重复。针对时间格式问题,解决方案是通过Text File Input读取文件名获取年月日,再利用String Cut和Concat Field组合时间信息。对于重复数据,通过Sort Row组件,设置只输出唯一值,以序列号和时间戳作为对比栏位进行去重,确保导入的数据不重复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近处理数据,遇到这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这个组件来处理,其中勾上只输出唯一值,组合对比栏位为序列号加时间


这样过滤后,重复项在数据导入前就清除掉了






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值