Использование предложения IN с PIG FILTER - PullRequest
5 голосов
/ 24 августа 2011

PIG поддерживает предложение IN?

filtered = FILTER bba BY reason not in ('a','b','c','d');

или я должен разделить его на несколько ИЛИ?

Спасибо!

Ответы [ 6 ]

6 голосов
/ 21 марта 2014

Вместо этого вы можете использовать ниже udf из Apache DataFu.Это поможет вам избежать написания большого количества ИЛИ.

https://github.com/linkedin/datafu/blob/master/src/java/datafu/pig/util/InUDF.java

3 голосов
/ 09 сентября 2014

Свинья 0,12 добавлено В операторе http://www.edureka.co/blog/operators-in-apache-pig-diagnostic-operators/ см. Внизу страницы.Не нашел его в официальных документах (кроме упоминания в заметках о выпуске)

2 голосов
/ 24 августа 2011

Я не нашел его ни в одном из образцов в документации.

Вы можете получить, используя AND / OR / NOT

1 голос
/ 07 декабря 2017

вы можете делать это нравится:

X = FILTER bba BY NOT reason IN ('a','b','c','d');

больше информации

1 голос
/ 12 февраля 2017

Мы можем использовать предложение IN следующим образом:

A = FILTER alias_name BY col_name IN (val1, val2,...,valn);

DUMP A;
1 голос
/ 15 мая 2012

Нет, Свинья не поддерживает предложение IN. У меня была похожая ситуация. Хотя вы можете использовать оператор AND и ключевое слово filter в качестве обходного пути. как

A = LOAD 'source.txt' AS (пользователь: chararray, возраст: chararray);

B = ФИЛЬТР ПО BY ($ 1 соответствует 'tapan') И ($ 1 соответствует 'superman');

Однако, если количество требуемых фильтров огромно. Затем, возможно, вы можете просто создать отношение, содержащее все эти ключевые слова, и выполнить объединение для фильтрации в случае совпадения вхождения. Надеюсь, это поможет.

...