5

PIG 是否支持 IN 子句?

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

还是我应该把它分成多个OR?

谢谢!

4

6 回答 6

6

您可以改用来自 Apache DataFu 的以下 udf。这将帮助您避免编写大量 OR。

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

于 2014-03-21T18:20:33.763 回答
3

Pig 0.12 添加在运营商http://www.edureka.co/blog/operators-in-apache-pig-diagnostic-operators/见页面底部..发行说明。没有在官方文档中找到它(除了在发行说明中没有提到)

于 2014-09-09T07:00:09.503 回答
2

我在文档的任何示例中都没有找到它。

你可以通过使用 AND/OR/NOT

于 2011-08-24T16:58:42.090 回答
1

不,Pig 不支持 IN 子句。我也有类似的情况。尽管您可以使用 AND 运算符和过滤关键字作为解决方法。喜欢

A= LOAD 'source.txt' AS (user:chararray, age:chararray);

B= FILTER A BY ($1 匹配 'tapan') AND ($1 匹配 'superman');

但是,如果需要的过滤数量很大。然后,您可能只需要创建一个包含所有这些关键字的关系,然后进行连接以过滤匹配的匹配项。希望这可以帮助。

于 2012-05-15T08:43:24.700 回答
1

你可以这样做:

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

更多信息

于 2017-12-07T08:52:51.563 回答
1

我们可以使用 IN 子句如下:

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

DUMP A;
于 2017-02-12T10:15:51.903 回答