はじめに ― 「どの計算を使えばいい?」という悩み
Tableauを使い始めてしばらくすると、必ずぶつかる壁があります。 それが「計算フィールド、LOD式、テーブル計算の3種類があるけど、結局どれをいつ使えばいいの?」という疑問です。
たとえばこんな場面を想像してください。 「顧客ごとの初回購入日を求めたい」「売上の累計を出したい」「全体に対する構成比を表示したい」―― どれも計算が必要ですが、使うべき手段はそれぞれ異なります。 間違った計算方式を選ぶと、数値が期待通りに出なかったり、フィルターを変えると数値が崩れたりする問題が起きます。
本記事では、3種類の計算の概念から具体的な使い分けの判断基準、よくある失敗例まで体系的に解説します。 フローチャートを頭に入れておくと、実務でも試験でも迷わずに対応できるようになります。
3種の計算の基本概念
まず、それぞれの計算がどのような仕組みで動くかを理解することが重要です。 根本的な違いを把握しておけば、フローチャートを使わなくても自然と判断できるようになります。
計算フィールド ― 行レベルと集計の2種類
計算フィールドは最も基本的な計算手段で、データソースの各行に対して計算を行う「行レベル計算」と、 SUM・AVGなどを含む「集計計算」の2種類があります。
- 行レベル計算の例:
[売上] - [原価](各行の利益を計算)、DATEPART('year', [注文日])(日付から年を抽出) - 集計計算の例:
SUM([売上]) / SUM([数量])(平均単価)、AVG([割引率])(平均割引率)
計算フィールドはデータソース内の値をそのまま操作する計算です。 ビューに何が表示されているかに関わらず、データの各行または集計値に対して計算を行います。 直感的に作成できる反面、「ビューの粒度とは別のレベルで集計したい」という要求には対応できません。
LOD式 ― ビューの粒度に縛られない集計
LOD(Level of Detail)式は、ビューに表示されているディメンションとは独立した粒度で集計を行うための構文です。 LODには3種類の構文があります。
- FIXED: 指定したディメンションで固定して集計する。ビューのフィルターや粒度に影響されない(ただし、コンテキストフィルターは影響する)。 例:
{FIXED [顧客ID] : MIN([注文日])}(顧客ごとの初回購入日) - INCLUDE: ビューのディメンションに加えて、指定したディメンションも含めて集計する。 例:
{INCLUDE [注文ID] : SUM([売上])}(注文単位の売上を含む集計) - EXCLUDE: ビューのディメンションから指定したディメンションを除いて集計する。 例:
{EXCLUDE [月] : SUM([売上])}(年間合計を月次ビューに表示)
LOD式の最大の特徴は、「ビューがどのように表示されているか」に関係なく、 指定した粒度で集計を行える点です。 「全顧客の平均購入額をどの粒度のビューでも一定値として表示したい」といったケースに最適です。
テーブル計算 ― ビュー上の値を二次計算する
テーブル計算は、Tableauがビューに表示した集計値に対して、さらに計算を行う「二次計算」です。 データソースへのクエリが完了した後、表示されているテーブルの値を使って計算するため、 ビューの構成が変わると計算結果も変わります。
- RUNNING_SUM: 累計(例: 月次売上の累計推移)
- WINDOW_AVG / WINDOW_SUM: ウィンドウ内の平均・合計(例: 移動平均)
- RANK: 順位付け(例: 売上上位10社)
- PERCENT_OF_TOTAL: 全体に対する構成比(例: カテゴリ別売上比率)
- LOOKUP: 別の行・列の値を参照(例: 前月比の計算)
テーブル計算はビューの「パーティション」と「アドレス指定」という概念が重要です。 どのディメンションを基準に計算し、どの方向に進むかを正しく設定する必要があります。 設定を誤ると、期待とは異なる方向に累計が走ったりするため、慎重な設定が必要です。
使い分けフローチャート
3種の計算の特徴を理解したうえで、実際にどれを選ぶか判断するためのフローチャートを紹介します。 以下の質問を順番に答えていくだけで、適切な計算方式が絞り込めます。
フローチャート: Tableauの計算方式の選び方
- データソースの各行に対して計算したい(例: 単価×数量、日付から年を抽出)?
→ 計算フィールド(行レベル) を使う - 集計が必要だが、ビューのディメンション構成と同じ粒度でよい?
→ 計算フィールド(集計計算) を使う(SUM, AVG等を含む式) - ビューに表示されているディメンションとは異なる粒度で集計したい?
(例: 月次ビューで顧客ごとの年間合計を表示、全体平均をどの粒度でも固定表示)
→ LOD式(FIXED / INCLUDE / EXCLUDE) を使う - ビューに表示された集計値を元にさらに計算したい?
(例: 累計、順位、前月比、移動平均、全体比率)
→ テーブル計算 を使う
フローチャートを使った具体例
「月ごとの売上と、その累計を同じビューに表示したい」というケースを考えてみましょう。
- 月ごとの売上合計 → 計算フィールド(集計):
SUM([売上])をビューに配置するだけ - 累計 → テーブル計算: SUM([売上])にRUNNING_SUMを適用
「顧客ごとの初回購入日を求め、月次ビューに表示したい」というケースでは:
- 初回購入日 → LOD式(FIXED):
{FIXED [顧客ID] : MIN([注文日])} - これにより、月次ビューでも顧客ごとの初回購入日が正しく取得できる
「全体の売上に対するカテゴリ別構成比を表示したい」場合は:
- 構成比 → テーブル計算: SUM([売上])にPERCENT_OF_TOTALを適用
- または LOD式(EXCLUDE):
SUM([売上]) / {EXCLUDE [カテゴリ] : SUM([売上])} - 両方使えるが、フィルターの影響を受けたくない場合はLOD式が適切
よくある間違いと対処法
3種の計算を間違って使った場合、エラーが出るケースよりも「数値が一見正しそうに見えるが実は誤っている」 というケースの方が厄介です。代表的な失敗例を3つ紹介します。
失敗例1: テーブル計算でやるべきことをLOD式でやろうとする
「前月比を計算したい」と考えて、LOD式で前月の売上を参照しようとするケースがあります。 しかし前月比は「ビューに表示された値を横方向に参照する」計算であり、これはテーブル計算(LOOKUP関数)の領域です。 LOD式は粒度の制御に使うものであり、ビュー上の「となりの値」を参照する用途には向きません。テーブル計算のLOOKUP関数を使うのが正しい選択です。
失敗例2: 計算フィールドで粒度を制御しようとする
「月次ビューで顧客ごとの年間合計を表示したい」というケースで、 計算フィールドにSUMを入れるだけでは月次に集計されてしまい、年間合計にはなりません。 このような「ビューの粒度とは独立した集計」が必要な場面では、 FIXEDを使ったLOD式が正解です。{FIXED [顧客ID] : SUM([売上])}のように記述することで、 どの粒度のビューでも顧客ごとの年間合計が正しく表示されます。
失敗例3: フィルターとテーブル計算の順序を把握していない
テーブル計算はTableauのクエリパイプラインの中で非常に遅いタイミング(レンダリング直前)に実行されます。 そのため、ディメンションフィルターをかけると累計やランクの計算が意図せず変わってしまうことがあります。 特定の値をフィルターしつつ全体ベースの計算を維持したい場合は、 テーブル計算ではなくLOD式(FIXED)の使用を検討してください。 また、LOD式(FIXED)をフィルターの影響から守るには「コンテキストフィルター」の活用も有効です。
DA試験(Tableau Certified Data Analyst)での出題傾向
Tableau Certified Data Analyst(DA試験)では、LOD式とテーブル計算の問題が高頻度で出題されます。 合格者のフィードバックや公式のExam Guideから、特に注意すべきポイントをまとめます。
- LOD式のFIXED vs INCLUDE vs EXCLUDE の使い分け: 「この計算結果を得るにはどのLOD構文を使うか」という選択問題が出る。 特にFIXEDとEXCLUDEの違い(ビューのディメンションより粗い粒度での集計)を問われやすい。
- クエリパイプラインの順序: Tableauの処理順序(データソース読み込み → 計算フィールド → LOD式 → ディメンションフィルター → テーブル計算)を問う問題が出る。 「なぜFIXEDはディメンションフィルターの影響を受けないのか」という概念理解が問われる。
- テーブル計算のパーティションとアドレス指定: RUNNING_SUMやWINDOW_AVGを正しく設定するための「パーティション」と「アドレス指定」の理解が必須。 「どのディメンションで計算をリセットするか」という問題が出やすい。
- 集計の違い(行レベル vs ビューレベル): 計算フィールドを行レベルで定義した場合と、集計後に定義した場合で結果が異なるケースを問う問題が出る。 特に割り算の計算では集計の順序によって結果が変わるため注意が必要。
DA試験は全65問の選択式で、難易度が高いといわれています。 計算関連の問題は全体の15〜20%程度を占めると推定されており、 LOD式とテーブル計算の深い理解が合否を左右します。
PassDojo Tableau実践入門で実践練習しよう
概念を理解したら、実際にTableauを操作して確かめることが理解を定着させる近道です。 PassDojoのTableau実践入門では、計算フィールド・LOD式・テーブル計算のすべてを段階的に実践できる課題を用意しています。
Step04: 計算フィールドの基礎
Step04では売上データを使って行レベルの計算フィールドと集計計算の両方を作成します。 利益率や平均単価といった基本的な指標を計算フィールドで表現する練習を通じて、 Tableauの計算フィールドの仕組みを体験的に習得できます。
Step34〜36: LOD式の段階的習得
Step34ではFIXEDの基礎、Step35ではINCLUDE/EXCLUDEの使い分け、 Step36ではLOD式とフィルターの組み合わせを扱います。 実際のデータを使って「ビューを変えても結果が変わらないこと」を体験することで、 LOD式の本質的な理解が深まります。 DA試験に出題されるLOD式の問題に対応できる力を養えます。
Step44: WINDOW関数とテーブル計算
Step44ではWINDOW_SUM・WINDOW_AVGを使った移動平均や累計のビューを作成します。 パーティションとアドレス指定を実際に操作しながら設定することで、 テーブル計算の「パーティションで計算をリセットする」という概念が直感的に理解できます。
Tableau実践入門で計算の実力を鍛える
計算フィールド(Step04)、LOD式(Step34〜36)、テーブル計算(Step44)を Tableau実践入門で実際に手を動かして習得しましょう。 Step01は無料体験可能です。
DA試験の模擬試験で理解を確認する
LOD式・テーブル計算の実践力が身についたら、模擬試験で本番形式の問題を解いて定着度を確認しましょう。 PassDojoのDA試験模擬問題はDA試験の出題傾向に合わせた問題構成です。
あわせて読みたい
※ 本記事はTableau Certified Data Analyst試験およびTableau Desktop基礎試験の学習を支援する目的で作成しています。 試験の最新情報・出題範囲はSalesforce(Tableau)の公式サイトをご確認ください。 フローチャートの判断基準は一般的なケースを想定しており、実際の要件によって最適な方式は異なる場合があります。