計算式のネスト — LOD内に表計算を組み込む構造を読む
導入
「LOD計算の結果を使ってさらに表計算したい」という状況は、実務の分析では珍しくありません。しかし計算式を入れ子にすると、どちらの計算が先に行われるのかが見えにくくなります。この処理順序を理解しておくと、複雑な数式も落ち着いて読めるようになります。
なぜ重要か
計算式のネストと処理順序は、DA試験の「計算と分析」ドメインで中核的に問われるトピックです。LOD計算と表計算を組み合わせた式を見せて、評価タイミングと結果の正誤を判断させる形式が頻出しており、処理順序を正確に理解していることが点差につながります。
実務でも、コホート分析や累積指標で「LODの結果をさらに表計算で累積する」場面は珍しくありません。入れ子が可能な組み合わせと不可能な組み合わせを知っていれば、エラーに遭遇したときの切り分けが速く、計算フィールドを無駄にやり直す回数を減らせます。
くわしく知ろう
Tableauでは計算が行われる順序(クエリパイプライン)が決まっており、大まかに「データソースフィルタ → LOD計算 → ディメンションフィルタ → 表計算」という流れになっています。LOD計算はビューのレンダリングより前のデータソース側で処理され、表計算はビューが描画された後に実行されます。この順序の差が、入れ子構造の動作を決めます。
LOD計算の結果を表計算の引数として使うことは可能です。たとえば `RUNNING_SUM({ FIXED [顧客ID] : SUM([売上]) })` のような記述は、まずFIXEDで顧客ごとの合計が計算され、その結果がビューに展開された後にRUNNING_SUMが適用されるという二段階の処理になります。
一方、LOD計算の中に表計算を直接入れ子にすることはできません。LOD計算はデータソース側で評価されるため、ビュー後に計算される表計算の値をその時点では参照できないからです。この制約を忘れると、計算式がエラーになる原因として知られています。
入れ子構造を読むときは「内側の計算式がどのタイミングで評価されるか」を確認することが重要です。内側がLOD計算であれば先に処理され、外側の表計算がその結果をビュー上で受け取る、という順番で追うと整理しやすくなります。
具体例で理解する
たとえば `RUNNING_SUM({ FIXED [顧客ID] : MIN([注文日]) })` とすると、最初に各顧客の初回注文日がFIXEDで求まり、次にその値がビュー上で累積集計されます。ただしこのような組み合わせが意図した結果になるかはパーティション設定に依存するため、動作を確認しながら使うことが求められます。
試験での出題パターン
DA試験でネスト計算を扱う設問には、大きく3つの型があります。
パターン1:処理順序を問う問題。「データソースフィルタ→LOD計算→ディメンションフィルタ→表計算」の並びが出題されます。選択肢には「ディメンションフィルタが先」や「LODが最後」など直感に反する順番が混ぜられ、パイプラインを暗記しているかが試されます。
パターン2:LOD内部に表計算をネストできるかを問う問題。「可能」「不可能」「条件付き可能」の3択が並び、正解は不可能です。WINDOW関数やRUNNING_SUMが選択肢にあると書けそうに見えるため要注意です。
パターン3:表計算の引数にLOD式を使った書き方の正否。`RUNNING_SUM({FIXED...})` が妥当かを判断させます。構文として正しく、LOD先・表計算後の順序で評価される例題です。
よくある間違い・紛らわしいポイント
×「LODと表計算は同じ場所で評価される」→○ LODはビュー描画前のデータソース側、表計算はビュー描画後です。評価場所が違うため、表計算の値をLOD内部から参照することはできません。
×「LOD内に書ければどこでも動く」→○ `{FIXED [キー]: RUNNING_SUM([売上])}` のような式は、構文上書けそうでも評価時点で表計算値が未確定のため成立しません。エラーの原因は構文ではなく評価順序です。
×「表計算の引数にLODを使うと未定義動作になる」→○ `RUNNING_SUM({FIXED...})` は妥当な書き方です。FIXEDが先に評価されてビューに値が展開され、その後に表計算が適用されるため、計算順序が成立します。
まとめ・試験ポイント
- Tableauの計算順序=データソースフィルタ → LOD計算 → ディメンションフィルタ → 表計算
- LOD計算の結果を表計算の引数に使うことは可能
- LOD計算の内部に表計算を入れ子にすることは不可(エラーになる)
- 入れ子の読み方=内側の計算が先に評価されることを意識する
- 試験では計算の評価順序とネスト可否の組み合わせが問われる
学習した内容を模擬試験で確認しよう。Tableau Data Analyst模擬試験で実力を測ろう。
Tableau DA模擬試験に挑戦