はじめての可視化でも迷わないように 手順を最短化しつつ 現場でそのまま使える形にまとめました。
Tableau の売上分析ガイドです
この記事は次の順で進みます
1 基本のデータ設計と前提
2 必須の売上指標を Tableau 計算で用意
3 すぐに作れる売上シート8種
4 実務で効く比較と分解のワザ
5 セグメンテーションと顧客深掘り
6 ダッシュボード設計と運用のコツ
7 品質チェックと落とし穴
8 計算レシピまとめ コピペOK
本文では分かりやすさ最優先のため 計算式の戻り値に文字列は使わず 数値や真偽を返します。
ラベルは凡例や説明文で補います。
1 基本のデータ設計と前提
売上分析を滑らかにする鍵は データの粒度を揃えることです
最低限 次のテーブルを用意すると広い分析に耐えます
-
取引明細 fact_sales
取引日 受注ID 明細ID 商品ID 顧客ID 店舗ID 数量 単価 売価 割引 送料 返品額 原価 など -
マスタ類 dim
商品 顧客 店舗 部門 チャネル 日付カレンダー
設計の要点
-
粒度は 明細一行一商品一日 を基本に
-
日付カレンダーを用意し 週 月 四半期 年の派生を DATETRUNC で揃える
-
関係 リレーションを優先 結合は必要列と条件を明確に
-
更新は抽出 hyper を活用 期間や列の絞りで軽量化
-
指標の定義書を作り データと画面の両方で同じ定義を使う
2 必須の売上指標を Tableau 計算で用意
ここで示す計算は すべて数値または真偽を返します
単位は適宜変更してください
2 1 基本指標
[売上額] : SUM([売価]) - SUM([割引]) - SUM([返品額])
[数量] : SUM([数量])
[原価額] : SUM([原価])
[粗利額] : [売上額] - [原価額]
[粗利率] : IF [売上額] = 0 THEN 0 ELSE [粗利額] / [売上額] END
[客数] : COUNTD([顧客ID])
[客単価] : IF [客数] = 0 THEN 0 ELSE [売上額] / [客数] END
[平均単価] : IF [数量] = 0 THEN 0 ELSE [売上額] / [数量] END
2 2 時系列比較
[当月売上] : SUM( IF DATETRUNC('month',[取引日]) = DATETRUNC('month',TODAY()) THEN [売上額] END )
[前年同月売上] : SUM( IF DATETRUNC('month',[取引日]) = DATEADD('year',-1,DATETRUNC('month',TODAY())) THEN [売上額] END )
[前年同月比] : IF [前年同月売上] = 0 THEN 0 ELSE ([当月売上] - [前年同月売上]) / [前年同月売上] END
[移動平均 3M] : WINDOW_AVG( SUM([売上額]) , -2 , 0 )
グラフで MoM YoY を見せる際は
表計算の方向を月の並びに合わせることが重要です
2 3 目標とのギャップ
[目標達成フラグ] : IF SUM([売上額]) >= SUM([目標額]) THEN 1 ELSE 0 END
[ギャップ額] : SUM([売上額]) - SUM([目標額])
[進捗率] : IF SUM([目標額]) = 0 THEN 0 ELSE SUM([売上額]) / SUM([目標額]) END
2 4 パレート分析用
[売上順位] : RANK_DENSE( SUM([売上額]) , 'desc' )
[売上累積割合] : RUNNING_SUM( SUM([売上額]) ) / WINDOW_SUM( SUM([売上額]) )
[上位割合 80] : IF [売上累積割合] <= 0.8 THEN 1 ELSE 0 END
2 5 PVM 価格 数量 ミックス分解用
ここでは差分分析のために期間選択を二つ用意した前提で記述します
基準期間を P 比較期間を C とします
[売上 P] : SUM( IF [期間] = 'P' THEN [売上額] END )
[売上 C] : SUM( IF [期間] = 'C' THEN [売上額] END )
[数量 P] : SUM( IF [期間] = 'P' THEN [数量] END )
[数量 C] : SUM( IF [期間] = 'C' THEN [数量] END )
[平均単価 P] : IF [数量 P] = 0 THEN 0 ELSE [売上 P] / [数量 P] END
[平均単価 C] : IF [数量 C] = 0 THEN 0 ELSE [売上 C] / [数量 C] END
[価格効果] : ( [平均単価 C] - [平均単価 P] ) * [数量 P]
[数量効果] : ( [数量 C] - [数量 P] ) * [平均単価 P]
[ミックス効果] : ( [平均単価 C] - [平均単価 P] ) * ( [数量 C] - [数量 P] )
[総差分] : [売上 C] - [売上 P]
ウォーターフォールで 表示順を 価格 数量 ミックス の並びにし
最後に総差分を小計棒で示すと伝わります
2 6 返品と割引の可視化
[返品率] : IF SUM([売上額] + [返品額]) = 0 THEN 0 ELSE SUM([返品額]) / ABS( SUM([売上額] + [返品額]) ) END
[割引率] : IF SUM([売価]) = 0 THEN 0 ELSE SUM([割引]) / SUM([売価]) END
3 すぐに作れる売上シート8種
3 1 売上トレンド 折れ線と棒の組み合わせ
-
列に 月
-
行に 売上額 粗利額 をデュアル軸で重ね
-
折れ線を移動平均 3M に
-
参考線で前年同月平均を引く
-
ツールチップに 当月 前年同月 前年同月比 を表示
見たい問い
今月は季節性に照らして良いか
粗利の遅行は起きていないか
3 2 売上構成ツリーマップ
-
大分類 中分類 を階層にして売上額をサイズ 粗利率を色
-
サイズは前年比の差分に切り替えられるパラメータを用意
-
大きくて色が薄い領域が 攻めどころ
3 3 地図 売上密度と拠点
-
都道府県を面で塗り 粗利率をステップ色に
-
拠点の緯度経度があれば点で重ねて売上規模をサイズで表現
-
ドリルで拠点別の品目構成へ遷移
3 4 パレート ABC 分析
-
商品や顧客ごとに売上順位と売上累積割合を計算
-
80までを A 次の15を B 残りを C のように分類フラグを付ける
-
Aの粗利率が下がる兆候は 早期の価格検討に直結
[ABC] :
IF [売上累積割合] <= 0.8 THEN 1
ELSEIF [売上累積割合] <= 0.95 THEN 2
ELSE 3 END
凡例で 1 2 3 を A B C と説明
3 5 価格 数量 ミックスのウォーターフォール
-
表示順のディメンションを用意
-
価格効果 数量効果 ミックス効果 総差分 を表示
-
マークタイプは Gantt と Bar の二層で 橋と小計を分ける
3 6 週内シーズナリティ ヒートマップ
-
行に 曜日 列に 時間帯 メジャーに売上額
-
ローテーションや広告の時刻合わせに有効
-
連続色はステップを使い 5から7段階に
3 7 返品 割引ウォッチ
-
散布図で 割引率 横 返品率 縦 マークに商品や顧客
-
右上は悪い象限
-
参考線に平均や管理限界線を置く
[平均] : WINDOW_AVG( AVG([返品率]) )
[標準偏差] : WINDOW_STDEV( [返品率] )
3 8 営業ファネルと実績
-
受注率 成約率の計算を段階別に
-
各段の件数と総売上見込みを表示
-
入力源が CRM の場合は リレーションで遷移分析も可能
4 実務で効く比較と分解のワザ
4 1 データ粒度の切替 日 週 月
パラメータを作り DATETRUNC で集約粒度を切り替えます
[粒度] パラメータ 日 週 月
[集約日付] : DATETRUNC( [粒度] , [取引日] )
同じビジュアルで日 週 月がスイッチできるため
画面数が増えず運用が軽くなります
4 2 YoY MoM 同時表示
-
カラムに集約日付
-
行に売上額
-
2本目に前年の線を追加 データの年をフィルタして同期
-
表計算で前年比率をラベルに
[前年比率] : IF LOOKUP(SUM([売上額]), -12) = 0 THEN 0
ELSE ( SUM([売上額]) - LOOKUP(SUM([売上額]), -12) ) / LOOKUP(SUM([売上額]), -12) END
4 3 LOD でシェアを安定化
表示粒度とは無関係にカテゴリ合計を固定します
[カテゴリ合計] : { FIXED [カテゴリ] : SUM([売上額]) }
[カテゴリ内シェア] : IF [カテゴリ合計] = 0 THEN 0 ELSE SUM([売上額]) / [カテゴリ合計] END
4 4 予算対比
[予算達成率] : IF SUM([予算]) = 0 THEN 0 ELSE SUM([売上額]) / SUM([予算]) END
四半期ごとに予算比を見せ 進捗が遅いエリアをアラート色に
4 5 在庫連動の売上機会損失
在庫がある日の販売に限定した平均を計算し
在庫ゼロ日を掛け合わせて機会損失額を推定します
[在庫あり売上] :
IF AVG([在庫数量]) > 0 THEN SUM([売上額]) END
[在庫あり日] :
IF AVG([在庫数量]) > 0 THEN 1 ELSE 0 END
[平均売上 在庫あり日] :
IF SUM([在庫あり日]) = 0 THEN 0 ELSE SUM([在庫あり売上]) / SUM([在庫あり日]) END
[在庫ゼロ日] :
IF AVG([在庫数量]) = 0 THEN 1 ELSE 0 END
[機会損失推定額] : [平均売上 在庫あり日] * SUM([在庫ゼロ日])
5 セグメンテーションと顧客深掘り
5 1 RFM セグメント
最新購入日 頻度 金額を LOD で求めます
[最終購入日] : { FIXED [顧客ID] : MAX([取引日]) }
[購入回数] : { FIXED [顧客ID] : COUNTD([受注ID]) }
[購入金額] : { FIXED [顧客ID] : SUM([売上額]) }
[経過日数] : DATEDIFF('day',[最終購入日],TODAY())
スコア化は分位を使うと便利です
[R スコア] :
1 + INT( NTILE( 5 , -[経過日数] ) ) // 新しいほど高得点
[F スコア] :
1 + INT( NTILE( 5 , [購入回数] ) )
[M スコア] :
1 + INT( NTILE( 5 , [購入金額] ) )
[RFM 合計] : [R スコア] + [F スコア] + [M スコア]
RFM 合計や組合せで 重点顧客群を抽出し
タイムリーな施策につなげます
5 2 コホート分析
初回購入月をキーに 追跡月ごとの継続率や金額を見ます
[コホート] : DATETRUNC('month', { FIXED [顧客ID] : MIN([取引日]) } )
[経過月] : DATEDIFF('month', [コホート], DATETRUNC('month',[取引日]) )
[売上 コホート] : SUM([売上額])
ピボット表示 もしくは表計算で経過月の行を作ると
継続と拡大の力学が見やすくなります
5 3 返品常連とハイディスカウントの検知
[返品常連フラグ] :
IF { FIXED [顧客ID] : AVG([返品率]) } > 0.05 THEN 1 ELSE 0 END
[高割引フラグ] :
IF { FIXED [顧客ID] : AVG([割引率]) } > 0.2 THEN 1 ELSE 0 END
散布図で両フラグを色と形で併用すると誤検出を減らせます
6 ダッシュボード設計と運用のコツ
6 1 役割別の基本構成
-
経営向け
KPIカード トレンド 目標進捗 価格数量分解
フィルタは最小限 操作はハイライト中心 -
マネジャー向け
地域 商品顧客のタイルと比較表 パレート
問題領域にすぐ飛べるナビ -
現場向け
明細テーブルを左にキー列 右に指標で分割
ページネーションで見通しを確保
6 2 インタラクション
-
凡例クリックで重要クラスのみ表示
-
ハイライトアクションで特定カテゴリに視線を誘導
-
パラメータで粒度や評価指標を切替
-
フィルタはコンテキストを活用し負荷を低減
6 3 表示の設計
-
色は意味を固定 増は緑 減は赤 目標は中立色
-
連続色はステップ 5から7段階で誤読を防止
-
移動平均や中央値など基準線を使い 一目で状況を伝える
-
横スクロールは避け 列は厳選 詳細はドリルへ
6 4 パフォーマンス
-
抽出 hyper 化 不要列除去 期間絞り
-
LOD と表計算を使い分け 粒度ズレを抑制
-
大粒度から小粒度へのドリルダウン
-
データ更新頻度を画面に明記
7 品質チェックと落とし穴
-
集計と非集計の混在に注意
すべて SUM MIN などで揃える -
表計算の方向が意図と一致しているか
計算の編集で特定ディメンションに固定 -
フィルタ順序
コンテキスト → 次のフィルタ の順で母数を整える -
期間比較の整合
祝日や営業日のずれを補正する場合はカレンダーに営業日フラグ列を用意 -
欠損や極端値の扱い
ラベルで除外条件を説明する
8 計算レシピまとめ コピペOK
8 1 KPI
[売上額] : SUM([売価]) - SUM([割引]) - SUM([返品額])
[粗利額] : [売上額] - SUM([原価])
[粗利率] : IF [売上額] = 0 THEN 0 ELSE [粗利額]/[売上額] END
[客数] : COUNTD([顧客ID])
[客単価] : IF [客数] = 0 THEN 0 ELSE [売上額]/[客数] END
[平均単価] : IF SUM([数量]) = 0 THEN 0 ELSE [売上額]/SUM([数量]) END
8 2 比較と進捗
[前年同月比] : IF LOOKUP(SUM([売上額]),-12) = 0 THEN 0
ELSE (SUM([売上額]) - LOOKUP(SUM([売上額]),-12))
/ LOOKUP(SUM([売上額]),-12) END
[進捗率] : IF SUM([目標額]) = 0 THEN 0 ELSE SUM([売上額])/SUM([目標額]) END
8 3 分解
[価格効果] : ( [平均単価 C] - [平均単価 P] ) * [数量 P]
[数量効果] : ( [数量 C] - [数量 P] ) * [平均単価 P]
[ミックス効果] : ( [平均単価 C] - [平均単価 P] ) * ( [数量 C] - [数量 P] )
8 4 パレート
[売上累積割合] : RUNNING_SUM(SUM([売上額])) / WINDOW_SUM(SUM([売上額]))
[ABC] : IF [売上累積割合] <= 0.8 THEN 1
ELSEIF [売上累積割合] <= 0.95 THEN 2 ELSE 3 END
8 5 RFM
[最終購入日] : { FIXED [顧客ID] : MAX([取引日]) }
[購入回数] : { FIXED [顧客ID] : COUNTD([受注ID]) }
[購入金額] : { FIXED [顧客ID] : SUM([売上額]) }
[経過日数] : DATEDIFF('day',[最終購入日],TODAY())
[RFM 合計] : (1 + INT(NTILE(5,-[経過日数]))) +
(1 + INT(NTILE(5,[購入回数]))) +
(1 + INT(NTILE(5,[購入金額])))
まとめ
Tableau の売上分析は
データの粒度を揃え 指標を数値で定義し
比較と分解の組み合わせを用意すれば
誰が見ても同じ結論に到達できます
まずは
トレンド パレート 価格数量ミックス RFM
この四つをそろえましょう
次に目標進捗と地域 商品顧客のタイルを重ね
ダッシュボードの操作性を整えます
画面の数を増やすより
一枚のダッシュボードで問いに答え切ることが大切です
粒度の切替 パラメータ ハイライトを利かせると
運用が軽くなり意思決定が速くなります
📩 専門コンサルタントに相談してみませんか?
Tableauのライセンス選定や運用設計に少しでも不安がある方は、一度プロに相談してみるのがおすすめです。
どのライセンスを選べばいいか分からない
導入したものの活用しきれていない
Power BIとの違いを整理したい
こうしたお悩みに対し、当社ではTableau導入から定着・活用までを一気通貫で支援しています。業種や業務フローに応じた最適なライセンス構成と活用方法をご提案可能です。
▶ 詳細なサービス内容やご相談希望の方は、
こちらの専用ページをご覧ください。
相談は無料です。お気軽にご連絡ください
コメント