LINKs Back: WIKI: Power BI
Power Pivot 能够帮助我们管理百万级的数据
1. Power Pivot UI
1.1 Open Power Pivot
(1) 添加 Power Pivot 选项至菜单栏
- 菜单栏点击
File
$\to$ 左侧栏最下面点击Options
- 在弹窗中进行如下选择 $\to$ 点击右边的
Go...
- 在弹窗中勾选
Microsoft Power Pivot for Excel
(2) 打开界面
- 菜单栏点击
Power Pivot
$\to$Manage
- 界面如下,长的类似于 Power Query
2. Data Model
Data Model 可以看作是 Power Pivot 里的一张张表,是一种用于分析的数据储存形式
2.1 Add Data Model
LINKs Back: WIKI: Power BI - 3. Add Calender Model with DAX
在添加 Data Model 的同时会创建对应的 Connection
M1: Use Power Query
- 需要勾选
Add this data to the Data Model
M2: Use Power Pivot
- 菜单栏点击
Power Pivot
$\to$Add to Data Model
M3: Directly From Database
- Power Pivot 的菜单栏
Home
$\to$Get External Data
$\to$From Database
Create Calender Table 创建一个用于储存日期数据的 Data Model(包含日期的各种形式,对应的星期几、年月日等),用于和日期相关的查找、Merge等操作
3. Relationship Among Data Model
Relationship has three normal types: one-to-one
, one-to-many
, many-to-many
而 Data Model 主要分为两种类型:
- Look-up Table 存放更新频率低的数据,一般作为 Data Table 的查找匹配对象
- Data Table 存放更新频率高的数据
例如: Customers, Products and Salespeople 作为 Look-up Table, Orders 作为 Data Table
通常情况下,Look-up Table 与 Data Table 之间存在 one-to-many
关系,这种关系是合理的、不会出现异议。例如上图每个订单都只对应一个顾客和一个销售者
然而,它们之间有时候会出现 many-to-many
关系,例如上图的 Products Table-to-Orders Table, 因为一个订单可以包含多种商品,而一种商品可能出现在多个订单内,这就会导致查找的不确定性
解决方式是再添加一个 Orders Item Table, 因为每个订单商品只对应一个订单与一种商品,从而消除了 many-to-many
3.1 View Relationship
打开 Power Pivot 界面$\to$点击Diagram View
$\to$将光标悬停在连线上
例如,下图显示的是在 Chapter 4.3.2 中创建的 relationship
3.2 Reorganize Relationship
默认情况下各个 Data Model 的排版是混乱的
推荐的排版方式如下:
- Look-up table 放在最上排
- Data table 放在下排
这是因为 look-up table 一般用于查找匹配,因此适合放在最方便查看的位置
3.3 Create Relationship
3.3.1 In Relationship Viewer
例如下图,左键按住 lkp_Customer 中的 ID,然后拖动至 Orders 中的 CustomerID
3.3.2 From PivotTable
了来自两个分别来自不同 Data Model 的 fields 后,需要为这两个 Data Model 创建 relationship。一般直接点击 Auto-Detect...
即可
当然也可以点击 CREATE...
手动创建 relationship
3.4 Edit/ Remove Relationship
右键单击任一关系线后可以在弹出的小窗中选择删除或编辑 relationship,编辑界面如下:
4. PivotTable From Data Model
PivotTable 可以基于多个 Data Model 创建
4.1 Create
Prerequisite 基于多个 Data Model 创建 PivotTable 的前提是这些 Data Model 之间需要存在完整的 relationships (例如下图)。Relationship 的查看/创建方式详见 Chapter 4
Create Steps:
- 点击菜单栏
Insert
$\to$PivotTable
$\to$From Data Model
- 点击设置符号可以修改排版方式,以更完整地显示各个表单
5. Data Analysis in Power Pivot
Formatting
Add Column Through DAX Function
DAX(Data Analysis eXpression) 类似于普通 Excel 函数,区别在于其作用的对象是列而不是单元格
例如下图,在最右侧单元格内输入 =FUNC(表名[列名])
Add Hierarchy
在 Data Model 中添加 Hierarchy 可以为在 PivotTable 中的数据处理带来很大的便利性。例如下图的 Hierarchy 来自系统快捷创建的 Calender
Model (详见 Chapter 3.1 最后)
自主添加 Hierarchy: 例如为 Customer
Model 的地理位置信息添加 Hierarchy (County > State > City)
首先打开
Diagram View
界面,并将目标 Data Model 最大化显示然后点击右上角的小黄标新建一个 Hierarchy,并由大到小把层级对象依次拖进去
效果如下。展开 Hierarchy: 直接点击地名单元格左边的加号,或是点击红框内的 Drill Down/Up
访问层级,以及点击加减号展开层级
Distinct Count
这是 PivotTable based on Power Pivot 独有的属性
例如下图想通过订单数据来统计每个地区的消费者个数
6. Data Visualization with Power Pivot
PivotTable 不支持很多类型的图(Treemap, Histogram, Sunburst…),因此我们需要把 PivotTable 中的数据转化为普通 Excel 单元格,再基于这些普通单元格构建图
以下图为例,目标是构建一张能够表示层级关系的 Sunburst 图(Slicer 的添加方式: 菜单栏 PivotTable Analyze
$\to$Filter
$\to$Insert Slicer
)
(1) 展开 Hierarchy,使其看起来像普通单元格
- 选中 PivotTable, 菜单栏
Design
$\to$Layout
$\to$Reprot Layout
$\to$Show in Tabular Form
- …$\to$
Layout
$\to$Grand Totals
$\to$Off for Rows and Columns
(2) Convert PivotTable to Formulas
- 选中 PivotTable, 菜单栏
PivotTable Analyze
$\to$Calculations
$\to$OLAP Tools
$\to$Convert to Formulas
- 完美! 这样我们就可以插入表示 Hierarchy 的 Sunburst 图了
7. DAX Measures
在 Chapter 6 的第二小节,我们使用 DAX Function 在 Power Pivot 中创建了一列数据。更进一步的 DAX 还能应用于创建 DAX Measures
Measures is a dynamic calculaiton where the results change contextually (filter…). 例如下一图的最后一列是直接通过下二图这样的方式创建的,因此存在不少问题:
- 列名
Sum of SubTotal2
不好,虽说可以修改,但是每次这么创建都得改名 - 数据格式不对,同样的也需要在每次创建时修改
That’s why we need DAX Measures. 两种创建方式:
(1) Method 1: In Power Pivot Data View 在灰色粗横线下的单元格内输入 Measure名:=FUNC(表名[列名])
,注意等号前面还有一个冒号,然后在菜单栏修改 Formatting
为目标格式
(2) Mehotd 2: Through PivotTable Fields Window
右键单击 Data Model 名$\to$打开
Add Measure
在弹窗中完成如下三处修改
效果如下, Perfect:
8. DAX Function
(1) 添加筛选条件 CALCULATE(Expression, [Filter1], ...)
例如,筛选出自行车的销售数据
根据 Slicer 的筛选显示去年同期的数据
Document Information
- Author: Zeka Lee
- Link: https://zhekaili.github.io/wiki/excel/excel-power%20pivot/
- Copyright: 自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)