将文本连接到pig中的列

z9zf31ra  于 2021-06-21  发布在  Pig
关注(0)|答案(1)|浏览(512)

我有一个day列和一个month列,希望将年份与之连接起来并将其存储在 CHARARRAY 用连字符格式化。所以我有: month:CHARARRAY, day:CHARARRAY 例如,如果“日”列包含“03”,而“月”列包含“04”,则我要创建一个包含“2014-04-03”的日期列
这是我的密码: CONCAT('2014-',month,'-',day) as date; 它不起作用,我不太确定如何将附加文本连接到列上。我想指出的是,我不确定转换为日期格式是我的选择。我宁愿把它放在里面 CHARARRAY 格式,因为我想加入另一个文件,其中存储了日期 CHARARRAY 格式。

5ktev3wc

5ktev3wc1#

假设这是名为dateexample.csv的数据文件:

Surender,02,03,1988
     Raja,12,09,1998
     Raj,05,10,1986

这是pig的脚本:

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,这样就可以了!!

相关问题