2017-04-01 26 views
0

我有一些數據與4個值的目標,我希望其中三個成爲使用拉丁豬一個單一的一部分。如何轉換目標值與豬?

Input:      Output: 
ID  | Target   ID  | Target  
-----------------   ----------------- 
test1  1    test1  1 
test2  1    test2  1 
test3  2    test3  2 
test4  2    test4  2 
test5  3    test5  2 
test6  4    test6  2 
test7  2    test7  2 

有人知道最好的方式做到這一點

+0

哪三個值必須變成2? –

+0

所有值2,3和4,如2. – Javi

回答

0

使用Bincond檢查目標值大於1,如果真有你想要的值來替換它,在這種情況下,2

A = LOAD 'data.txt' USING PigStorage('\t') AS (Id:chararray,target:int); 
B = FOREACH A GENERATE Id,(target > 1 ? 2 : target); 
DUMP B; 
+0

謝謝inquisitive_mind! – Javi

+0

如果這個目標是chararray而不是int,那麼還有一個問題。二進制運算符可以使用,還是僅用於數值運算,我應該使用另一個運算符嗎?當然,會改變負載的尖銳,以及chararray。 – Javi

+0

您也可以將它用於chararray。在這種情況下,您將無法檢查>。您將不得不檢查「2」,「3」,「4」。 –