はじめに ― テーブル計算はビュー上の二次計算
Tableauには大きく分けて3種類の計算方式があります。 通常の計算フィールド、LOD式(Level of Detail式)、そしてテーブル計算です。 このうちテーブル計算は、ビューに表示されたデータを対象として二次的に計算を行う仕組みです。
たとえば月次売上の棒グラフをビューに表示したとき、 テーブル計算を使うとその棒グラフの値を使って累計や前月比、移動平均を計算できます。 「すでに集計されたビュー上の結果をさらに加工する」というのが、テーブル計算の本質です。
テーブル計算が難しいと感じられる理由の多くは、 計算の方向(どの順序でセルをたどって計算するか)の設定にあります。 この記事では、テーブル計算の基本概念から計算方向の理解、よくある使用例、 デバッグ方法まで体系的に解説します。
テーブル計算とは ― 他の計算方式との違い
テーブル計算を理解するために、まず他の計算方式との違いを整理しましょう。
| 計算方式 | 計算タイミング | 入力データ | 典型的な用途 |
|---|---|---|---|
| 計算フィールド | データソースレベル | 行単位の生データ | 利益率・カテゴリ分類・文字列加工 |
| LOD式 | 集計レベル(指定粒度) | ビューと独立した粒度 | 顧客単価・全体比率・初回日付 |
| テーブル計算 | ビュー表示後 | ビュー上の集計済み結果 | 累計・前期比・移動平均・ランク |
テーブル計算は処理の最後に行われるため、フィルター適用後の結果に対して計算が走ります。 また、テーブル計算を含むメジャーはビューのフィルターで除外できない場合があることも 覚えておきましょう。
Tableauでテーブル計算を追加するには、ビュー上のメジャーを右クリックして 「簡易表計算」から選ぶ方法と、計算フィールドで関数を直接記述する方法の2通りがあります。 簡易表計算は手軽ですが設定の柔軟性が限られるため、 複雑な条件が必要なときは計算フィールドで記述します。
基本のテーブル計算関数
テーブル計算でよく使われる関数を6つ紹介します。 それぞれの基本構文と動作を理解しておくと、DA試験でも実務でも対応しやすくなります。
RUNNING_SUM — 累計
RUNNING_SUM(SUM([売上])) は、最初のセルから現在のセルまでの値を累積加算します。 月次売上グラフに累計線を追加する場面で最もよく使われます。 引数には集計関数(SUM・AVG・MIN・MAXなど)を指定します。
RUNNING_SUM の基本構文
RUNNING_SUM(集計関数([メジャー]))
例: RUNNING_SUM(SUM([売上])) — 売上の累計
例: RUNNING_SUM(COUNT([注文ID])) — 注文件数の累計
RUNNING_AVG — 累積平均
RUNNING_AVG(SUM([売上])) は、最初のセルから現在のセルまでの値の平均を返します。 累積平均は月次の実績値とあわせて表示することで、トレンドを滑らかに示すのに役立ちます。
WINDOW_SUM — ウィンドウ合計
WINDOW_SUM(SUM([売上])) は、指定したウィンドウ(範囲)内の値の合計を返します。 引数を省略すると現在のパーティション内の全セルが対象になります。 開始位置と終了位置をオフセットで指定することで、移動合計(スライディングウィンドウ)も計算できます。
WINDOW_SUM のウィンドウ指定
WINDOW_SUM(SUM([売上]), -2, 0)
現在のセル(0)と2つ前のセル(-2)を含む、3セル分の合計を返します。 3ヶ月移動合計を求めるときに使います。
WINDOW_AVG — ウィンドウ平均
WINDOW_AVG(SUM([売上]), -2, 0) は、指定したウィンドウ内の値の平均を返します。 3ヶ月移動平均や5日間移動平均など、スムージングを目的とした可視化でよく使われます。 Step44の課題では、この関数を使って月次売上の移動平均をデュアル軸で表示します。
RANK — ランキング
RANK(SUM([売上])) は、現在のパーティション内での値の順位を返します。 降順(大きい値が1位)がデフォルトです。昇順にしたい場合は第2引数に 'asc' を指定します。 同順位の処理方法を変えたい場合は RANK_DENSE(密な順位)やRANK_UNIQUE(固有の順位)も使えます。
RANK 関連関数の比較
RANK(SUM([売上])) — 同値は同順位、次の順位は飛ばす(1,2,2,4)
RANK_DENSE(SUM([売上])) — 同値は同順位、順位を飛ばさない(1,2,2,3)
RANK_UNIQUE(SUM([売上])) — 常に固有の順位(1,2,3,4)
INDEX — 連番
INDEX() は、パーティション内の各セルに1から始まる連番を振ります。 引数はありません。セルの順序を利用したカラーリングや、ランク表示をシンプルに作りたいときに便利です。 パーティションが変わるとINDEXもリセットされます。
計算方向の理解 ― テーブル・ペイン・セル
テーブル計算の設定で最も重要かつ混乱しやすいのが計算方向です。 Tableauでは「どのセルからどのセルへとたどって計算するか」を 「テーブル(横)」「テーブル(下)」「ペイン(横)」「ペイン(下)」などで指定します。
テーブルとペインの違い
テーブル全体を対象にする場合、計算はビューの端から端まで途切れずに行われます。 たとえば「テーブル(横)」では行ごとに左端から右端へとたどります。
ペインは、ビューの行や列に複数のディメンションが積み重なっているとき、 内側のディメンション単位で区切られた小ブロックのことです。 「ペイン(横)」を選ぶと、各ペインの内部だけで計算がリセットされます。 例えば年×月のクロスビューで「年」ごとに累計をリセットしたいときはペイン(横)が適しています。
| 方向設定 | たどる方向 | リセットのタイミング | 典型的な用途 |
|---|---|---|---|
| テーブル(横) | 左→右 | 行の折り返し時 | 列方向の累計・前月比 |
| テーブル(下) | 上→下 | テーブル全体で1回のみ | 縦方向の累計・ランク |
| ペイン(横) | 左→右 | ペイン切り替え時 | 年単位でリセットする月次累計 |
| ペイン(下) | 上→下 | ペイン切り替え時 | カテゴリ単位でリセットする縦累計 |
| セル | 各セル独立 | 各セルごと | パーティション内比率の分母 |
どの方向設定が正しいかは、「何を区切り(パーティション)として計算をリセットしたいか」 によって決まります。この判断がテーブル計算の核心です。
アドレス指定とパーティション ― 手動設定の考え方
簡易表計算の方向設定で対応できない複雑な要件には、 テーブル計算の「特定のディメンションを使用」設定(手動アドレス指定)を使います。
手動設定では、ビューに使われているディメンションを「アドレス指定」か「パーティション」のどちらかに分類します。
- アドレス指定(計算の対象):テーブル計算がたどる方向を決めるディメンションです。 たとえば「月」をアドレス指定にすると、月の順序に従ってセルをたどります。
- パーティション(リセットの単位):テーブル計算の計算範囲を区切るディメンションです。 「カテゴリ」をパーティションにすると、カテゴリが変わるたびに計算がリセットされます。
簡単にまとめると、「チェックを入れたディメンション = アドレス指定(計算方向に使う)」、 「チェックを入れていないディメンション = パーティション(リセット単位)」です。 Tableauのテーブル計算設定ダイアログで「特定のディメンションを使用」を選択したとき、 チェックボックスで各ディメンションの役割を指定できます。
手動アドレス指定の設定手順
1. ビュー上のテーブル計算メジャーを右クリック →「テーブル計算の編集」を選択
2.「計算タイプ」で目的の関数(累計・差の割合など)を選択
3.「次を使用して計算」で「特定のディメンションを使用」を選択
4. 計算方向に使うディメンションにチェックを入れる(残りがパーティション)
5. チェックを入れたディメンションの順序を並び替えて計算の優先順位を決める
よくある使用例
テーブル計算の代表的な4つの使用例を紹介します。 どれも実務で頻繁に登場するパターンです。
累計売上
月次売上の折れ線グラフやエリアグラフに累計を追加したい場合、RUNNING_SUM(SUM([売上])) を使います。 計算方向は「テーブル(横)」(月が列シェルフにある場合)に設定します。 PassDojo Tableau実践入門 Step06では、この累計売上をエリアグラフで実装します。
前月比・前年同月比
前の期間との差分や割合を求めるには、Tableauの簡易表計算「差の割合」またはLOOKUP(SUM([売上]), -1) を組み合わせる方法が使えます。LOOKUP は指定したオフセット分だけ離れたセルの値を参照するテーブル計算関数で、 前月比は (SUM([売上]) - LOOKUP(SUM([売上]), -1)) / ABS(LOOKUP(SUM([売上]), -1))で計算できます。
移動平均
季節変動を除いたトレンドを見たいときは移動平均が有効です。WINDOW_AVG(SUM([売上]), -2, 0) で直近3ヶ月の移動平均が計算できます。 Step44では月次売上バーと3ヶ月移動平均線をデュアル軸で重ね合わせるビューを作成します。
構成比
各値がパーティション内の合計に占める割合を求めるには、SUM([売上]) / WINDOW_SUM(SUM([売上])) を使います。 分母の WINDOW_SUM がパーティション全体の合計を返すため、 各セルの値を割ることで構成比が得られます。 計算方向で適切なパーティション(カテゴリや地域など)を指定するのがポイントです。
テーブル計算のデバッグ方法
テーブル計算の結果が期待と違うとき、原因の多くは計算方向(アドレス指定とパーティション)の設定ミスです。 以下の手順で確認すると問題を特定しやすくなります。
手順1: INDEXでたどる順序を可視化する
まずビューに INDEX() を追加し、同じ方向設定を適用してみましょう。 INDEXが1から連番になっているか、どのタイミングでリセットされているかを見ることで、 計算が意図した方向にたどっているかを確認できます。
手順2: テーブル計算の設定を開いてディメンションを確認する
メジャーを右クリックして「テーブル計算の編集」を開き、 「特定のディメンションを使用」に切り替えてチェック状態を確認します。 意図しないディメンションがアドレス指定(チェックあり)になっていないかを確認しましょう。
手順3: パーティションとなるディメンションを一時的にビューに追加する
計算がリセットされるタイミングを確認したいときは、 パーティションとして機能しているディメンションをビューの行または列シェルフに追加します。 パーティションの境界が視覚的にわかるため、リセットのタイミングが想定通りかを判断できます。
手順4: 簡易表計算から手動設定に切り替える
「テーブル(横)」などの簡易設定が期待どおりに動かない場合は、 「特定のディメンションを使用」に切り替えて手動で設定します。 ビューにどのディメンションが含まれているかを把握したうえで、 アドレス指定とパーティションを明示的に決めるとデバッグしやすくなります。
DA試験でのテーブル計算出題傾向
Tableau Certified Data Analyst(DA)試験では、テーブル計算に関する問題が複数出題されます。 特に方向と範囲の理解が問われるため、座学だけでなく実際に手を動かしての学習が重要です。
- 計算方向の選択問題:「年ごとに累計をリセットしたい」などのシナリオに対して、 テーブル(横)・テーブル(下)・ペイン(横)・ペイン(下)のどれを選ぶかを問う。 パーティションとアドレス指定の概念を正確に理解していないと判断できない。
- 関数の動作の読み解き:
WINDOW_AVG(SUM([売上]), -2, 0)などの式が何を計算するかを説明させる問題。 引数のオフセット指定(負の値が過去、正の値が未来)を正確に理解しておく必要がある。 - フィルターとテーブル計算の関係:フィルターで行を除外するとテーブル計算の結果が変わる場合があることを問う問題。 テーブル計算がフィルターより後で実行される点(ただし非表示にするだけでは除外されない場合も)を理解しておく。
- RANK関数の同点処理の違い:RANK・RANK_DENSE・RANK_UNIQUEの違いを問う問題。同点が複数あるデータでの出力例から正しい関数を選ぶ形式が多い。
DA試験ではこれらを「どのシナリオでどの設定を選ぶか」という応用問題として出題します。 Tableau実践入門で実際に設定を変えながら動作を確認することが、概念定着の近道です。
PassDojo Tableau実践入門で実践しよう
テーブル計算の理解を深めるには、Tableauを実際に操作して体験することが不可欠です。 PassDojo Tableau実践入門には、テーブル計算に特化した3つのステップが用意されています。
- Step06(初段)— 表計算: 累計売上
RUNNING_SUM(SUM([売上]))を使って月次累計売上のエリアグラフを作成します。 簡易表計算「累計」の設定方法と、計算方向「テーブル(横)」の基本を学べるステップです。 - Step44(五段)— WINDOW関数: 移動平均と累計
WINDOW_AVG(SUM([売上]), -2, 0)で3ヶ月移動平均を計算し、 月次売上バーとデュアル軸で重ねて表示します。 WINDOW関数のウィンドウ範囲指定の理解を深めるステップです。 - Step45(五段)— RANK表計算: 売上ランキング
RANK(SUM([売上]))でサブカテゴリ別売上のランキングを計算し、 ラベルに表示します。RANK・RANK_DENSE・RANK_UNIQUEの違いを実際に確認できるステップです。
Tableau実践入門でテーブル計算を実践する
Step06(初段・無料)で累計の基礎を習得し、 Step44・Step45(五段・プレミアム)でWINDOWとRANKを実践できます。
DA模擬試験でアウトプットを試す
テーブル計算の理解を確認したら、実際の試験形式でアウトプットを試しましょう。 PassDojoのDA模擬試験ではテーブル計算に関する問題も出題されます。
あわせて読みたい
※ 本記事はTableau Certified Data Analyst試験の学習を支援する目的で作成しています。 テーブル計算の仕様や試験の最新情報はSalesforce(Tableau)の公式ドキュメントをご確認ください。 Tableau実践入門のStep44・Step45はプレミアムプランが必要です。