使用Pentaho Spoon与日期数据类型相关的错误

时间:2017-12-08 12:30:51

标签: pentaho pentaho-spoon pentaho-data-integration

我正在阅读一个CSV文件,其中包含有关使用Spoon的推文的信息。发送推文时有一个created_at字段。

但是,格式有所不同,有些例子是'yyyy/MM/dd HH:mm', 'yyyy-MM-dd HH:mm', 'MM/dd HH:mm' and 'MM-dd',这就是我收到错误的原因。

我想要做的是使用日期数据类型并仍然捕获所有数据。我考虑过使用strings cut步骤或只是将数据类型更改为string并增加字符的长度,但这可能会以丢失数据为代价。我还能做什么?

1 个答案:

答案 0 :(得分:0)

只需将其标注为config即可。

根据您的使用案例,您可能不必将它们显式转换为日期(延迟评估)。

如果您必须将它们转换为日期,请尝试String步骤,Javascript相当宽容。

否则,您可以使用正则表达式测试格式。如果我采用您的给定格式:new Date(),则代码如下:

'yyyy/MM/dd HH:mm', 'yyyy-MM-dd HH:mm', 'MM/dd HH:mm' and 'MM-dd'

然后使用var created_date; if(regex = created_at.match(/(\d\d\d\d\)\/(\d\d)\/(\d\d) (\d\d):(\d\d)/)) created_date = new Date(regex[1], regex[2], regex[3], regex[4], regex[5]); if(regex = created_at.match(/(\d\d\d\d\)\-(\d\d)\-(\d\d) (\d\d):(\d\d)/)) created_date = new Date(regex[1], regex[2], regex[3], regex[4], regex[5]); if(regex = created_at.match(/(\d\d)\/(\d\d) (\d\d):(\d\d)/)) created_date = new Date(new Date().getFullYear(), regex[1], regex[2], regex[3], regex[4]); if(regex = created_at.match(/(\d\d)\/(\d\d)) created_date = new Date(new Date().getFullYear(), regex[1], regex[2]); 数据类型保存created_data。检查输出流中的空值,直到定义了所有格式。