将猪的日期从YYYY-mm-dd转换为YYYYmmDD

时间:2017-03-16 13:33:14

标签: regex apache-pig

问题是此列中有空值,如何在将日期从2016-01-01转换为20160101时处理空值

enter image description here

REGEX_EXTRACT(Del_EFF_DT,'\\d{4}\\d{2}\\d{2}\\s',1) AS DEL_EFF_DT;

然而,当我转储该文件

时,结果将全部为空
s = foreach final generate DEL_EFF_DT;
dump s;

enter image description here

3 个答案:

答案 0 :(得分:0)

将正则表达式用于格式化日期似乎是多余的。日期将始终采用相同的格式,因此如果您的目标是删除破折号,则只需将其替换为空。无论如何,运行正则表达式会占用更多资源。

我已编程了6年,从未需要正则表达式。几乎总有另一种方法可以做你需要做的事情。希望这会有所帮助。

答案 1 :(得分:0)

是的,因为@spoom提到了

REPLACE(Del_EFF_DT,'-','') AS DEL_EFF_DT;

这将解决问题

答案 2 :(得分:0)

在处理空值时可以使用以下示例代码段

test=  LOAD 'testdata' USING PigStorage(',') as(A:chararray,B:chararray,C:chararray); 
values = FOREACH test GENERATE A==''?'null':(A is null?'null':A)) as A,(B==''?'null':(B is null?'null':B)) as B,(C==''?'null':(C is null?'null':C)) as C;