第10篇:实战案例 --- 销售数据分析仪表板
1. 案例背景与目标
本篇将用一个小型的销售数据分析场景,串联整个系列教程的知识要点。
业务背景 :
某公司有 2024 年的销售数据,需要制作一个仪表板,满足以下分析需求:
- 总览:年销售额、订单数、客户数、客单价
- 趋势:月度销售额走势(含同比)
- 构成:各产品类别销售额占比
- 对比:各区域销售业绩排名
- 明细:支持按产品类别和区域筛选
2. 数据准备
2.1 源数据结构
本案例使用 Excel 文件导入,包含以下三张表:
销售明细表(Sales):
| 订单ID | 订单日期 | 产品类别 | 产品名称 | 区域 | 客户名称 | 销售员 | 销售额 | 成本 | 数量 |
|---|---|---|---|---|---|---|---|---|---|
| 10001 | 2024-01-05 | 电子产品 | 手机A | 北京 | 客户甲 | 张三 | 5000 | 3500 | 10 |
| 10002 | 2024-01-08 | 服装 | 服装A | 上海 | 客户乙 | 李四 | 2000 | 1200 | 20 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
产品表(Products):
| 产品ID | 产品名称 | 产品类别 | 品牌 | 单位成本 |
|---|---|---|---|---|
| P01 | 手机A | 电子产品 | 品牌甲 | 3500 |
| P02 | 服装A | 服装 | 品牌乙 | 1200 |
客户表(Customers):
| 客户ID | 客户名称 | 地区 | 客户等级 |
|---|---|---|---|
| C01 | 客户甲 | 北京 | VIP |
| C02 | 客户乙 | 上海 | 普通 |
💡 实际项目中,数据可能来自 ERP 系统或数据库。此处用 Excel 模拟,方便读者自行练习。
2.2 导入数据
- 打开 Power BI Desktop → "获取数据" → "Excel 工作簿"
- 加载销售明细、产品表、客户表三张表
- 确认数据类型:订单日期改为日期类型,销售额/成本改为小数类型
3. 数据建模
3.1 建立关系
进入"模型视图",按以下方式建立关系:
产品表(1)------→(*)销售明细表(产品名称)
客户表(1)------→(*)销售明细表(客户名称)
日期表(1)------→(*)销售明细表(订单日期)
3.2 创建日期表
在 Power Query 中用 DAX 创建日期表:
dax
日期表 =
ADDCOLUMNS(
CALENDAR(DATE(2024,1,1), DATE(2024,12,31)),
"年", YEAR([Date]),
"月", MONTH([Date]),
"年月", FORMAT([Date], "yyyy-MM"),
"季度", "Q" & QUARTER([Date]),
"年度月份", FORMAT([Date], "yyyy-MM"),
"星期", FORMAT([Date], "dddd")
)
标记日期表:"表格工具" → "标记为日期表" → 选择 Date 列。
4. 创建 DAX 度量值
在建模视图或数据视图中创建以下度量值,集中管理:
4.1 核心KPI指标
dax
// 总销售额
销售额总计 = SUM(Sales[销售额])
// 总成本
成本总计 = SUM(Sales[成本])
// 总利润
总利润 = [销售额总计] - [成本总计]
// 利润率
利润率 = DIVIDE([总利润], [销售额总计])
// 订单数量
订单数量 = DISTINCTCOUNT(Sales[订单ID])
// 客户数量(去重)
客户数量 = DISTINCTCOUNT(Sales[客户名称])
// 客单价
客单价 = DIVIDE([销售额总计], [客户数量])
// 总销售数量
销售数量总计 = SUM(Sales[数量])
4.2 时间智能指标
dax
// 去年同期销售额
销售额_去年同期 =
CALCULATE(
[销售额总计],
SAMEPERIODLASTYEAR('日期表'[Date])
)
// 同比增长率
销售额_同比 =
DIVIDE(
[销售额总计] - [销售额_去年同期],
[销售额_去年同期]
)
// 年累计销售额
销售额_YTD = TOTALYTD([销售额总计], '日期表'[Date])
// 上年同期年累计
销售额_YTD_去年同期 =
CALCULATE(
[销售额_YTD],
SAMEPERIODLASTYEAR('日期表'[Date])
)
4.3 排名与占比
dax
// 产品类别销售占比
销售占比_类别 =
DIVIDE(
[销售额总计],
CALCULATE([销售额总计], ALL(Sales[产品类别]))
)
// 区域排名
区域排名 =
RANKX(
ALL(Sales[区域]),
[销售额总计],
,
DESC,
DENSE
)
5. 设计报表页面
5.1 第一页:首页总览(KPI Dashboard)
布局设计:
┌──────────────────────────────────────────────┐
│ 2024年销售总览 [区域切片器] [类别切片器]│
├────────────┬────────────┬────────────┬─────────┤
│ 💰 总销售额 │ 📦 订单数 │ 👥 客户数 │ 💎 客单价 │
│ ¥1,234,567 │ 1,520 │ 320 │ ¥3,858 │
│ ↑12.5% │ ↑8.2% │ ↑5.1% │ ↑3.8% │
├────────────┴────────────┴────────────┴─────────┤
│ 月度销售额趋势(折线+柱形组合图) │
│ Y轴:销售额 | X轴:月份 | 对比:今年 vs 去年 │
├──────────────────────────┬────────────────────┤
│ 各产品类别销售占比(饼图)│ 各区域销售排名(条形图)│
│ 可点击联动到其他图表 │ 带数据标签 │
└──────────────────────────┴────────────────────┘
可视化设置:
| 图表 | 字段配置 | 格式设置 |
|---|---|---|
| KPI卡片(4个) | 度量值 → 指标;可选:同期值 → 目标 | 打开数据标签、副标题显示同比 |
| 组合图 | 轴:年月;列值:销售额;线值:销售额_同比 | 显示双轴,关闭列的图例 |
| 饼图 | 图例:产品类别;值:销售额总计 | 显示数据标签:百分比 |
| 条形图 | Y轴:区域;X轴:销售额总计 | 降序排列,显示数据标签 |
5.2 第二页:产品分析
┌──────────────────────────────────────────────┐
│ 产品分析 [产品类别切片器] [品牌切片器] │
├──────────────────────────────────────────────┤
│ 产品类别月度趋势(堆积柱形图) │
│ X轴:年月 | Y轴:销售额 | 堆叠:产品类别 │
├──────────────────────────┬────────────────────┤
│ 产品销售排名(表格) │ 产品利润排行榜 │
│ 含:销售额、同比、占比 │ 按利润率排序 │
└──────────────────────────┴────────────────────┘
表格条件格式:
- 销售额列 → 数据条
- 同比列 → 字体颜色(绿色=正增长,红色=负增长)
- 利润率列 → 色阶(红→黄→绿)
5.3 第三页:区域分析
┌──────────────────────────────────────────────┐
│ 区域分析 [区域切片器] [季度切片器] │
├──────────────────────────────────────────────┤
│ 各区域月度销售额(分区柱形图) │
├─────────────┬──────────────┬──────────────────┤
│ 区域销售排名 │ 区域销售漏斗 │ 区域客户数分布 │
│ 条形图 │ 瀑布图 │ 环形图 │
└─────────────┴──────────────┴──────────────────┘
5.4 第四页:明细数据
┌──────────────────────────────────────────────┐
│ 销售明细 [搜索框] [日期范围切片器] │
├──────────────────────────────────────────────┤
│ 矩阵表(支持展开折叠) │
│ 行:区域→产品类别→产品名称(层级展开) │
│ 列:销售额 | 成本 | 利润 | 利润率 | 数量 │
│ 支持条件格式、排序、小计 │
└──────────────────────────────────────────────┘
6. 添加交互功能
6.1 切片器同步
在所有页面添加统一切片器:
- "区域"切片器(影响所有页面)
- "产品类别"切片器(影响所有页面)
- "时间范围"切片器(相对日期:过去12个月)
6.2 页面导航
使用"按钮+书签"创建页面切换导航栏,替代传统页面标签:
- 在每页顶部添加一个横条
- 插入4个按钮,分别对应4个页面
- 每个按钮绑定对应书签的"转到页面"操作
6.3 钻取功能
在"区域分析"页面,添加钻取到"产品分析"页面的功能:
- 创建钻取页面:按区域展开的详细产品销售分析
- 在条形图上右键 → "钻取" → 选择区域 → 跳转到钻取页
7. 发布与共享
7.1 发布前检查清单
- 所有切片器能正确联动
- KPI 数字格式正确(货币格式、百分比格式)
- 同比增长率显示正负颜色
- 钻取功能测试通过
- 页面导航按钮工作正常
- 条件格式(数据条、色阶)显示正常
7.2 发布流程
- 保存 .pbix 文件
- 点击"发布" → 选择"我的工作区"或新建工作区
- 等待上传完成
7.3 配置定时刷新
- 在 Power BI Service 中打开数据集
- 设置计划刷新(每天凌晨自动刷新)
- 如果使用本地 Excel 文件,需安装并配置本地数据网关
7.4 共享设置
- 点击右上角"共享"
- 邀请团队成员邮箱
- 设置权限:允许查看、允许导出数据、允许构建内容
8. 报表优化建议
| 问题 | 优化方向 |
|---|---|
| 报表加载慢 | 减少 DAX 计算量;减少页面视觉对象数量 |
| 图表不联动 | 检查"编辑交互"设置 |
| 刷新失败 | 检查数据源凭据和网关状态 |
| 移动端显示差 | 在"视图"中切换到"手机布局"专门设计移动版 |
| 数据泄露风险 | 配置行级安全(RLS),限制不同用户的数据范围 |
9. 进阶学习方向
完成本系列教程后,可以进一步学习:
| 方向 | 说明 |
|---|---|
| DAX 高级模式 | 学习 TREATAS、CROSSFILTER 等高级函数 |
| Power Query 高级 | 学习参数化查询、自定义函数 |
| 增量刷新(Premium) | 处理 GB-TB 级数据的增量加载 |
| 数据流(Dataflow) | 在云端统一管理数据转换逻辑 |
| Power BI 嵌入式 | 将报表嵌入到企业自有应用中 |
| 高级可视化 | 学习 R 和 Python 视觉对象 |
| 行级安全(RLS) | 构建多租户 SaaS 报表 |