6

豚の分割操作にはelseまたはデフォルトのステートメントがないため、次のことを行う最もエレガントな方法は何ですか? 私は貼り付けコードをコピーしなければならないのが好きではありません。

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;

とにかくこのようなことは可能ですか?

4

2 に答える 2

11

です。のドキュメントをチェックアウトして、SPLIT使用したいOTHERWISE. 例えば:

SPLIT data
    INTO good_data IF (
    (value > 0)),
    good_data_big_values IF (
    (value > 100)),
    bad_data OTHERWISE;

それで、あなたはほとんどそれを手に入れました。:)

注: SPLIT単一の行を両方に配置できますgood_datagood_data_big_valuesたとえば、value150 の場合。これが必要かどうかはわかりませんが、関係なく注意する必要があります。これは、が 0 以下のbad_data行のみが含まれることも意味します。value

于 2013-09-20T15:34:33.387 に答える
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))
;

別のオプションは、マクロを使用することです

于 2013-09-20T15:38:46.440 に答える