猪-分割,缺少默认值或if/else [英] pig - split, lack of default or if/else
问题描述
由于Pig split操作中没有其他语句或默认语句,执行以下操作的最佳方法是什么?我不是必须复制粘贴代码的忠实粉丝.
Since there is no else or default statements in pig split operation what would be the most elegant way to do the following? I'm not a big fan of having to copy paste code.
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;
反正有这种可能吗?
推荐答案
是.要使用 SPLIT
的文档,请使用OTHERWISE
.例如:
SPLIT data
INTO good_data IF (
(value > 0)),
good_data_big_values IF (
(value > 100)),
bad_data OTHERWISE;
所以您几乎明白了. :)
So you almost got it. :)
注意::例如,如果value
为150,则SPLIT
可以在good_data
和good_data_big_values
中放入一行.想要,但是无论如何您都应该意识到这一点.这也意味着bad_data
仅包含value
为0或更小的行.
NOTE: SPLIT
can put a single row into both good_data
and good_data_big_values
if, for example, value
was 150. I don't know if this is what you want, but you should be aware of it regardless. This also means that bad_data
will only contain rows where value
is 0 or less.
这篇关于猪-分割,缺少默认值或if/else的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!