将pig中的日期从yyyy-mm-dd转换为yyyyymmdd

oymdgrw7  于 2021-06-21  发布在  Pig
关注(0)|答案(3)|浏览(504)

问题是此列中存在空值,如何在将日期从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;

irlmq6kh

irlmq6kh1#

是的,正如@spoom提到的

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

这将解决问题

r7xajy2e

r7xajy2e2#

对格式化日期使用正则表达式似乎是多余的。日期的格式总是一样的,所以如果你的目标是删除破折号,就用空白代替。不管怎样,运行正则表达式需要更多的资源。
我已经编程6年了,从来都不需要正则表达式。几乎总是有另一种方法来做你需要做的事情。希望这有帮助。

js81xvg6

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;

相关问题