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

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

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