Поддерживает ли PIG предложение IN?
filtered = FILTER bba BY reason not in ('a','b','c','d');
или я должен разделить его на несколько ИЛИ?
Спасибо!
Поддерживает ли PIG предложение IN?
filtered = FILTER bba BY reason not in ('a','b','c','d');
или я должен разделить его на несколько ИЛИ?
Спасибо!
Я не нашел его ни в одном из примеров в документации.
Вы можете получить, используя AND/OR/NOT
Вместо этого вы можете использовать приведенный ниже udf из Apache DataFu. Это поможет вам избежать написания большого количества операций ИЛИ.
https://github.com/linkedin/datafu/blob/master/src/java/datafu/pig/util/InUDF.java
Добавлен Pig 0.12 В операторе http://www.edureka.co/blog/operators-in-apache-pig-diagnostic-operators/ см. внизу страницы.. примечания к выпуску. Не нашел его в официальных документах (кроме простого упоминания в примечаниях к выпуску)
Нет, Pig не поддерживает пункт IN. У меня была аналогичная ситуация. Хотя вы можете использовать оператор AND и ключевое слово filter в качестве обходного пути. подобно
A= ЗАГРУЗИТЬ 'source.txt' КАК (пользователь:chararray, возраст:chararray);
B= FILTER A BY ($1 соответствует 'tapan') И ($1 соответствует 'superman');
Однако, если количество требуемой фильтрации огромно. Затем, вероятно, вы можете просто создать отношение, содержащее все эти ключевые слова, и выполнить соединение для фильтрации везде, где встречается совпадение. Надеюсь это поможет.
Мы можем использовать предложение IN следующим образом:
A = FILTER alias_name BY col_name IN (val1, val2,...,valn);
DUMP A;
вы можете сделать это, как:
X = FILTER bba BY NOT reason IN ('a','b','c','d');