pig中不支持in子句吗?

f0brbegy  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(570)

我在pig中用了in从句

emp =
FILTER employee_table
BY employee_id IN ('873', '809','819','829')
;

现在我需要使用不在子句

no_emp =
FILTER employee_table
BY employee_id  NOT IN ('873', '809','819','829')
;

会产生错误

2016-08-29 13:22:46,165 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1200: <line 146, column 14>  Syntax error, unexpected symbol at or near 'NOT'

有没有其他方法可以做到这一点?

gcmastyq

gcmastyq1#

布尔运算
仅使用 NOT 不是 NOT IN ```
no_emp =
FILTER employee_table
BY employee_id NOT ('873', '809','819','829')
;

如果上述方法无效,请尝试: `NOT (in ('873', '809','819','829'))` 更新: `NOT IN` 中不存在运算符 `PIG` . 使用 `MATCHES` 是正则表达式匹配,它对正则表达式使用java格式。 `BY NOT(employee_id MATCHES '8[0127][39]')` 
gpfsuwkq

gpfsuwkq2#

您可以使用spilt和其他命令。下面举一个例子

SPLIT employee_table INTO emp1 IF employee_id IN ('873', '809','819','829'),  emp2 OTHERWISE;

正如您所猜测的,具有4个employee id的数据将指向关系emp1,其余的将指向关系emp2

相关问题