pig latin 在生成期间根据条件更改元组值
pig latin change tuple value based on condition during generate
我想在生成时更改元组的值 - 基于某些条件。
也就是说,如果值为 '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,但我该如何进行多次替换。
例如
REPLACE(code, 'st_500', 'mt') or REPLACE(code, 'st_400', 'st')
从 Pig 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;
我想在生成时更改元组的值 - 基于某些条件。
也就是说,如果值为 '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,但我该如何进行多次替换。
例如
REPLACE(code, 'st_500', 'mt') or REPLACE(code, 'st_400', 'st')
从 Pig 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;