2016-08-29 4 views
0

Я использовал статью В в свиньюНЕ ВКЛЮЧЕНО в повязке?

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' 

Есть ли другой способ делать то же самое?

ответ

0

Boolean Operators

использование только 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]')

+0

Нет, не работал до сих пор бросает ошибку при НЕ – Freeman

+0

попробуйте обновить ответ с помощью 'MATCHES' - Регулярное выражение –

1

вы можете использовать ПРОЛИВЫ и командует. пример упоминается ниже

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

, как вы можете догадаться, данные с 4-идентификаторов сотрудников будет указывать на соотношение emp1 и остальные будут указывать на отношение етр2

Смежные вопросы