猪是否支持 NOT IN 子句?
Is NOT IN clause supported in pig?
我在 PIG 中使用了 In 子句作为
emp =
FILTER employee_table
BY employee_id IN ('873', '809','819','829')
;
现在我需要使用 NOT IN 子句
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'
还有其他方法可以做到吗?
仅使用 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
中不存在。 Use MATCHES
是正则表达式匹配,正则表达式使用Java格式。
BY NOT(employee_id MATCHES '8[0127][39]')
您可以使用 SPILLED 和 OTHERWISE 命令。下面提到了一个例子
SPLIT employee_table INTO emp1 IF employee_id IN ('873', '809','819','829'), emp2 OTHERWISE;
如你所料,有 4 个员工 ID 的数据将指向关系 emp1,其余数据将指向关系 emp2
我在 PIG 中使用了 In 子句作为
emp =
FILTER employee_table
BY employee_id IN ('873', '809','819','829')
;
现在我需要使用 NOT IN 子句
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'
还有其他方法可以做到吗?
仅使用 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
中不存在。 Use MATCHES
是正则表达式匹配,正则表达式使用Java格式。
BY NOT(employee_id MATCHES '8[0127][39]')
您可以使用 SPILLED 和 OTHERWISE 命令。下面提到了一个例子
SPLIT employee_table INTO emp1 IF employee_id IN ('873', '809','819','829'), emp2 OTHERWISE;
如你所料,有 4 个员工 ID 的数据将指向关系 emp1,其余数据将指向关系 emp2