単純な case 演算子
構文
1case
2 primary_expr
3 when test_expr then result_expr
4 [when test_expr2 then result_expr2 ]
5 [else default_expr ]
6endcase...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 を使用して Industry_Code 項目を解析し、対応する文字列を指定します。
1q = foreach q generate Amount as 'Amount', 'Industry_Code' as 'Industry_Code', (case 'Industry_Code'
2 when 541611 then "Consulting services"
3 when 541800 then "Advertising"
4 when 561400 then "Support services"
5 else "Unspecified"
6end) as 'Industry';結果のデータには、業種コードの意味が示されています。

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