问题是此列中有空值,如何在将日期从2016-01-01转换为20160101时处理空值
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;
答案 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;