2013-12-09 47 views
2

我在稱爲avg_rating的元組中有一列。我想創建一個基於avg_rating中的值的新列NPS。下面是數據如何AVG_RATING看起來像豬根據另一列中的值添加列

avg_rating 
3 
4 
8 
9 
10 

所以如果評級> = 8則Pr 如果評級評級是在4個& 8 NPS之間會爲P 如果評級是< 4然後NPS將進行D

這裏是我嘗試,

yy = FOREACH avg_rating GENERATE avg_rating,((int)wtr>=8 ?'P':(int)wtr>=4 && (int)wtr<8 ?'PR':'D'); 

我使用多個條件在車削操作,但給我的錯誤

語法錯誤,達到或接近 '('

任何想法,什麼是錯這個意想不到的象徵?

回答

3

這裏有幾個問題。

  1. 不能產生AVG_RATING
  2. ,取而代之的& &
  3. 另一組圍繞嵌入式三元括號。

這解析:

avg_rating = load '/tmp' using PigStorage('\t') as (wtr:INT); 

yy = FOREACH avg_rating GENERATE 
wtr, 
((int)wtr>=8 ? 'P' : ((int)wtr>=4 and (int)wtr<8 ? 'PR' : 'D')) as v; 

describe yy; 
相關問題