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

摘要:
本文将帮助您掌握时间智能功能。假设数据模型是订单表和相应的日期表。Revenue=SUM('订单'[销售])下的所有度量均基于此。MTD是从当前上下文月份的第一天到当前日期的累计收入日期表“[date]]”下面的所有其他计算都相同,“日期表”[date])YTD YearToDateYTD=CALCULATE([收入],

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([收入],'日期表'[日期])

 

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


上期的本期至今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完全可以互换位置)

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

 

上面只是写出了常用的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等价。

 

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

 


差异比较

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

与上个月的差异

MOM Month Over Month

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

 

月环比

MOM % Month Over Month Percentage

MOM % =

DIVIDE([MOM],[PMTD])

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

与上个季度的差异

QOQ Quarter Over Querter

QOQ =

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

季度环比

QOQ % Quarter Over Querter Percentage

QOQ % =

DIVIDE([QOQ],[PQTD])

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

与上年的差异

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])

 

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


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

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

 

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

免责声明:文章转载自《数据可视化之DAX篇(二十八)Power BI时间序列分析用到的度量值,一次全给你》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇管窥MVVMLight Command参数绑定和事件传递Python爬虫入门教程 51-100 Python3爬虫通过m3u8文件下载ts视频-Python爬虫6操作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL索引优化

一、单表 创建索引之前:type=ALL全表扫描,Extra里面的Using filesort(文件内部排序) 根据where后面的条件创建:CREATE INDEX idx_article_ccv ON article(category_id,comments,views);    可以看出type由ALL变成了range,但是Extra里面的Usi...

element 导航菜单 控制路由跳转

首先复制官网的例子,在这基础上再修改成我们想要的样子。 <el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect"> <el-menu-item index="1">处理中心</el...

ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题

问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候、在控制器无法使用 IS_AJAX 进行判断。而使用 jQuery 中的 ajax 是没有问题的。 在ThinkPHP中、有一个判断是 ajax 请求的常量 IS_AJAX; Ajax 请求常用的有两种情况:一种是原生 js 的 ajax 请求、一种是 jQuery 的 ajax...

15.ThinkPHP 中间件

从5.1.6+版本开始,正式引入中间件的支持。 中间件主要用于拦截或过滤应用的HTTP请求,并进行必要的业务处理 官方手册:https://www.kancloud.cn/manual/thinkphp5_1/564279 传统式用户过滤 通过继承基类来达到权限的判断。但在tp5.1.6之后可以使用中间件的方式更好 定义中间件 可以通过命令行指令快速生...

Oracle自增ID实现

首先,你要有一张表!   CREATE TABLE example(   ID Number(4) NOT NULL PRIMARY KEY,   NAME VARCHAR(25),   PHONE VARCHAR(10),   ADDRESS VARCHAR(50) );   然后,你需要一个自定义的sequence   CREATE SEQUENCE...

SQL Server 本地数据库登录不上 解决方法

sql本地数据库登录不了的话。先看看自己计算机 服务 SQL server  (MSSQLSERVER)  没有打开的话,请打开。 今天说的情景模式是  你误删了windows登录;禁用了sa登录;sa密码忘记了;或是你计算机名字被公司修改了,老的名字忘记了;又或是你用的别人的之前安装好的SQL数据库,终归,你本地数据库登录不了,用不了,拉了胯。   1...