検索 case 演算子
構文
1case
2 when primary_expr = test_expr then result_expr
3 [when primary_expr = test_expr2 then result_expr2 ]
4 [else default_expr ]
5endcase...end は、case 演算子を開いて閉じるためのものです。
primary_expr は、単一の入力値を取り込み、単一の出力値を返す任意の式です。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。この式は、数値、文字列、または日付を返すことができます。
when...then は、条件ステートメントを定義するためのものです。case 式には、1 つ以上の条件ステートメントを含めることができます。
test_expr は、単一の入力値を取り込み、単一の出力値を返す任意の式です。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。この式は、primary_expr と同じデータ型を返す必要があります。
result_expr は、単一の入力値を取り込み、単一の出力値を返す任意の式です。値、識別子、およびスカラー関数 (日付関数や算術関数を含む) などを含めることができます。この式は、primary_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 値は比較できません。primary_expr または test_expr が null に評価されたときは、default_expr が返されます。デフォルトの式が指定されていない場合は、null が返されます。