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

思路:

  1. 将占比列进行累加,并求出累计占比;
  2. 用IF函数判断判断占比所属的范围。

 

6.2、占比分析

技术图片

 

 

 用到的函数IF、HASONEVALUE、VALUSE。

思路:

  1. 创建链接表,添加到模型,方便更改汇率。
  2. 书写函数。 

 

 6.3分组分析,可以看成是占比分析的模糊版

技术图片

 

 

 

用到的函数VALUS、CALCULATE、FILTER、

思路:

  1. 将占比列进行累加,并求出累计占比;
  2. 用IF函数判断判断占比所属的范围。

 

 6.4排名分析

将排名列进行排名,然后进行分析。

用到的函数:ALLSELECT、RANKX、HASONEVALUES(去除汇总列排名)

思路:

  1. 用RANKX进行排名

 

 

 6.5排名分析进阶

 

 

 

 

 6.4排名分析

将排名列进行排名,然后进行分析。

用到的函数:ALLSELECT、RANKX、HASONEVALUES(去除汇总列排名)

思路:

  1. 用RANKX进行排名

 

 

 

 

以上是关于POWER PIVOT 进阶篇的主要内容,如果未能解决你的问题,请参考以下文章

Flutter进阶篇(4)-- Flutter的Future异步详解

MODEM进阶篇

Android 高级进阶(源码剖析篇)

Java-进阶篇面向对象进阶

MySQL的进阶实战篇

python进阶篇