问题是此列中存在空值,如何在将日期从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;
irlmq6kh1#
是的,正如@spoom提到的
REPLACE(Del_EFF_DT,'-','') AS DEL_EFF_DT;
这将解决问题
r7xajy2e2#
对格式化日期使用正则表达式似乎是多余的。日期的格式总是一样的,所以如果你的目标是删除破折号,就用空白代替。不管怎样,运行正则表达式需要更多的资源。我已经编程6年了,从来都不需要正则表达式。几乎总是有另一种方法来做你需要做的事情。希望这有帮助。
js81xvg63#
处理空值时可以使用下面的示例代码段
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;
3条答案
按热度按时间irlmq6kh1#
是的,正如@spoom提到的
这将解决问题
r7xajy2e2#
对格式化日期使用正则表达式似乎是多余的。日期的格式总是一样的,所以如果你的目标是删除破折号,就用空白代替。不管怎样,运行正则表达式需要更多的资源。
我已经编程6年了,从来都不需要正则表达式。几乎总是有另一种方法来做你需要做的事情。希望这有帮助。
js81xvg63#
处理空值时可以使用下面的示例代码段