Tableau移動平均のガイド

1. 移動平均とは?(Tableauでの位置づけ)

移動平均(Moving Average)は、直近N期間の平均で折れ線の“ガタつき”をならし、傾向(トレンド)を読みやすくする手法です。
似ている概念にランニング平均(累積平均 / Running Average)がありますが、こちらは開始から現在まで
の平均で、期間が進むほど新しい値の影響が薄まります。短期の動きを見たいときは「移動平均」、長期の安定度合いを見たいときは「ランニング平均」が向きます。

典型用途

  • EC/アプリ:日次売上・CVRの7日移動平均

  • 製造:不良率の月次移動平均(季節要因を平滑化)

  • コンタクトセンター:着信数・一次解決率の週次移動平均


2. まずは最短ルート:クイックテーブル計算で作る

前提

  • 列(Columns):注文日月(連続)

  • 行(Rows):売上SUM([売上])

  • マーク:(Line)

手順(3ヶ月後方移動平均の例)

  1. 表示中の折れ線を右クリック → 「クイックテーブル計算」→「移動平均」

  2. マークカードの**「売上」ピル右の▽→「表計算を編集…」**

  3. 「計算の種類」:移動平均

  4. 「前」= 2 / 「後」= 0(= 直近3ヶ月の後方移動平均)

  5. **「次元を指定」日付(注文日)にチェック、計算の方向を表(横)**に設定

  6. 必要に応じて**「パーティション」**にカテゴリ・地域などを設定(部門ごとに別計算)

中心移動平均(例:13ヶ月)にしたい場合

  • 「前」= 6 / 「後」= 6(奇数期間推奨。偶数期間は曲線が半期ぶんズレるため注意)


3. 一段深く:計算式で“実務用”の移動平均を作る

クイック計算は速い反面、細かい制御(期間可変、欠損処理、中心化の奇数推奨など)がしづらい。実務では計算フィールドパラメータで作ると拡張性が高く、ダッシュボード化もスムーズです。

3-1. 期間をパラメータ化(後方N期間)

  1. パラメータを作成

    • 名前:移動平均_期間

    • データ型:整数 / 既定値:7(日次なら7、月次なら3や13が定番)

  2. 計算フィールド「移動平均(後方N)」を作成

// 直近N期間の後方移動平均(NULLをそのまま保持)
WINDOW_AVG(
SUM([売上]),
-[移動平均_期間] + 1, 0
)
  1. Compute Using(計算の方向)を日付に設定し、カテゴリや地域でパーティション

NULLの扱い
先頭N-1期間は値が足りずNULLになります。早期期間も平均を出したい場合は、平均分母が不足しない条件で出す式に変更します。

3-2. “データが揃ったときだけ表示”する安全版

IF WINDOW_COUNT(
SUM([売上]),
-[移動平均_期間] + 1, 0
) = [移動平均_期間] THEN
WINDOW_AVG(SUM([売上]), -[移動平均_期間] + 1, 0)
END

こうすると先頭N-1期間の見かけ上の過小評価を避け、意思決定の誤読を防げます。

3-3. 中心移動平均(位相ずれを抑える)

WINDOW_AVG(
SUM([売上]),
-INT(([移動平均_期間] - 1) / 2),
INT(([移動平均_期間] - 1) / 2)
)
  • 奇数期間が推奨(7、13など)。偶数期間は中心が定義しづらく、線が半期間ぶん遅れる印象になります。

3-4. ランニング平均(比較用)

RUNNING_AVG(SUM([売上]))
  • 長期傾向の把握に有効。ただし直近変動に鈍感になります。


4. フィルターと順序の落とし穴(Order of Operations)

Tableauは表計算が最後に評価されます。
たとえば「直近12ヶ月だけを表示」する通常フィルターを先にかけると、移動平均の計算に必要な過去データが落ちて先頭側が低く歪みます。

解決策1:表計算フィルターで絞る

「最後に」絞ることで過去データを保持し、正しい平均を出せます。

LAST() < 12 // 末尾12カ月を表示(降順/昇順の向きに注意)
  • この計算フィールドをフィルターに置き、Trueだけ表示。

解決策2:コンテキスト化で順序を調整

相対日付などをコンテキストフィルターにすると、他のフィルター順序を調整しやすくなります。
ただし「計算に必要なデータは残す」という原則を守って設定してください。


5. 欠損値・日付の穴(Data Densification)への対処

  • 日粒度で土日や祝日が欠損すると、ウィンドウ内の実データ数が減り平均が偏ることがあります。

  • 軸の右クリック → 「欠損値を表示」(Show Missing Values)で日付行を密化し、NULLとして存在させると平均の算出意図が明確になります。

  • ただしNULLを0埋め(ZN)すると平均が過小化します。集計ロジックと意図(休業日は売上が0?未観測?)を決め、式側でWINDOW_COUNTによる分母管理を行うのが安全です。


6. 原系列と移動平均を重ねる(読みやすい視覚設計)

  1. 行棚のSUM([売上])Ctrl+ドラッグで複製

  2. 一方を**移動平均(計算式またはクイック計算)**に変更

  3. 片方を右クリック → 「二重軸」→「軸の同期」

  4. マーク:原系列=細線 / 移動平均=太線・不透明度高め

  5. 凡例で名称を**「原系列」「移動平均(7日)」**のようにリネーム

比較を誤らせないため、軸は必ず同期。系列の色・線種は明確に。


7. 応用①:指数移動平均(EMA)をTableauで

EMAは直近ほど重みを大きくする平滑化。急な変化に追随性があり、異常検知短期トレンドの把握に向きます。

準備

  • パラメータ EMA_α(小数 / 0.05〜0.3推奨、既定値0.2)

  • 計算フィールド「EMA(売上)」:

IF FIRST() = 0 THEN
SUM([売上]) // 初期値:最初の行は実測値
ELSE
// 公式:EMA_t = EMA_{t-1} + α * (X_t - EMA_{t-1})
PREVIOUS_VALUE(0) + [EMA_α] * ( SUM([売上]) - PREVIOUS_VALUE(0) )
END
  • Compute Using日付。カテゴリ等はパーティションに。

αの解釈

  • 大きい(0.3〜0.5):敏感(ノイズも拾いやすい)

  • 小さい(0.05〜0.2):滑らか(反応は遅い)


8. 応用②:ユーザーが期間を変えられるUI

  • 移動平均_期間パラメータコントロールとして表示

  • トグル用パラメータを追加(移動平均の種類"SMA" / "中心SMA" / "EMA"

  • CASE式で分岐して1本の計算にまとめる:

CASE [移動平均の種類]
WHEN "SMA" THEN
WINDOW_AVG(SUM([売上]), -[移動平均_期間]+1, 0)
WHEN "中心SMA" THEN
WINDOW_AVG(SUM([売上]),
-INT(([移動平均_期間]-1)/2),
INT(([移動平均_期間]-1)/2))
WHEN "EMA" THEN
PREVIOUS_VALUE(0) + [EMA_α] * ( SUM([売上]) - PREVIOUS_VALUE(0) )
END
  • ダッシュボードに**スライダー(期間)ラジオ(種類)**を置けば、非エンジニアでも自在に分析。


9. 実務での期間選定ガイド

  • 日次:7日(週次周期を平滑)/14・28日(週期×倍数)

  • 週次:4週(おおよそ1ヶ月)/13週(四半期)

  • 月次:3ヶ月(短期)/6ヶ月(季節性を半期で)/13ヶ月(強推奨:奇数で中心化)

  • 中心移動平均季節性の強い系列(小売・需要・トラフィック)で効果大。意思決定の位相ズレを抑えます。


10. 部門別に同時計算(パーティション設計)

  • 計算の編集 → 特定の次元で、日付=アドレス指定カテゴリ/地域=パーティション

  • これにより部門ごとに独立した移動平均が出ます(部門間の混線を防止)。


11. よくある“ハマりどころ”と対策

  1. 値が思ったより低い

    • 先頭側でデータが足りず分母が小さい/ゼロ埋めで過小化。
      WINDOW_COUNTで分母を保証する式に切替。

  2. 動かすと線がズレる

    • 計算の方向が未設定。
      → 「表(横)」や「ペイン(横)」で日付方向を明示。

  3. 部門を追加したら突然変わった

    • パーティションが増えたことで計算範囲が分割された。
      → 「特定の次元」で区切り方を再確認。

  4. 12ヶ月だけ出したら平均が崩れた

    • フィルターが先に適用され、過去データが落ちた。
      LAST()などの表計算フィルターで最後に絞る。

  5. NULLが混ざり不均一

    • 欠損日の扱いが未定義。
      欠損値表示+NULLのまま平均 or WINDOW_COUNTで完全ウィンドウ時のみ表示


12. KPIでの読み方(意思決定につなげる)

  • 原系列 × 移動平均乖離に注目:

    • 原系列が移動平均を上抜け:上昇局面の初動

    • 下抜け:減速のシグナル

  • EMA初動の検出に強い。アラート条件に

    • 例:SUM([売上]) < [EMA(売上)]*0.9急減アラート


13. パフォーマンス最適化

  • 大量データでは下ごしらえ(事前集計)を検討:

    • FIXED LOD で日次→月次の中間テーブルを作る

    • 抽出(Extract)+列型の最適化

  • 不要な表計算の重複を避ける:

    • 同じウィンドウを複数回使う場合は計算フィールドを共通化


14. そのまま使えるスニペット集(コピペ可)

直近N期間の後方SMA(完全ウィンドウのみ)

IF WINDOW_COUNT(SUM([値]), -[N]+1, 0) = [N] THEN
WINDOW_AVG(SUM([値]), -[N]+1, 0)
END

中心SMA(奇数N推奨)

WINDOW_AVG(SUM([値]), -INT(([N]-1)/2), INT(([N]-1)/2))

ランニング平均

RUNNING_AVG(SUM([値]))

指数移動平均(EMA, αパラメータ)

IF FIRST() = 0 THEN
SUM([値])
ELSE
PREVIOUS_VALUE(0) + [α] * ( SUM([値]) - PREVIOUS_VALUE(0) )
END

末尾12期間だけ表示(表計算フィルター)

LAST() < 12

15. まとめ

  • クイックテーブル計算でまず動かし、計算式で実務用に強化

  • 期間はパラメータで操作できるようにし、中心化は奇数が基本

  • フィルター順序欠損値の扱いを決めてから共有

  • 目的は“線をきれいにする”ではなく、意思決定の初動を早めること
    移動平均は作って終わりではなく、アラート・コメント・アクションまで設計して初めて価値になります。


📩 専門コンサルタントに相談してみませんか?

Tableauのライセンス選定や運用設計に少しでも不安がある方は、一度プロに相談してみるのがおすすめです。

「どのライセンスを選べばいいか分からない」

「導入したものの活用しきれていない」

「Power BIとの違いを整理したい」

こうしたお悩みに対し、当社ではTableau導入から定着・活用までを一気通貫で支援しています。業種や業務フローに応じた最適なライセンス構成と活用方法をご提案可能です。

▶ 詳細なサービス内容やご相談希望の方は、
こちらの専用ページをご覧ください。

相談は無料です。お気軽にご連絡ください。

関連記事

この記事へのコメントはありません。

カテゴリー

アーカイブ