使用pig条件运算符实现or?

zvokhttg  于 2021-06-25  发布在  Pig
关注(0)|答案(1)|浏览(423)

假设我有一些表f,由以下列组成:

a, b
0, 1
0, 0
0, 0
0, 1
1, 0
1, 1

我想创建一个新的列c,它等于a | b。
我试过以下方法:

f = foreach f generate a, b, ((a or b) == 1) ? 1 : 0 as c;

但收到以下错误:

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: Pig script failed to parse: NoViableAltException(91@[])
iyfjxgzm

iyfjxgzm1#

这个 OR 条件构造不正确,你能试试这个吗?

f = foreach f generate a, b, (((a==1) or (b==1))?1:0) AS c;

示例:
输入:

0,1
0,0
0,0
0,1
1,0
1,1

Pig手稿:

A = LOAD 'input' USING PigStorage(',') AS (a:int,b:int);
B = foreach A generate a, b, (((a==1) or (b==1))?1:0) AS c;
DUMP B;

输出:

(0,1,1)
(0,0,0)
(0,0,0)
(0,1,1)
(1,0,1)
(1,1,1)

相关问题