我有一个日期列和一个月列,并希望将年份连接到它并将其以CHARARRAY
格式与连字符一起存储。
所以我有:month:CHARARRAY, day:CHARARRAY
含义,例如,如果day列包含'03'且month列包含'04',我想创建一个包含以下内容的日期列:'2014-04-03'
这是我的代码:
CONCAT('2014-',month,'-',day) as date;
它不起作用,我不太确定如何将其他文本连接到列上。
我想请注意,我不确定转换为日期格式对我来说是一个选项。我希望将其保留为CHARARRAY
格式,因为我想加入另一个以CHARARRAY
格式存储日期的文件。
答案 0 :(得分:4)
假设这是名为dateExample.csv的数据文件:
Surender,02,03,1988
Raja,12,09,1998
Raj,05,10,1986
这是猪的脚本:
A = LOAD 'dateExample.csv' USING PigStorage(',') AS(name:chararray,day:chararray,month:long,year:chararray);
X = FOREACH A GENERATE CONCAT((chararray)day,CONCAT('-',CONCAT((chararray)month,CONCAT('-',(chararray)year))));
dump X;
您将获得所需的输出:
(02-3-1988)
(12-9-1998)
(05-10-1986)
当我们尝试这样结束时:
X = FOREACH A GENERATE CONCAT(day,CONCAT('-',CONCAT(month,CONCAT('-',year))));
我们得到以下例外:
ERROR 1045:
<line 2, column 45> Could not infer the matching function for org.apache.pig.builtin.CONCAT as multiple or none of them fit. Please use an explicit cast.
所以我们需要明确地将日,月和年值转换为chararray并且它有效!!