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;