検索 case 演算子
構文
1case
2 when search_condition then result_expr
3 [when search_condition2 then result_expr2 ]
4 [else default_expr ]
5endcase...end は、case 演算子を開いて閉じるためのものです。
when...then は、条件ステートメントを定義するためのものです。case 式には、1 つ以上の条件ステートメントを含めることができます。
search_condition には boolean 値を返す任意のスカラー式を指定できます。結果が boolean 値であれば、複雑な boolean 式もネストされた case も指定できます。サポートされる演算子については、「比較演算子」を参照してください。。
result_expr は、単一の入力値を取り込み、単一の出力値を返す任意の式です。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。この式は、検索条件での指定と同じデータ型を返す必要があります。
else default_expr (省略可能) は、単一の入力値を取り込み、単一の出力値を返す任意の式です。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。この式は、数値、文字列、または日付を返すことができます。
使用方法
デフォルトの式を指定するには、else を使用します。たとえば、業種を指定しない場合は、「業種は指定されていません」という文字列を使用します。デフォルトのステートメントを指定しない場合は、null が返されます。
case 式は、foreach ステートメントで使用できます。case を order、group、filter の各ステートメントで使用することはできません。
例
各営業担当の商談規模の中央値を確認するとします。商談規模の中央値を [小]、[中]、[大] の各バケットに振り分ける必要があります。case を使用して、それぞれの値を商談規模の中央値に割り当てます。
1q = load "data";
2q = group q by 'Account_Owner';
3q = foreach q generate 'Account_Owner' as 'Account_Owner', median('Amount') as 'Median Amount', (case
4
5 when median('Amount') < 1000000 then "Small"
6 when median('Amount') > 1600000 then "Large"
7 else "Medium"
8
9end ) as 'Category';結果のデータには、各営業担当の商談規模の中央値と、該当するビンのラベルが示されています。

null 値の処理
通常、null 値は比較できません。検索条件が null と評価されると、default_expr が返されます。デフォルトの式が指定されていない場合は、null が返されます。