我有一个包含变量描述,totalamt,年份和类型的文件。
如果年份是2000年,并且某种类型,我想存储这些字段供以后使用。
如果年份大于2000,我想找到增加百分比 从2000年的价值。我看过复制但不确定它是如何使用的。
mysales = load 'hdfs:/user/derezone_yahoo/retailsales.txt' using PigStorage(' ') AS (saledesc:chararray,totsales:int,salesyear:chararray,adjtype:chararray);
baseamt = FOREACH mysales GENERATE IF salesyear=='2000' then join totalsales by 0 using replicated;
此语句在语法错误,或处的意外符号上失败 靠近' salesyear'
语法错误是什么?我把它放在括号中但仍然出错
我的复制语句是否正确将totalat存储在baseamt中?
数据按年份顺序排列(即2000年,2001年,2002年等)
答案 0 :(得分:0)
Foreach不接受if-else条件你放在那里的方式。 在你的情况下,尝试这样的事情:
mysales = load 'hdfs:/user/derezone_yahoo/retailsales.txt' using PigStorage(' ') AS (aledesc:chararray,totsales:int,salesyear:chararray,adjtype:chararray);
B = FILTER mysales BY salesyear=='2000';
C = JOIN B BY .... (Your conditions)
详细了解加入here: