Я не думаю, что вы можете проверить на нуль в случае statement.Instead, вы можете использовать bincond оператору первую проверку на нулевое значение, а затем использовать случай заявление для остальной части «Foo» значения
Предполагая, что A имеет только одно поле с нулевыми значениями в несколько рядов
B = FOREACH A GENERATE (foo is null ? 'something' : (case foo
when 'S' then '1'
when 'W' then '2'
...
else '3'
end));
Пример
1 1
2 1
3 1
4 2
Script - Создание некоторых аннулирует для тестирования и заменить 'НЕЧТО'
A = LOAD '/test20.txt' AS (f1:int,f2:int);
B = FOREACH A GENERATE $0;
C = FOREACH A GENERATE $1;
D = JOIN B BY $0 LEFT OUTER,C BY $0;
E = FOREACH D GENERATE $0, ($1 is null ? 'SOMETHING' : (case $1
when 1 then 'One'
when 2 then 'Two'
when 3 then 'Three'
when 4 then 'Four'
else 'UNKNOWN'
end));
DUMP E;
Выходной
Почему downvote, мне нужно, чтобы добавить информацию? – Andrew
Не знаете, почему кто-то занижен. Это определенно правильный вопрос. –