Power BI学习笔记第10篇:实战案例 — 销售数据分析仪表板
第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 创建日期表:
日期表 = 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指标
// 总销售额 销售额总计 = SUM(Sales[销售额]) // 总成本 成本总计 = SUM(Sales[成本]) // 总利润 总利润 = [销售额总计] - [成本总计] // 利润率 利润率 = DIVIDE([总利润], [销售额总计]) // 订单数量 订单数量 = DISTINCTCOUNT(Sales[订单ID]) // 客户数量(去重) 客户数量 = DISTINCTCOUNT(Sales[客户名称]) // 客单价 客单价 = DIVIDE([销售额总计], [客户数量]) // 总销售数量 销售数量总计 = SUM(Sales[数量])4.2 时间智能指标
// 去年同期销售额 销售额_去年同期 = CALCULATE( [销售额总计], SAMEPERIODLASTYEAR('日期表'[Date]) ) // 同比增长率 销售额_同比 = DIVIDE( [销售额总计] - [销售额_去年同期], [销售额_去年同期] ) // 年累计销售额 销售额_YTD = TOTALYTD([销售额总计], '日期表'[Date]) // 上年同期年累计 销售额_YTD_去年同期 = CALCULATE( [销售额_YTD], SAMEPERIODLASTYEAR('日期表'[Date]) )4.3 排名与占比
// 产品类别销售占比 销售占比_类别 = 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 报表 |
