猪-分割,缺少默认值或if/else [英] pig - split, lack of default or if/else

查看:91
本文介绍了猪-分割,缺少默认值或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_datagood_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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆