Power BI 销售仪表板:KPI、指标和模板
根据 Salesforce 的销售状况报告,实时跟踪正确 KPI 的销售团队可以将交易量增加 28%。然而,大多数销售仪表板都会陷入两种失败模式:要么跟踪感觉良好但不能推动决策的虚荣指标,要么用 40 多个数字压垮销售代表,导致分析瘫痪。精心设计的 Power BI 销售仪表板以正确的详细程度显示正确的 15-20 个指标,并通过钻取来调查异常情况。
本指南构建了从数据模型到发布报告的完整 Power BI 销售仪表板架构 - 涵盖每个 KPI 及其 DAX 公式、设计背后的布局逻辑以及让经理无需切换工具即可进行探索的钻取模式。
要点
- 15 个基本销售 KPI 以及可供实施的完整 DAX 公式
- 4 页的仪表板架构,涵盖执行摘要、管道、代表绩效和趋势分析
- 钻取设计模式,从聚合 KPI 导航到单个交易详细信息
- 动态目标:从单独的表加载配额数据并与 DAX 中的实际值进行比较
- 条件格式规则,用于标记有风险的交易、表现不佳的代表和渠道差距
- 基于书签的导航,提供干净的用户体验,没有标题混乱
- 构建上述任何内容之前所需的星型模式数据模型
- 时间智能模式:滚动 30 天、MTD、QTD、YTD 和前期比较
数据模型设计
在编写单个 DAX 度量之前,数据模型必须正确。销售仪表板通常需要以下表格:
事实表
Fact_Opportunities(每笔交易一行):
- 代码0、代码1、代码2、代码3、代码4、代码5、代码6、代码7、代码8
Fact_Activities(每个活动一行):
- 代码0、代码1、代码2、代码3、代码4、代码5
Fact_Quotas(每个周期每个代表一行):
- 代码0、代码1、代码2
维度表
| 尺寸 | 关键领域 |
|---|---|
| 代码0 | AccountID、公司、行业、地区、部门 |
Dim_Owner(销售代表) | 所有者 ID、姓名、团队、经理、区域 |
| 代码0 | 阶段 ID、阶段名称、阶段顺序、IsClosedWon、IsClosedLost |
| 代码0 | 日期、年、季度、月、周数、IsWorkday |
| 代码0 | 产品 ID、类别、SKU、列表价格 |
关系
Fact_Opportunities → Dim_Account (AccountID)
Fact_Opportunities → Dim_Owner (OwnerID)
Fact_Opportunities → Dim_Stage (StageID)
Fact_Opportunities → Dim_Date (CloseDate) [active]
Fact_Opportunities → Dim_Date (CreatedDate) [inactive, use USERELATIONSHIP]
Fact_Activities → Fact_Opportunities (OpportunityID)
Fact_Activities → Dim_Owner (OwnerID)
Fact_Quotas → Dim_Owner (OwnerID)
Fact_Quotas → Dim_Date (PeriodID)
使用 DAX 公式的 15 个基本销售 KPI
1. 总收入(赢得的交易)
Total Revenue =
CALCULATE(
SUM(Fact_Opportunities[Amount]),
Dim_Stage[IsClosedWon] = TRUE
)
2. 收入与配额
Quota Attainment % =
DIVIDE(
[Total Revenue],
SUM(Fact_Quotas[QuotaAmount]),
0
)
3. 管道价值(公开交易)
Pipeline Value =
CALCULATE(
SUM(Fact_Opportunities[Amount]),
Dim_Stage[IsClosedWon] = FALSE,
Dim_Stage[IsClosedLost] = FALSE
)
4. 加权管道(概率调整)
Weighted Pipeline =
CALCULATE(
SUMX(
Fact_Opportunities,
Fact_Opportunities[Amount] * Fact_Opportunities[Probability] / 100
),
Dim_Stage[IsClosedWon] = FALSE,
Dim_Stage[IsClosedLost] = FALSE
)
5.胜率
Win Rate =
DIVIDE(
CALCULATE(COUNTROWS(Fact_Opportunities), Dim_Stage[IsClosedWon] = TRUE),
CALCULATE(
COUNTROWS(Fact_Opportunities),
Dim_Stage[IsClosedWon] = TRUE || Dim_Stage[IsClosedLost] = TRUE
),
0
)
6. 平均交易规模
Avg Deal Size =
CALCULATE(
AVERAGEX(
FILTER(Fact_Opportunities, Dim_Stage[IsClosedWon] = TRUE),
Fact_Opportunities[Amount]
)
)
7. 销售周期长度(天)
Avg Sales Cycle Days =
AVERAGEX(
FILTER(Fact_Opportunities, Dim_Stage[IsClosedWon] = TRUE),
DATEDIFF(
Fact_Opportunities[CreatedDate],
Fact_Opportunities[CloseDate],
DAY
)
)
8.收入同比增长
Revenue YoY Growth =
VAR CurrentPeriod = [Total Revenue]
VAR PriorPeriod = CALCULATE([Total Revenue], SAMEPERIODLASTYEAR(Dim_Date[Date]))
RETURN
DIVIDE(CurrentPeriod - PriorPeriod, PriorPeriod, 0)
9. 本月至今的收入
MTD Revenue = CALCULATE([Total Revenue], DATESMTD(Dim_Date[Date]))
10. 季度至今的收入
QTD Revenue = CALCULATE([Total Revenue], DATESQTD(Dim_Date[Date]))
11. 30 天滚动收入
Rolling 30D Revenue =
CALCULATE(
[Total Revenue],
DATESINPERIOD(Dim_Date[Date], LASTDATE(Dim_Date[Date]), -30, DAY)
)
12. 管道覆盖率
Pipeline Coverage =
DIVIDE(
[Pipeline Value],
CALCULATE(
SUM(Fact_Quotas[QuotaAmount]),
DATESINPERIOD(Dim_Date[Date], LASTDATE(Dim_Date[Date]), 90, DAY)
),
0
)
13. 交易速度(每日收入)
Deal Velocity =
DIVIDE([Total Revenue], COUNTROWS(VALUES(Dim_Date[Date])), 0)
14. 每赢一笔交易的平均活动
Avg Activities per Won Deal =
AVERAGEX(
FILTER(Fact_Opportunities, Dim_Stage[IsClosedWon] = TRUE),
CALCULATE(COUNTROWS(Fact_Activities))
)
15. 预测准确性
Forecast Accuracy % =
1 - ABS(
DIVIDE(
[Total Revenue] - [Weighted Pipeline At Period Start],
[Weighted Pipeline At Period Start],
0
)
)
4 页仪表板架构
第 1 页:执行摘要
布局(从上到下):
第 1 行 — KPI 卡(跨 5 张卡):
- 收入 MTD 与配额(包含配额实现百分比和趋势迷你图)
- 年初至今的收入(包含同比百分比变化指标)
- 管道价值(管道覆盖率)
- 胜率(与上个月比较)
- 平均交易规模(带有趋势指标)
第 2 行 — 主要视觉效果(2 并排):
- 左:每月收入与配额(簇状条形图,过去 12 个月)
- 右:按地区划分的收入(填充地图或条形图)
第 3 行 — 辅助视觉效果(3 并排):
- 按阶段的管道(漏斗图)
- 按金额排名前 10 名的交易(带有概率指示器的表格)
- 按产品类别划分的收入(树形图)
切片器(右侧面板或顶部):日期范围、区域、销售代表(多选)
第 2 页:管道分析
布局:
漏斗图(逐阶段交易数量和价值):
- 勘探→合格→提案→谈判→结案
风险热图(条件格式表):
- 行:未来 30 天内完成的交易
- 列:交易名称、帐户、金额、阶段、阶段天数、所有者
- 红色突出显示:阶段天数 > 30(有停滞风险)
- 琥珀色:第 15-30 阶段的天数
- 绿色:阶段天数 < 15
按关闭月份划分的管道(堆积条形图):
- 按阶段划分的酒吧;显示有多少管道在以下情况下关闭
第 3 页:销售代表绩效
矩阵视觉(代表排行榜):
- 行:销售代表姓名
- 列:收入、配额、完成百分比、管道、胜率、平均交易规模、赢得的交易
- 条件格式:红色/琥珀色/绿色表示达到百分比
- 按成就百分比降序排序
散点图 — 交易规模与每次代表的胜率(确定优势):
- X 轴:平均交易规模
- Y轴:胜率
- 规模:总收入
- 颜色:达到配额
活动分析 — 每个代表的通话/电子邮件/会议条形图
第 4 页:趋势和预测
折线图 — 滚动 12 个月收入:
- 实际收入(实线)
- 预测线(虚线,来自加权管道)
- 目标线(持平,来自配额)
瀑布图 - 前期收入桥梁:
- 起始:上个月的收入
- 赢得新优惠
- 扩张/追加销售
- 损失
- 结束:当月收入
同期群分析表 — 新客户与扩张收入
钻取设计
钻取允许经理单击摘要页面上的代表、区域或交易阶段,然后导航到该选择的详细信息页面。
配置钻取
- 在报告中创建详细信息页面(例如“交易详细信息”)
- 在页面的钻取区域(可视化窗格)中,添加
Fact_Opportunities[OpportunityID]作为钻取字段 - 构建详细信息页面:交易名称、账户、所有者、阶段历史记录、活动日志、注释
用户右键单击摘要页面上的任何数据点,然后选择“钻取→交易详细信息”即可查看该特定交易的完整历史记录。
深入了解代表表现
创建一个“代表详细信息”页面,其中代表名称作为钻取字段。包括:
- 该代表的各个阶段的管道
- 他们本季度完成的交易(表)
- 过去 90 天的活动趋势
- 胜率与球队平均水平
有风险交易的条件格式
将条件格式应用于标记需要注意的交易:
// Days in Current Stage (for conditional formatting)
Days in Stage =
DATEDIFF(
CALCULATE(
MAX(Stage_History[EnteredDate]),
Stage_History[StageID] = MAX(Fact_Opportunities[StageID])
),
TODAY(),
DAY
)
// Deal Risk Color (background color measure)
Deal Risk Color =
SWITCH(TRUE(),
[Days in Stage] > 30, "#FF4444", -- Red: stalled
[Days in Stage] > 15, "#FFA500", -- Amber: warning
"#00B050" -- Green: on track
)
将颜色度量应用为表条件格式规则中的背景颜色。
动态目标和配额比较
从单独的表加载配额数据(而不是硬编码)允许目标更新而无需重新发布报告:
配额表结构:
| 所有者 ID | 年份 | 月 | 配额金额 |
|---|---|---|---|
| 101 | 101 2026 | 2026 1 | 50000 |
| 101 | 101 2026 | 2026 2 | 55000 |
配额差异衡量:
Revenue vs Quota =
[Total Revenue] -
CALCULATE(
SUM(Fact_Quotas[QuotaAmount]),
TREATAS(VALUES(Dim_Date[Year]), Fact_Quotas[Year]),
TREATAS(VALUES(Dim_Date[MonthNum]), Fact_Quotas[Month])
)
常见问题
哪些数据源最适合 Power BI 销售仪表板?
CRM 系统(Salesforce、Dynamics 365、HubSpot、Pipedrive)是销售仪表板的主要数据源。 Power BI 本机连接到 Dynamics 365(通过 Dataverse)和 Salesforce(通过 Salesforce 连接器)。对于 HubSpot 和 Pipedrive,请使用相应的 Power BI 连接器或通过 API 提取。将 CRM 数据与 ERP 订单数据相结合,了解从机会到发票的完整情况。
如何在销售仪表板中处理多种货币?
创建包含每个货币对每日汇率的汇率表。将货币选择器切片器添加到报表中。创建一个标准化度量,根据汇率表使用 LOOKUPVALUE 将所有金额转换为基础货币。为了获得历史准确性的报告,请使用期间平均汇率(月末或交易日期汇率)而不是今天的即期汇率。
管理者可以自动仅查看其团队的数据吗?
是 — 使用层次结构角色配置行级安全性。创建一个角色,使用 USERPRINCIPALNAME() 在 Dim_Owner 表中查找当前用户,然后使用 PATH 和 PATHCONTAINS 函数进行过滤以仅显示他们自己的交易及其直接/间接报告的交易。在 Power BI 服务工作区设置中将经理分配给此角色。
销售仪表板应该多久刷新一次?
对于活跃的销售团队,每小时刷新(Power BI Premium 或 PPU)可以使数据保持最新状态,足以满足日常运营的需要。对于执行摘要仪表板,每天刷新 4-8 次(专业级)通常就足够了。如果您的 CRM 实时更新并且您需要真正的实时可见性,请在标准导入数据集之上为特定 KPI(今天完成的交易、管道更改)配置流数据集。
显示管道阶段细分的最佳图表类型是什么?
漏斗图对于管道阶段分解来说是最直观的——它直观地传达了阶段之间的转换损失。将漏斗与其下方的表格结合起来,显示每个阶段的计数和价值,以及阶段的平均时间。对于交易速度分析(交易在各个阶段的移动速度),请使用条形图显示每个阶段的平均天数。
后续步骤
基于具有正确 KPI 的可靠数据模型构建的 Power BI 销售仪表板改变了销售领导层管理绩效的方式 - 从被动(在 Excel 中查看上个月的数据)到主动(实时发现有风险的交易和指导机会)。
ECOSIRE 的 Power BI 仪表板开发团队构建连接到您的 CRM 和 ERP 系统的自定义销售仪表板。我们设计数据模型、编写优化的 DAX 度量并构建您的销售团队将实际使用的交互式报告。
探索我们的Power BI 仪表板开发服务 或联系我们的团队 讨论您的销售分析要求并获得范围估计。
作者
ECOSIRE Research and Development Team
在 ECOSIRE 构建企业级数字产品。分享关于 Odoo 集成、电商自动化和 AI 驱动商业解决方案的洞见。
相关文章
Building Financial Dashboards with Power BI
Step-by-step guide to building financial dashboards in Power BI covering data connections to accounting systems, DAX measures for KPIs, P&L visualisations, and best practices.
Case Study: Power BI Analytics for Multi-Location Retail
How a 14-location retail chain unified their reporting in Power BI connected to Odoo, replacing 40 spreadsheets with one dashboard and cutting reporting time by 78%.
GoHighLevel + Power BI: Advanced Reporting and Analytics
Connect GoHighLevel to Power BI for advanced marketing analytics. Build executive dashboards, track multi-channel ROI, and create automated reports that go beyond GHL's native reporting.