orange1
orange1

Reputation: 2939

Using Pig conditional operator to implement or?

Let's say I have some table f, consisting of the following columns:

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

I want to create a new column, c, that is equal to a | b.

I've tried the following:

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

but receive the following error:

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

Upvotes: 0

Views: 611

Answers (1)

Sivasakthi Jayaraman
Sivasakthi Jayaraman

Reputation: 4724

The OR condition construction is not correct, Can you try this?

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

Sample example:
input:

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

PigScript:

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;

Output:

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

Upvotes: 2

Related Questions