Tableau CASE関数の完全ガイド|複数条件の分岐・部分一致・VLOOKUP代替手法まで解説

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.42536.42
敦賀市福井県∥63050∥251.47251.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 + SPLITVLOOKUP代替の裏技として使えるがメンテ注意
  • LOOKUPSWITCH は目的が違うため、正確に区別して使いましょう

検索ニーズの高い「Tableau CASE WHEN 複数」「VLOOKUP in Tableau」「SWITCH関数代替」「LOOKUPとの違い」などに正しく対応した記事構成としています。

Comment

コメントする

目次