由于猪分割操作中没有其他或默认语句,以下是最优雅的方法吗?我不喜欢复制粘贴代码。
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;
无论如何这样的事情是否可能?
答案 0 :(得分:10)
是的。查看SPLIT
的文档,您想要使用OTHERWISE
。例如:
SPLIT data
INTO good_data IF (
(value > 0)),
good_data_big_values IF (
(value > 100)),
bad_data OTHERWISE;
所以你几乎得到了它。 :)
注意: SPLIT
可以在good_data
和good_data_big_values
中添加一行,例如,value
为150。不知道这是不是你想要的,但你应该知道它。这也意味着bad_data
将只包含value
为0或更小的行。
答案 1 :(得分:2)
您可以编写一个IsGood()UDF,其中检查所有条件。然后你的猪只是
SPLIT data
INTO good_data IF (IsGood(data))
good_data_big_values IF (IsGood(data) AND value > 100)),
bad_data IF (NOT IsGood(data))
;
另一种选择可能是使用macro