2016-06-29 12 views
1

Ich möchte den Wert eines Tupel beim Generieren ändern - basierend auf einer bestimmten Bedingung.Schwein Latein ändern Tupel Wert basierend auf Bedingung während generieren

Wenn der Wert 'x' ist, dann setzen Sie ihn im Ausgabetupel auf 'y'.

mein Dataset

(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) 

Ich möchte die folgende

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

Gibt es eine einfache Art und Weise tun, um den Wert der Tupel zu ändern, wenn zu erzeugen?

EDIT

ich wahrscheinlich REPLACE verwenden könnte, aber wie würde ich mehrere ersetzt tun.

z.B.

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

Antwort

1

Von Schwein 0,12 können Sie case verwenden:

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

wie dumm SO, Bearbeitungen muss mindestens 6 Zeichen lang sein ???? Was wäre, wenn ich nur "wie" hinzufügen müsste? – Anand

+0

Sie könnten einfach das Original-Poster fragen, um die Änderung für Sie vorzunehmen. Sie sind nicht durch Charakterbeschränkungen begrenzt. –

Verwandte Themen