我希望在生成时更改元组的值 - 基于某些条件。
即如果值为'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')
答案 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;