在前面的教程中,我们学习了 Power Query——一个强大的数据清洗工具,它能把杂乱的数据变得规整。但当你同时拥有“订单表”、“产品表”、“客户表”等多张关联表时,你可能会再次陷入 VLOOKUP 的泥潭:为每张表添加辅助列,写一堆查找公式,把多张表强行拼成一张“大宽表”。
而 Power Pivot 提供了一种更优雅的解决方案:在不合并原始表的前提下,通过建立表间关系,让数据透视表直接跨表分析。它不是将数据存储在单元格里,而是全部加载到 Excel 内部的数据模型中,通过压缩技术使你可以流畅地处理数千万行数据,同时保持工作簿性能完好。
一、什么是数据模型与 Power Pivot?
数据模型是 Excel 内部的一种“数据库化”存储方式。它允许你导入多个表格,定义它们之间的关系,并在这个统一的数据集上进行计算和分析。你可以通过 Power Pivot 管理器导入数据表并定义它们之间的关系。
而 Power Pivot 是 Excel 内置的数据建模引擎,它是你构建和管理数据模型的专门工具。与普通工作表相比,Power Pivot 带来了四个革命性的改变:
打破百万行限制:Power Pivot 通过压缩数据,让处理数千万行数据成为可能。
告别 VLOOKUP 链:你不再需要把所有表强行合并成一张大表,而是可以通过主键直接关联表格,就像轻量级数据库一样。
更强的计算能力:通过 DAX 语言(Data Analysis Expressions),你可以创建远超普通数据透视表的计算,如同比环比、滚动窗口、客户生命周期价值等。
一键刷新:当源数据更新时,整个模型和分析结果只需点击“全部刷新”即可同步更新。
典型应用场景:销售业绩追踪、运营报表、多表数据整合等。
Excel 数据模型的核心在于构建有效的数据模型。
二、启用 Power Pivot 并导入数据
启用 Power Pivot
Power Pivot 不需要额外下载,它已内置于 Excel 中。只需手动启用即可:依次点击 文件 → 选项 → 加载项,在管理下拉菜单中选择 COM 加载项,点击 转到,勾选 Microsoft Power Pivot for Excel,确认即可。启用后,Power Pivot 选项卡就会出现在功能区上。
注意:Power Pivot 仅适用于 Excel Professional Plus 或 Microsoft 365 版本,如果你在启用后没有看到选项卡,可能是因为当前版本不包含此功能。
准备数据并导入
在将数据导入 Power Pivot 之前,请务必将数据源格式化为 Ctrl+T 创建的“表格”,这样新增行后刷新即可自动识别,避免手动调整范围。
将源数据格式化为表格后,进入 Power Pivot 窗口导入。在 Power Pivot 选项卡中,点击 管理 打开 Power Pivot 窗口,点击 获取外部数据,选择数据源类型(Excel 文件、数据库等),按照向导导入即可。你也可以为导入的表起一个有意义的名称,便于后续管理。
三、构建数据模型:建立表间关系
导入所有需要的表后,核心工作就是在它们之间建立关系,从而让后续的数据透视表可以跨表分析。
进入图表视图
在 Power Pivot 窗口的 主页 选项卡中,点击 图表视图,即可看到所有表以方框形式呈现,表之间的字段可以相互拖拽连接。
拖拽建立关系
假设我们有以下三张表:
在图表视图中,将产品表中的 产品ID 字段拖拽到订单表中的 产品ID 字段上,Excel 会自动创建一对多关系(一个产品对应多个订单)。同样,将客户表中的 客户ID 拖拽到订单表中的 客户ID 上,完成客户关系的建立。这种关系结构使得你无需把所有表合并成一张大表,就可以在分析中自由引用所有相关字段。
关系类型说明
在数据模型中,表间关系通常是 “一对多” 关系:
确保在“多”方表中,用于关联的字段没有空值或重复问题,否则关系可能无法正确建立。
四、DAX 基础:创建计算列与度量值
DAX 是 Power Pivot 的核心语言。你可以在模型中创建两种计算元素:计算列 和 度量值。
1. 计算列
计算列是在表中新增一列,对每一行进行计算。例如,在订单表中计算“订单金额”:
= [单价] * [数量]
计算列会立即在表中显示结果,并占用内存,适合需要逐行显示的计算。
2. 度量值(核心重点)
度量值是在数据透视表中使用的动态公式,不占用内存,只在被拖拽到透视表时才计算,是 Power Pivot 最核心的功能。推荐将计算写在度量值中,而不是计算列。
基础度量值示例:
| | |
|---|
| =SUM('订单表'[销售额]) | |
| =AVERAGE('订单表'[销售额]) | |
| =COUNTROWS('订单表') | |
| =AVERAGE('产品表'[单价]) | |
创建度量值的步骤:在 Power Pivot 窗口中,右键点击表名 → 添加度量值,输入名称和公式即可。
3. CALCULATE 函数:DAX 的灵魂
CALCULATE 是 DAX 中最强大也最常用的函数,它可以在计算时修改数据的筛选上下文。例如:
= CALCULATE([总销售额], '产品表'[类别] = "电子产品")
这个公式在计算总销售额时,只统计“电子产品”类别的订单。它还支持多条件筛选:
= CALCULATE([总销售额], '产品表'[类别] = "电子产品", '客户表'[地区] = "华东")
CALCULATE 是 DAX 的核心函数,掌握了它,你就掌握了 DAX 的精华。
4. 时间智能函数:同比与环比
DAX 提供了一系列时间智能函数,让日期分析变得极为简单。使用这些函数的前提是:你的模型中必须有一个日期表,且与事实表的日期字段建立关系。
| |
|---|
| =TOTALYTD([总销售额], '日期表'[日期]) |
| =CALCULATE([总销售额], SAMEPERIODLASTYEAR('日期表'[日期])) |
| =CALCULATE([总销售额], PREVIOUSMONTH('日期表'[日期])) |
5. 常用 DAX 函数速查表
| | |
|---|
| 聚合 | SUM, AVERAGE, MIN, MAX, COUNTROWS, DISTINCTCOUNT | |
| 筛选 | CALCULATE | |
| 时间智能 | TOTALYTD, SAMEPERIODLASTYEAR, PREVIOUSMONTH, DATESBETWEEN | |
| 逻辑 | IF | |
五、创建基于数据模型的报表
数据模型搭建完成、度量值定义好之后,就可以创建基于模型的报表了。这是数据模型区别于传统 Excel 分析的最大优势:不再依赖单一的数据源范围,而是可以调用整个模型中的所有表和度量值。
创建步骤
在 Excel 主窗口中,点击 插入 → 数据透视表
在弹出的对话框中,勾选 使用此工作簿的数据模型
选择放置位置,点击确定
在数据透视表字段列表中,你会看到所有导入模型的表,以及你定义的度量值。现在,你可以自由组合不同表中的字段进行跨表分析:将“产品表”中的“类别”拖到行区域,将“客户表”中的“地区”拖到列区域,再将“总销售额”度量值拖到值区域——整个过程无需任何 VLOOKUP 公式,完全基于表间关系驱动。
添加切片器增强交互性
切片器是数据透视表的可视化筛选器,可以让你一键筛选数据。选中数据透视表 → 数据透视表分析 → 插入切片器 → 选择需要筛选的字段(如“类别”、“地区”),点击确定。你可以连接多个数据透视表共享同一个切片器,实现多图表联动分析。
六、创建 KPI:让数据“说话”
在 Power Pivot 中,你可以创建 KPI(关键绩效指标),通过红、黄、绿三色图标直观地展示绩效表现。例如:设定最小阈值 100%、最大阈值 120%,低于 100% 显示红色(低于平均值),介于 100%-120% 显示黄色(表现一般),高于 120% 显示绿色(表现优秀)。
创建步骤:在 Power Pivot 窗口中,右键点击包含度量值的表,选择 创建 KPI,在对话框中指定目标值(可以是另一个度量值或绝对值)和阈值范围,选择图标样式,点击确定。
七、Power Query + Power Pivot 协同工作
Power Query 和 Power Pivot 是 Excel 数据工具链中的上下游关系:
推荐流程:用 Power Query 从各种数据源获取数据并完成清洗 → 将清洗后的数据加载到数据模型 → 用 Power Pivot 建立表间关系和度量值 → 创建数据透视表和图表进行分析。当源数据更新时,只需点击 数据 → 全部刷新,Power Query 和 Power Pivot 会自动协同完成整个流程,实现“一键刷新”的自动化报表。
八、综合实战:销售业绩分析模型
场景需求
分析公司 2025 年各产品类别的销售趋势,按地区对比业绩,并计算各产品类别占总销售额的比例。
数据准备
构建步骤
第 1 步:导入数据并建立关系
用 Power Query 或 Power Pivot 导入四张表
在图表视图中建立关系:产品表.产品ID → 订单表.产品ID;客户表.客户ID → 订单表.客户ID;日期表.日期 → 订单表.日期
确保关系类型均为“一对多”(维度表为“一”,订单表为“多”)
第 2 步:创建关键度量值
| |
|---|
| =SUM('订单表'[销售额]) |
| =COUNTROWS('订单表') |
| =DIVIDE([总销售额], DISTINCTCOUNT('订单表'[客户ID])) |
| =CALCULATE([总销售额], SAMEPERIODLASTYEAR('日期表'[日期])) |
| =DIVIDE([总销售额] - [同比去年], [同比去年]) |
第 3 步:创建分析报表
| |
|---|
| |
| 同上,值字段设置 → 值显示方式 → 总计的百分比 |
| |
| 行:日期表.月份;值:总销售额 + 同比去年 + 增长率 |
第 4 步:增强交互性
插入切片器,添加“产品类别”和“地区”字段
将切片器连接到所有相关的数据透视表
插入柱形图和折线图,实现图表的联动筛选
九、常见问题与注意事项
| | |
|---|
| | |
| | 检查是否使用了合适的 DAX 函数(如 CALCULATE、ALL) |
| | |
| | |
| | |
十、总结
| |
|---|
| 数据模型 | |
| Power Pivot | |
| 表间关系 | |
| DAX 语言 | |
| KPI | |
| 与 Power Query 协同 | Power Query 负责清洗,Power Pivot 负责建模分析 |
Power Pivot 将 Excel 从一个电子表格工具提升为真正的商业智能平台。掌握了它,你就能在不写复杂公式的前提下,处理海量多表数据,构建企业级的分析模型。建议初学者先掌握基础的表间关系建立和简单的 SUM/AVERAGE 度量值,再逐步进阶到 CALCULATE 和时间智能函数。数据模型建好后,后续的分析工作将变得异常简单和直观。