我在元组中有一列称为avg_rating。我想基于avg_rating中的值创建一个新列NPS。这是avg_rating数据的样子

avg_rating
3
4
8
9
10

因此,如果评级> = 8,则Pr
如果等级介于4到8 NPS之间,则为P
如果评分
这是我正在尝试的
yy = FOREACH avg_rating GENERATE avg_rating,((int)wtr>=8 ?'P':(int)wtr>=4 && (int)wtr<8 ?'PR':'D');

我在Turnery运算符中使用了多个条件,但给我错误



知道这有什么问题吗?

最佳答案

这里有几个问题。

  • 您无法生成avg_rating
  • ,而不是&&
  • 嵌入三元数的另一组括号。

  • 解析:
    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;
    

    关于hadoop - pig 根据另一列中的值添加列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20477924/

    10-12 23:46