我正在使用一个用例,我们必须从元组中删除空值
A =
(7,Ron,ron@abc.com)
(8,,rina@xyz.com )
(9,Don,)
(9,Don,dmes@xyz.com)
(10,Maya,maya@cnn.com)
B = FILTER A BY col2 != '';
输出: -
(7,Ron,ron@abc.com)
(9,Don,dmes@xyz.com)
(10,Maya,maya@cnn.com)
此处过滤器运算符过滤第二行。但是我们必须过滤该列。
预期输出应该是这样的:
(7,Ron,ron@abc.com)
(8,rina@xyz.com)
(9,Don,dmes@xyz.com)
(9,Don)
(10,Maya,maya@cnn.com)
答案 0 :(得分:0)
我们可以将关系拆分为子关系,项目所需的列,然后将结果合并在一起: 因此,如果第一列不可为空,则第二列和第三列可以为空,但总是我们至少有一个,那么:
SPLIT A INTO col1null IF $1 is null, col2null IF $2 is null, allnotnull IF ($1 is not null AND $2 is not null);
col1reject = FOREACH col1null GENERATE $0,$2; --remove column $1
col2reject = FOREACH col2null GENERATE $0,$1; --remove column $2
OUT = UNION allnotnull ,col1reject , col2reject ;