POWER PIVOT 进阶篇
Posted qianslup
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POWER PIVOT 进阶篇相关的知识,希望对你有一定的参考价值。
一、时间智能
1.1 日历表要求
- 向模型中指定一张日历表
- 包含至少一列是日期格式,且包含需要计算的日期
- 周、月份、年份可自由添加
- 日期列不能重复,但可以不连续,如果最小单位为月,可以只设置每月1号
标记为日期表
1.2常用时间计算指标
缩写 | 英文 | 解释 |
YTD | Year To Date | 年初至今的累积 |
QTD | Quarter To Date | 季度初至今的累积 |
MTD | Month To Date | 月初至今的累积 |
YOY | Year On Year | 同比去年 |
MOM | Month On Month | 环比上月 |
1.3常用时间智能函数
函数 | 说明 | 类似函数 |
TOTALYTD | 年累积 | DATESYTD |
TOTALQTD | 季度累积 | DATESQTD |
TOTAMTD | 月累积 | DATESMTD |
DATEADD | 日期推移 | SAMEPERIODLASTYEAR |
PARALLELPERIOD | 某一区间的总数 |
求同环比常与calculate搭配使用
二、链接回表
2.1 创建链接回表
2.2 Summarize
Summarize(表格,汇总列1,..."名称1",表达式1)
数据汇总功能,相当于生成一张透视表,就是SQL中的group by
SELECT C1(汇总列1),C2(汇总列2),sum(C3)(表达式1) AS ‘N1‘(名称1),COUNT(C4)(表达式2)as ‘N2‘(名称2)
FROM T1(表格)
2.3Generate
generate(T1,T2)
生成笛卡尔积表
三、高级DAX函数
3.1高级聚合函数
函数 | 说明 |
SUMX | 求和 |
AVERAGEX | 求平均值 |
MAXX | 求最大值 |
MINX | 求最小值 |
COUNTX | 数值格式的计数 |
COUNTAX | 所有格式的计数 |
MEDIENX | 求中位数 |
RANKX | 排名 |
SUMX(Table,expression)
sumx(t1,单价*数量):表格t1中求销售额(单价*数量),销售额=单价1*数量1+...+单价n*数量n
3.2常用筛选器函数
函数 | 说明 |
FILTER | 按条件筛选数据 |
VALUES | 返回列或者表去重后的结果 |
TOPN | 返回前几名的数据 |
ALL | 所有数据 |
ALLEXCEPT | 所有数据除了 |
ALLNONBLANKROW | 返回非空白的数据 |
FILTER(表,FilterExperssion)
ALLEXCEPT(表,ColumnName1,...)
FILTER实现对行的筛选,ALLEXCEPT实现对列的筛选。
VALUSE(TabelNameOrColumnName)等于只按一列进行SUMMARIZE
TOPN(N Value,表,[OrderBy_Expression1],[Order1]...)。在表中选择前N项,按OrderBy_Expression排序,排序方式为Order(ASC,DESC)
SUMX经常与FILTER一起使用,能够实现无关系的数据获取(可能需要搭配RELATED使用)。
3.3earlier函数
与SUMX,FILTER连用。可以创建一个辅助列。
四、计值与上下文
4.1筛选上下文与行上下文
上下文:context、语境、环境。
筛选上下文:行区域、列区域、筛选、切片器。
行上下文:增加辅助列:销售额 = 单价 * 数量。是一行一行计算的。
4.2使用filter、all进行上下文交互
当使用filter是,会将行上下文带入到透视中,也会受筛选上下文的控制。
当使用all时,将强制取消筛选上下文。
当使用calculate:当外部的上下文与内部上下文冲突时,以内部为准,强制替换外部的上下文。
表达式 | 相同 | 区别 | |
SUMX | SUMX(Table,expression) | 都可以被筛选 | expression不同。比如求金额。sumx(table,金额)而calculate为calculate(sum(金额),filter) |
CALCULATE | CALCULATE(expression,filter) | 如果筛选条件不是filter中的限制条件,则结果相同 | 当外部的上下文与内部上下文冲突时,以内部为准,强制替换外部的上下文。 |
建议使用CALCULATE。
4.2使用CALCULATE进行上下文转换(占比)
主要函数:CALCULATE、FILTER、ALL。
占比:占比:=DIVIDE(SUM([金额]),CALCULATE(SUM([金额]),ALL(‘产品分类‘[产品分类])))
也可以写成
占比:占比:=DIVIDE(SUM([金额]),CALCULATE(SUM([金额]),ALL(‘产品分类‘)))
五、多对多关系
首先要建立联系。
USERELATIONSHIP(ColumnName1,ColumnName2)
ColumnName1一般为多段,ColumnName2一般为为一端。
六、常用分析
6.1、占比分析
主要是82分析和721分析。
用到的函数SUMX、FILTER、EARILIER、DIVIDE、SUM、IF
思路:
- 将占比列进行累加,并求出累计占比;
- 用IF函数判断判断占比所属的范围。
6.2、占比分析
用到的函数IF、HASONEVALUE、VALUSE。
思路:
- 创建链接表,添加到模型,方便更改汇率。
- 书写函数。
6.3分组分析,可以看成是占比分析的模糊版
用到的函数VALUS、CALCULATE、FILTER、
思路:
- 将占比列进行累加,并求出累计占比;
- 用IF函数判断判断占比所属的范围。
6.4排名分析
将排名列进行排名,然后进行分析。
用到的函数:ALLSELECT、RANKX、HASONEVALUES(去除汇总列排名)
思路:
- 用RANKX进行排名
6.5排名分析进阶
6.4排名分析
将排名列进行排名,然后进行分析。
用到的函数:ALLSELECT、RANKX、HASONEVALUES(去除汇总列排名)
思路:
- 用RANKX进行排名
以上是关于POWER PIVOT 进阶篇的主要内容,如果未能解决你的问题,请参考以下文章