現場でダッシュボードを作っていると、同じデータなのに人によって数値が合わない、粗利率の定義が部署でバラバラ、JOINした瞬間に行数が増えて溶ける──そんな経験はありませんか。この記事は、そうした“あるある”を最短距離で解消するための実務ガイドです。結論からいきます。
この記事でできること(結論サマリー)
-
定義を揃える:集計前に「何を売上と呼ぶか」「どこまでを原価とするか」を全社で統一。
-
データ設計を整える:明細粒度は1つに固定し、割引・返品・税・原価を“行レベル”で持つ。
-
計算は行→集計の順:行計算で誤差を最小化し、KPIは合計粗利 ÷ 合計売上で出す。
-
ダッシュボードは3面構成:①経営サマリー ②営業マネージャー用 ③現場モニタリング(当日〜週次)。
-
LODsと表計算で深掘り:カテゴリ固定の比率、前年比・前月比、構成比、上位N、80/20を即席で。
1. まず押さえるべき“用語の定義”
定義が揃えばダッシュボードは安定します。迷ったらここに立ち返る。
-
売上高(Net):単価×数量 − 値引き − 返品(多くは税抜で定義)
-
原価(COGS):商品仕入原価+(必要なら)物流費などを含める範囲をルール化
-
粗利:売上高 − 原価
-
粗利率:粗利 ÷ 売上高(%表示:小数点1–2桁が現場に優しい)
重要:平均の平均は使わない。 粗利率は合計粗利 ÷ 合計売上で一本化。
2. 迷子にならないデータモデル
推奨の基本形(Relationshipsで接続)
-
ファクト(明細):
SalesFact(注文ID, 日付, 商品ID, 顧客ID, 単価, 数量, 割引率, 返品額, 税抜区分 …)
-
原価テーブル:
CostFact(商品ID, 適用開始日, 原価)
※期間で原価が変わるなら有効期間管理 -
ディメンション:
DateDim, ProductDim, CustomerDim, RegionDim …
ポイント:Relations(関係)を使うと粒度ズレの重複集計を回避できます。どうしてもJOINする場合は、JOIN後の行数が増えていないかを必ず確認。
3. Tableauの計算式(そのまま使える最小セット)
まずは行レベル→集計KPIの順に作るのが鉄則。
行レベル計算
// 行の小計(税抜)
[小計(行)] = [単価] * [数量]
// 値引き額(割引率が0〜1の場合)
[値引き額(行)] = [小計(行)] * [割引率]
// 売上(行)(返品控除・税抜)
[売上(行)] = [小計(行)] - [値引き額(行)] - [返品額]
// 原価(行)(仕入原価や標準原価を行に割当)
[原価(行)] = [原価]
// 粗利(行)
[粗利(行)] = [売上(行)] - [原価(行)]
集計KPI
[売上] = SUM([売上(行)])
[原価] = SUM([原価(行)])
[粗利] = SUM([粗利(行)])
[粗利率] =
IF SUM([売上(行)]) = 0 THEN 0
ELSE SUM([粗利(行)]) / SUM([売上(行)])
END
LOD(カテゴリ固定比率の例)
[カテゴリ別粗利率(固定)] =
{ FIXED [カテゴリ] : SUM([粗利(行)]) } /
{ FIXED [カテゴリ] : SUM([売上(行)]) }
前年比・前月比(表計算)
-
行棚に日付(年/月)、ビューにSUM([売上(行)])
-
「クイック表計算」→「前年比」/「前月比」
-
アドレス指定を年→月に合わせる
4. 典型的な“つまずき”と処方箋
-
比率の平均化:
AVG([粗利率(行)])
はNG → **SUM(粗利)/SUM(売上)
**で統一 -
原価の二重化:日別原価をJOINして日×商品で行爆発 → 関係で粒度維持、または有効期間LOOKUP
-
返品・割引の扱い:別テーブルで符号逆 → 行に正味値を持たせるか、サブカテゴリで差し引き
-
税の混在:税込・税抜が混在 → 取込時に税抜へ正規化(フラグ保持)
-
同義語問題:「粗利=売上総利益?」 → 定義ドキュメントをデータソースに添付
5. ダッシュボードは“3面”で考える
5-1. 経営サマリー(1枚で“今”がわかる)
-
KPIタイル:売上/粗利/粗利率/YoY・MoM
-
ウォーターフォール:前期→当期の差分要因(数量・単価・ミックス)
-
トレンド:週次or月次+参照線(中央値/目標)
-
フィルター:期間、事業、地域、チャネル、カテゴリ
5-2. 営業マネージャー用(配分と責任を動かす)
-
地図×バブル:地域別粗利、色=粗利率
-
クロス表:担当者×顧客=売上・粗利・粗利率・達成率
-
上位N/下位N:パラメータ切替&アクションで深掘り
5-3. 現場モニタリング(日次の呼吸)
-
当日速報:昨日比・週内累計・週間見込み
-
SKUランキング:数量・粗利・在庫回転
-
しきい値判定:リファレンスバンドで警告域
6. 分析レシピ(すぐ使える10本)
-
上位N商品:パラメータ[N]+
INDEX()
で抽出 -
80/20(パレート):Running Sum(売上)÷Total Sumを2軸ライン化
-
価格×数量の弾力:散布図+トレンドライン、カテゴリ別に参照分割
-
ディスカウントの効き:割引率のビン化→箱ひげ図で粗利率分布
-
地域ミックス効果:棒=売上、色=粗利率で構成の偏りを把握
-
在庫回転×粗利:2軸散布図(右:回転率、左:粗利)
-
リピート寄与:コホート(初回月)×経過月のヒートマップ
-
カニバリ検知:製品A/Bの推移を重ねて逆相関を目視
-
キャンペーン効果:イベント日注釈+前後比較(期間フィルタ)
-
粗利率下振れ要因:ウォーターフォール(数量・単価・原価・ミックス)
7. 運用・更新の“現実解”
-
抽出(Hyper)増分更新:注文日でパーティション、直近N日を再取り込み
-
データ品質チェック:行数差分・NULL率・ゼロ割をデータソース認証で自動化
-
公開データソース:KPI定義・更新頻度・責任者を説明欄に明記
-
権限:プロジェクト階層で閲覧/編集を分離、RLSは利用者ID×ディメンション
8. パフォーマンス最適化の勘所
-
抽出列を絞る(使わない列は落とす)
-
フィルタ順序:データソース → コンテキスト → 通常
-
前計算化:原価割当や返品調整はできるだけETL側へ
-
LODは最小限(大量ディメンション×LODは高負荷)
-
連続日付は月粒度に丸める(初期表示を軽く)
9. よくある質問(FAQ)
Q. 粒度の違う原価テーブルは?
A. 商品×有効期間で原価を持ち、注文日の属する期間を行に割当。Tableauは関係推奨。期間判定は計算フィールドで。
Q. 「平均粗利率」と「全体粗利率」がズレるのは?
A. 分母ウェイトの違い。全体粗利率=合計粗利 ÷ 合計売上で統一。
Q. 返品・無償提供の扱いは?
A. 返品はマイナス行で正味化。無償は単価0で行を立て、数量をカウント対象にするかルール化。
10. チェックリスト(公開前の最終確認)
-
KPI定義(売上・原価・粗利・粗利率)を文書化
-
明細テーブルは1行=1取引を厳守
-
返品・割引・税の取り扱いルールを明記
-
原価の有効期間と割当ロジックを決定
-
行レベル→集計KPIの順で計算フィールド作成
-
3面ダッシュボードで担当領域と閲覧対象を分担
-
LOD/表計算の使いどころ(固定指標・前年比)をメモ
-
増分更新とデータ品質チェックを設定
-
権限・RLS・公開データソース説明を整備
-
初期表示は2秒以内を目標にパフォーマンス測定
11. 15分ハンズオン(最小構成)
-
データ接続:明細CSV(
注文日, 単価, 数量, 割引率, 返品額, 商品ID, 原価
) -
行計算:
[売上(行)] / [原価(行)] / [粗利(行)]
-
KPI:
[売上] / [粗利] / [粗利率]
-
ビュー1(トレンド):列=月、行=SUM([売上(行)])、色=粗利率、参照線=目標
-
ビュー2(ランキング):行=商品、列=SUM([粗利(行)])、色=粗利率、上位Nパラメータ
-
ビュー3(要因分解):ウォーターフォール(数量・単価・ミックス)
-
ダッシュボード:3ビューを配置し、期間・カテゴリの共通フィルタを適用
12. まとめ(現場で迷わないために)
成功の鍵は、
-
定義の統一、2) 正しい粒度のデータ設計、3) 比率の出し方の厳格化。
ダッシュボードは役割別3面構成で意思決定スピードを上げ、深掘りはLOD+表計算で即席に。運用は増分更新・データ品質・権限の三点を“標準装備”。これだけで「同じ数が誰のPCでも再現される」状態に近づきます。
📩 専門コンサルタントに相談してみませんか?
Tableauのライセンス選定や運用設計に少しでも不安がある方は、一度プロに相談してみるのがおすすめです。
-
どのライセンスを選べばいいか分からない
-
導入したものの活用しきれていない
-
Power BIとの違いを整理したい
こうしたお悩みに対し、当社ではTableau導入から定着・活用までを一気通貫で支援しています。業種や業務フローに応じた最適なライセンス構成と活用方法をご提案可能です。
▶ 詳細なサービス内容やご相談希望の方は、
こちらの専用ページをご覧ください。(クリックしてください)
相談は無料です。お気軽にご連絡ください。
コメント