既然pig split操作中没有其他语句或默认语句,那么执行以下操作的最优雅的方法是什么?我不喜欢复制粘贴代码。
SPLIT rawish_data
INTO good_rawish_data IF (
(uid > 0L) AND
(value1 > 0) AND
(value1 < 100) AND
(value1 IS NOT NULL) AND
(value2 > 0L) AND
(value2 < 200L) AND
(value3 >= 0) AND
(value3 <= 300)),
bad_rawish_data IF (NOT (
(uid > 0L) AND
(value1 > 0) AND
(value1 < 100) AND
(value1 IS NOT NULL) AND
(value2 > 0L) AND
(value2 < 200L) AND
(value3 >= 0) AND
(value3 <= 300)));
我想做一些像
SPLIT data
INTO good_data IF (
(value > 0)),
good_data_big_values IF (
(value > 100)),
bad_data DEFAULT;
不管怎样,这样的事情可能发生吗?
2条答案
按热度按时间yduiuuwa1#
您可以编写一个isgood()自定义项来检查所有条件。那你的Pig就是
另一种选择可能是使用宏
mm9b1k5b2#
它是。查看文档
SPLIT
,您要使用OTHERWISE
. 例如:所以你差点就成功了
注:
SPLIT
可以把一行放进两行good_data
以及good_data_big_values
例如,如果,value
是150。我不知道这是否是你想要的,但你应该意识到这一点。这也意味着bad_data
只包含以下行value
等于或小于0。