Power BI多个度量值进行动态分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Power BI多个度量值进行动态分析相关的知识,希望对你有一定的参考价值。

参考技术A 在数据分析中,经常会有多个指标进行数据的展现分析,但是如果指标过多则会影响数据的精准分析,那怎么样选择一个指标就对应此指标的数据呢,下面就看怎么使用度量值进行动态分析。

假如需要根据以上四个指标展示对应数据

首先这几个指标的数据需要写对应的度量值,这就不写了

其次要有一个指标维度表(排序那列是辅助的,根据情况使用)

指标维度表

然后将指标维度表与对应的度量值书写度量值使之关联起来,方法有三个,择优使用:

(1)方法一:

指标值 =

SWITCH(                 

            TRUE(),

            SELECTEDVALUE('案例1-多度量动态交互辅助表'[指标])="销售额",[销售额],

            SELECTEDVALUE('案例1-多度量动态交互辅助表'[指标])="销售量",[销售量],

            SELECTEDVALUE('案例1-多度量动态交互辅助表'[指标])="利润率",[利润率],

            SELECTEDVALUE('案例1-多度量动态交互辅助表'[指标])="成本销售额",[成本销售额],                    [销售额]

            )

(2)方法二:

指标值2 =

SWITCH(

            SELECTEDVALUE('案例1-多度量动态交互辅助表'[指标]),

                                        "销售额",[销售额],

                                        "销售量",[销售量],

                                        "利润率",[利润率],

                                        "成本销售额",[成本销售额],

                                        [销售额]

            )

(3)方法三:

指标值3 =

SWITCH(

              MIN('案例1-多度量动态交互辅助表'[排序]),

              1,[销售额],

              2,[销售量],

              3,[利润率],

              4,[成本销售额],

            BLANK()

            )

注释:这里的min是当我们什么都不选的时候默认返回序列最小值1,然后通过最小值去对应相应指标。

三种方法结果都是一样的,如下图选择的是销售额:

SELECTEDVALUE(表的列名):当上下文过滤为一个值时,返回该值;通常用于度量值,获取外部上下文筛选器

使用度量值进行动态分析时,经常用到switch和selectedvalue的配合,记住这个黄金搭档就可以灵活使用。

数据可视化之DAX篇(二十八)Power BI时间序列分析用到的度量值,一次全给你

https://zhuanlan.zhihu.com/p/88528732

在各种经营分析报告中,我们常常会看到YTD,YOY这样的统计指标,这样的数据计算并不难,尤其是在PowerBI中,因为有时间智能函数的帮助,大大简化了这些计算,从而快速满足定期的报告需求。

下面就给你列出这些常用统计数据的度量值,帮你快速掌握各种期间数据的算法。

 

如果对时间智能函数不熟悉,可以先看看这篇文章:

一文帮你掌握时间智能函数

 

假设数据模型为一张订单表和一张对应的日期表,并已经建立了基础度量值:

收入 = SUM(‘订单‘[销售额])

下面的所有度量值都是以此为基础。


 

本期至今

XTD Month/Quarter/Year To Date

 

从本期的第一天到当前日期的累计,比如收入的YTD就是从本年1月1日到当前上下文日期的累计收入,MTD就是当前上下文月份的第一天到当前日期的累计收入。

月初至今

MTD Month To Date

MTD = CALCULATE([收入],DATESMTD(‘日期表‘[日期]))

 

当然并非只有这一种写法,比如还可以直接用TOTALMTD:

MTD1= TOTALMTD([收入],‘日期表‘[日期])

 

下面其他各种计算同理,带数字的度量值是等值的替代写法,熟练掌握其中一种写法就可以了。

季初至今

QTD Quarter To Date

QTD =

CALCULATE([收入],DATESQTD(‘日期表‘[日期]))

QTD1=

TOTALQTD([收入],‘日期表‘[日期])

 

年初至今YTD Year To Date

YTD = CALCULATE([收入],DATESYTD(‘日期表‘[日期]))

YTD1= TOTALYTD([收入],‘日期表‘[日期])

 

技术图片


上期的本期至今PXTD Previous Month/Quarter/Year to Date

上期的MTD,简称为PMTD,就是上个月MTD,有了这个数据,计算环比时十分方便;而PYTD,上年的本年至今,计算年累计的同比也需要该数据。

并且在写PXTD时,上面已经建好的XTD度量值也可以直接复用。

上月的月初至今

PMTD Previous Month to Date

 

PMTD =

CALCULATE([MTD],DATEADD(‘日期表‘[日期],-1,MONTH))

PMTD1=

TOTALMTD([收入],DATEADD(‘日期表‘[日期],-1,MONTH))

 

上季的季初至今

PQTD Previous Quarter to Date

PQTD =

CALCULATE([QTD],DATEADD(‘日期表‘[日期],-1,QUARTER))

 

PQTD1=

TOTALQTD([收入],DATEADD(‘日期表‘[日期],-1,QUARTER))

上年的年初至今

PYTD Previous Year to Date

PYTD =

CALCULATE([YTD],DATEADD(‘日期表‘[日期],-1,YEAR))

 

PYTD1= 

TOTALYTD([收入],DATEADD(‘日期表‘[日期],-1,YEAR))

 

灵活使用时间智能函数,上年的年初至今还有很多种写法,比如:

 

PYTD2= 

CALCULATE([YTD],SAMEPERIODLASTYEAR(‘日期表‘[日期]))

PYTD3= 

TOTALYTD([收入],SAMEPERIODLASTYEAR(‘日期表‘[日期]))

PYTD4=

CALCULATE([收入],DATESYTD(SAMEPERIODLASTYEAR(‘日期表‘[日期])))PYTD5= CALCULATE([收入],SAMEPERIODLASTYEAR(DATESYTD(‘日期表‘[日期])))

(从上面的这些度量值也可以看出,SAMEPERIODLASTYEAR的功能都可以用DATEADD来代替;DATESYTD与SAMEPERIODLASTYEAR完全可以互换位置)

技术图片

 

上面只是写出了常用的PXTD,可能有些个性的计算不止于此,比如要求计算上个月的QTD,掌握的上面的思路以后,你应该可以很轻松的写出来。

 

上年的本期至今PY XTD Previous Year Month/Quarter/Year to Date

上年的本年至今,其实通过PXTD的思路也能计算出来,只是因为上年的本期至今太常用了,就单独再介绍一下,只列出一种写法,其他写法也很简单,自己琢磨一下吧。

 

上年的月初至今

PY MTD Previous Year Month to Date

PY MTD =

CALCULATE([MTD],SAMEPERIODLASTYEAR(‘日期表‘[日期]))

 

上年的季初至今

PY QTD Previous Quarter Month to Date

PY QTD =

CALCULATE([QTD],SAMEPERIODLASTYEAR(‘日期表‘[日期]))

 

上年的年初至今

PY YTD Previous Year Month to Date

PY YTD =

CALCULATE([YTD],SAMEPERIODLASTYEAR(‘日期表‘[日期])

PY YTD其实和上面写的PYTD等价。

 

技术图片

 


差异比较

有了上面的这些本期、上期、上年的度量值,再计算与上期的差异,以及同比和环比就非常简单了。

与上个月的差异

MOM Month Over Month

MOM = IF([PMTD]<>BLANK(),[MTD]-[PMTD])

 

月环比

MOM % Month Over Month Percentage

MOM % =

DIVIDE([MOM],[PMTD])

技术图片

与上个季度的差异

QOQ Quarter Over Querter

QOQ =

IF([PQTD]<>BLANK(),[QTD]-[PQTD])

季度环比

QOQ % Quarter Over Querter Percentage

QOQ % =

DIVIDE([QOQ],[PQTD])

技术图片

与上年的差异

YOY Year Over Year

本年累计、本季累计以及本月累计与上年的同期比较,都比较常用,这里都列出来。

 

本月累计与上年同期的差异YOY MTD = IF([PY MTD]<>BLANK(),[MTD]-[PY MTD])

本季累计与上年同期的差异YOY QTD = IF([PY QTD]<>BLANK(),[QTD]-[PY QTD])

 

本年累计与上年的差异

YOY YTD = 
IF([PY YTD]<>BLANK(),[YTD]-[PY YTD])

同比增长
YOY % Year Over Year Percentage

 

本月累计的同比
YOY MTD% = DIVIDE([YOY MTD],[PY MTD])

本季累计的同比
YOY QTD % = DIVIDE([YOY QTD],[PY QTD])

本年累计的同比
YOY YTD % = DIVIDE([YOY YTD],[PY YTD])

 

技术图片


上面这些关于时间计算的度量值,以及上一篇MAT的计算(Power BI 度量值 | 滚动聚合),记住这些度量值的写法,基本可以满足大部分的正常需求,

技术图片

 

上述度量值的示例文件已分享在知识星球,需要的请自行下载练习。

 

以上是关于Power BI多个度量值进行动态分析的主要内容,如果未能解决你的问题,请参考以下文章

power bi度量值怎么写?有啥方法吗,求教程!

数据可视化之DAX篇(二十八)Power BI时间序列分析用到的度量值,一次全给你

数据可视化之DAX篇Power BI度量值不能作为坐标轴?这个解决思路送给你

Power BI-Power Pivot-客户最后下单时间

Power BI的RANKX()在新建度量值时出错,但在新建列时没问题?

数据可视化之powerBI基础(二十)Power BI度量值和新建表,有什么异同?