假设我想从同一个字段中选择一个数据子集。现在我必须这样做
TestLocationsResults = FILTER SalesData by (StoreId =='17'
or StoreId =='85'
or StoreId =='12'
or StoreId =='45'
or StoreId =='26'
or StoreId =='75'
or StoreId =='13'
)
在sql中,我们可以简单地执行以下操作:
SELECT * FROM SalesData where StoreID IN (17, 12, 85, 45, 26, 75, 13)
在Pig身上有没有一条我错过的捷径?
5条答案
按热度按时间23c0lvtd1#
当数据类型为
chararray
,是使用正则表达式:当数据类型为
int
,你可以试着chararray
.jslywgbw2#
你现在这样做是最好的方式在Pig。所有你现在所做的事情的替代方法要么是刻板的,要么是缓慢的,要么两者兼而有之。希望pig能在将来的版本中添加一个“in”查询,但目前您正在以可用的最佳方式进行此操作。
aydmsdu93#
看起来Pig0.12加了一个
IN
接线员。所以你可以
wqsoz72f4#
pig中没有in关键字来进行这种集合成员检测。
一个建议,如果写一个自定义项(如本问题/答案所示)。
另一种方法是为每种方法创建一个具有值的关系
StoreId
您希望按筛选,然后对这两个关系执行内部联接。v7pvogib5#
一种解决方法是使用内置函数“indexof”,例如:
为了考虑注解,在storeid周围引入“,”符号,使其完全匹配,而不是部分匹配