猪 - 拆分,缺少默认值或 if/else [英] pig - split, lack of default or if/else
问题描述
既然在 pig 拆分操作中没有 else 或 default 语句,那么执行以下操作的最优雅方法是什么?我不太喜欢复制粘贴代码.
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. :)
注意: SPLIT
可以将一行放入 good_data
和 good_data_big_values
中,例如,value
是 150.我不知道这是否是您想要的,但无论如何您都应该意识到这一点.这也意味着 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屋!