データの探索と分析(DA)

計算式のネスト — LOD内に表計算を組み込む構造を読む

導入

「LOD計算の結果を使ってさらに表計算したい」という状況は、実務の分析では珍しくありません。しかし計算式を入れ子にすると、どちらの計算が先に行われるのかが見えにくくなります。この処理順序を理解しておくと、複雑な数式も落ち着いて読めるようになります。

くわしく知ろう

Tableauでは計算が行われる順序(クエリパイプライン)が決まっており、大まかに「データソースフィルタ → LOD計算 → ディメンションフィルタ → 表計算」という流れになっています。LOD計算はビューのレンダリングより前のデータソース側で処理され、表計算はビューが描画された後に実行されます。この順序の差が、入れ子構造の動作を決めます。

LOD計算の結果を表計算の引数として使うことは可能です。たとえば `RUNNING_SUM({ FIXED [顧客ID] : SUM([売上]) })` のような記述は、まずFIXEDで顧客ごとの合計が計算され、その結果がビューに展開された後にRUNNING_SUMが適用されるという二段階の処理になります。

一方、LOD計算の中に表計算を直接入れ子にすることはできません。LOD計算はデータソース側で評価されるため、ビュー後に計算される表計算の値をその時点では参照できないからです。この制約を忘れると、計算式がエラーになる原因として知られています。

入れ子構造を読むときは「内側の計算式がどのタイミングで評価されるか」を確認することが重要です。内側がLOD計算であれば先に処理され、外側の表計算がその結果をビュー上で受け取る、という順番で追うと整理しやすくなります。

具体例

たとえば `RUNNING_SUM({ FIXED [顧客ID] : MIN([注文日]) })` とすると、最初に各顧客の初回注文日がFIXEDで求まり、次にその値がビュー上で累積集計されます。ただしこのような組み合わせが意図した結果になるかはパーティション設定に依存するため、動作を確認しながら使うことが求められます。

まとめ・試験ポイント

  • Tableauの計算順序=データソースフィルタ → LOD計算 → ディメンションフィルタ → 表計算
  • LOD計算の結果を表計算の引数に使うことは可能
  • LOD計算の内部に表計算を入れ子にすることは不可(エラーになる)
  • 入れ子の読み方=内側の計算が先に評価されることを意識する
  • 試験では計算の評価順序とネスト可否の組み合わせが問われる

学習した内容を模擬試験で確認しよう。Tableau Data Analyst模擬試験で実力を測ろう。

Tableau DA模擬試験を見る