猪拉丁根据生成过程中的条件改变元组值

时间:2016-06-29 12:56:30

标签: apache-pig

我希望在生成时更改元组的值 - 基于某些条件。

即如果值为'x',则在输出元组中将其设置为'y'。

我的数据集

(name,code,id)

(real,mt,27426)
(real,st,3227325)
(fake,st_500,695248)
(fake,st_400,1110868629)
(fake,st_500,1160891426)
(fake,st_500,1320802309)
(fake,st_500,1370836855)
(fake,st_500,1420855918)
(fake,st_500,1600833465)
(real,mt,1640827448)
(fake,st_400,1650848520)
(fake,st_500,1750817885)
(fake,st_500,1820826847)
(fake,st_500,1860897308)
(real,mt,1870855243)

我想做以下

A = FOREACH dataset GENERATE name, (code=='st_500') ? 'mt' : (code=='st_400') ? 'st' : code, id;

生成时是否有一种简单的方法可以更改元组的值?

修改

我可以使用REPLACE,但是如何进行多次替换。

e.g。

REPLACE(code, 'st_500', 'mt') or REPLACE(code, 'st_400', 'st')

1 个答案:

答案 0 :(得分:2)

从猪0.12你可以使用case

A = FOREACH dataset  GENERATE name, (
  CASE code
    WHEN 'st_500' THEN 'mt'
    WHEN 'st_400' THEN 'st'
    ELSE code
  END
) as code ,id;