Tableauで「値に応じて表示内容を変えたい」ときに活躍するのが CASE関数
です。IF文よりもシンプルで、パターン分岐に強いのが特長。ただし、CASE関数は単一の値による完全一致判定のみ対応しており、複数条件やOR条件、IN句などは使用できません。この記事では、誤用を避けつつ、CASE関数の正しい活用方法と、IF関数やLOOKUP関数との違い、さらにはExcelのVLOOKUPを模した使い方、そして上級者向けの難易度の高いユースケースまで網羅的に解説します。
Tableau CASE関数とは?
CASE関数は、指定したフィールドの値に応じて完全一致で結果を分岐させる論理関数です。
CASE [都道府県]
WHEN "東京都" THEN "関東"
WHEN "大阪府" THEN "関西"
ELSE "その他"
END
このように、1つの値に基づいて処理を分けるときに便利です。ELSE句でデフォルト値も設定できます。
TableauでCASE WHENに複数条件を記述できるか?
CASE関数では複数条件は書けません(使用不可)
以下のような構文は エラーになります。
// 使用不可な構文(IN句はCASEで使えない)
CASE [都道府県]
WHEN IN("東京", "神奈川") THEN "関東" // エラー
END
正しくはIF関数を使いましょう
IF [都道府県] = "東京" OR [都道府県] = "神奈川" THEN "関東"
ELSE "その他"
END
CASEは 1つの値との一致のみを判定できます。複数条件、OR条件、IN条件が必要な場合はIF関数を使いましょう。
具体例:都道府県によるエリア分け(複数条件)
IF [都道府県] IN ("東京都", "神奈川県", "千葉県", "埼玉県") THEN "関東"
ELSEIF [都道府県] IN ("大阪府", "京都府", "兵庫県") THEN "関西"
ELSE "その他"
END
上級者向けユースケース
マルチレベル分類:CASEをネストしてカテゴリ分岐
CASE [商品カテゴリ]
WHEN "家電" THEN
CASE [サブカテゴリ]
WHEN "テレビ" THEN "大型家電"
WHEN "掃除機" THEN "中型家電"
ELSE "その他家電"
END
WHEN "食品" THEN
CASE [サブカテゴリ]
WHEN "冷凍食品" THEN "要冷蔵"
WHEN "常温保存" THEN "常温"
ELSE "その他食品"
END
ELSE "分類不明"
END
複数の軸でロジックを分岐したいとき、入れ子構造によって分類処理を簡潔に表現できます。
カスタムインジケータ:数値スコアの等級ラベル化
CASE
WHEN [スコア] >= 90 THEN "Sランク"
WHEN [スコア] >= 75 THEN "Aランク"
WHEN [スコア] >= 60 THEN "Bランク"
ELSE "Cランク"
END
スコアや評価指標を定性的なラベルに変換したいときに有効です。
地理情報をもとに都道府県コードを変換(文字列 → 数値)
CASE [都道府県]
WHEN "北海道" THEN 1
WHEN "青森県" THEN 2
// ...
WHEN "沖縄県" THEN 47
END
自治体コードなどのID体系を統一したい場合に便利です。
アンケート回答をカテゴリ化(スコア帯別)
CASE
WHEN [NPSスコア] >= 9 THEN "推奨者"
WHEN [NPSスコア] >= 7 THEN "中立者"
ELSE "批判者"
END
NPS(ネットプロモータースコア)分析や5段階評価などの変換にも使えます。
固定マスタ値の組み合わせを管理(SPLIT応用)
CASE [商品コード]
WHEN "A001" THEN "電化製品∥4980円∥在庫有"
WHEN "A002" THEN "食品∥300円∥欠品"
END
SPLIT([マスタ], "∥", 2) // → 金額を抽出
外部データとJOINしない簡易マスタ構成として使用可能です。
Tableau CASE関数とIF関数の違いを表で整理
条件内容 | 使用関数 | 理由 |
---|---|---|
値の完全一致で分類 | CASE | 書式が簡潔・可読性が高い |
複数条件・OR・ANDが必要 | IF | 複雑な条件式を柔軟に書ける |
範囲判定・部分一致 | IF + 関数 | REGEXPや数値比較などが必要なため |
CASE関数で部分一致や範囲判定を再現するには?
REGEXP_EXTRACTを組み合わせて部分一致を再現
CASE [都道府県]
WHEN REGEXP_EXTRACT([都道府県], ".*(都)$") THEN "都グループ"
WHEN REGEXP_EXTRACT([都道府県], ".*(県)$") THEN "県グループ"
ELSE "その他"
END
具体例:エリア名称の末尾で分類
入力 | 出力 |
---|---|
東京都 | 都グループ |
京都府 | その他 |
沖縄県 | 県グループ |
札幌市 | その他 |
TableauでVLOOKUPのようなことはできる?
CASE + SPLIT でVLOOKUP代替可能
="WHEN '"&A2&"' THEN '"&TEXTJOIN("∥", FALSE, B2:D2)&"'"
CASE [市町村]
WHEN '福井市' THEN '福井県∥258854∥536.42'
WHEN '敦賀市' THEN '福井県∥63050∥251.47'
END
FLOAT(SPLIT([マスタ], "∥", 3))
具体例:面積の抽出
入力 | マスタ値 | 出力値 |
---|---|---|
福井市 | 福井県∥258854∥536.42 | 536.42 |
敦賀市 | 福井県∥63050∥251.47 | 251.47 |
CASE関数とLOOKUP関数はどう違う?
用途 | 関数 | 使いどころ |
---|---|---|
値による条件分岐 | CASE | データの分類・表示変更に最適 |
過去行・前行などの参照 | LOOKUP | 時系列や差分計算で「前の値」を使うとき |
TableauにSWITCH関数はある?
Tableauには ExcelのようなSWITCH関数は存在しません。代わりに CASE関数またはIF/ELSEIF で代用しましょう。
よくあるFAQ:Tableau CASE関数
Q. CASE WHEN 複数条件はどう書けばいい?
A. 書けません。複数条件やOR条件はIF関数で書いてください。
Q. CASE IN構文は使えますか?
A. 使えません。INはIF関数専用です。
Q. CASEとIF、どちらが速い?
A. パフォーマンス差はほぼありません。構文の見やすさ・用途で選びましょう。
Q. CASE式がうまく動かないのはなぜ?
A. 一致対象のデータ型がずれていたり、スペースや全角・半角が異なっている場合があります。特に完全一致前提なので注意が必要です。
Q. VLOOKUPの代替手段は?
A. CASE + SPLITまたはJOIN/関係データとして別ファイルにしてJOINするのが基本です。
まとめ:CASE関数の強みと限界を正しく理解する
CASE
は 完全一致による条件分岐に最適- 複数条件、OR、IN句などはIF関数で対応
REGEXP_EXTRACT
と併用で 部分一致や文字パターン分類も可能CASE + SPLIT
は VLOOKUP代替の裏技として使えるがメンテ注意LOOKUP
やSWITCH
は目的が違うため、正確に区別して使いましょう
検索ニーズの高い「Tableau CASE WHEN 複数」「VLOOKUP in Tableau」「SWITCH関数代替」「LOOKUPとの違い」などに正しく対応した記事構成としています。
Comment