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 度量值 | 滚动聚合),记住这些度量值的写法,基本可以满足大部分的正常需求,

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

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

  1. 数据可视化之DAX篇(一)Power BI时间智能函数如何处理2月29日的?

    https://zhuanlan.zhihu.com/p/109964336 ​今年是闰年,有星友问我,在Power BI中,2月29日的上年同期是怎么计算的? 这是个好问题,正好梳理一下,Power ...

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

    https://zhuanlan.zhihu.com/p/79522456 对于PowerBI使用者而言,经常碰到的一个问题是,想把度量值放到坐标轴上,却发现无法实现.尤其是初学者,更是习惯性的想这么 ...

  3. 数据可视化之DAX篇(十七)Power BI表格总计行错误的终极解决方案

    https://zhuanlan.zhihu.com/p/68183990 我在知识星球收到的问题中,关于表格和矩阵(以下统称表格)总计行错误算是常见的问题之一了,不少初学者甚为不解,在Excel透视 ...

  4. 数据可视化之分析篇(十)Power BI应用:如何计算在职员工数量?

    ​https://zhuanlan.zhihu.com/p/128652582 经常碰到的一类问题是,如何根据起止日期来计算某个时间点的数量,比如: 已知合同的生效日期和到期日期,特定日期的有效合同有 ...

  5. 数据可视化之DAX篇(十八)收藏 | DAX代码格式指南

    https://zhuanlan.zhihu.com/p/64422599 为什么要进行格式化? DAX 是一种函数式语言,正如我们已经学习的或者看到的,DAX 代码中总有一些函数带有几个参数,而参数 ...

  6. 数据可视化之DAX篇(七) Power BI中用DAX生成的表如何添加索引列?

    ​https://zhuanlan.zhihu.com/p/74732578 来源于知识星球中一个星友的问题,使用DAX在PowerBI中新建了一个表,如何为这个表添加索引列呢? 假如数据模型中只有一 ...

  7. 数据可视化之DAX篇(十二)掌握时间智能函数,同比环比各种比,轻松搞定!

    https://zhuanlan.zhihu.com/p/55841964 时间可以说是数据分析中最常用的独立变量,工作中也常常会遇到对时间数据的对比分析.假设要计算上年同期的销量,在PowerBI中 ...

  8. 数据可视化之DAX篇(十六)如何快速理解一个复杂的DAX?这个方法告诉你

    https://zhuanlan.zhihu.com/p/64422393 经常有朋友提出一个问题,然后我给出一个DAX之后,TA又不是很理解,反复多次沟通才能把一个表达式讲清楚.或者TA自己写了一个 ...

  9. 数据可视化之PowerQuery篇(十七)Power BI数据分析应用:水平分析法

    https://zhuanlan.zhihu.com/p/103264851 ​本文为星球嘉宾"海艳"的PowerBI数据分析工作实践系列分享之一,她深入浅出的介绍了PowerBI ...

随机推荐

  1. <VCC笔记> 溢出与unchecked

    在程序运算或者数据转换的时候,由于各种数据类型有各自的范围,运算的时候,其结果如果超出这个范围,就被称之为溢出.熟悉C#的同志们应该了解用来解决溢出(Overflow)问题的checked,unche ...

  2. [51nod 1847]奇怪的数学题

    [ 51nod 1847 ]奇怪的数学题 题目   点这里看题目. 分析   是挺奇怪的......   以下定义质数集合为\(P\),\(p_i\)为第\(i\)个质数.   定义\(mp(x)\) ...

  3. Tensorflow从0到1(4)之神经网络

    一维数据集上的神经网络 # 1 引入包,创建会话 import tensorflow as tf import numpy as np sess = tf.Session() # 2 初始化数据 da ...

  4. 最新 iOS 框架整体梳理(三)

    这一篇得把介绍框架这个系列终结了,不能超过三篇了,不然太长了..... 还是老规矩,前面两篇的机票在下方: 最新 iOS 框架整体梳理(一) 最新 iOS 框架整体梳理(二) Part - 3     ...

  5. [CentOS 7]挂载ntfs格式U盘

    在我们将U盘插入装有CentOS的系统时,经常会出现如图所示的错误提示.这是因为linux系统并不能兼容NTFS的文件系统.其解决方法如下(建议先进入root模式): 1.首先下载"ntfs ...

  6. el-checkbox实现全选与单选

    实现目的:实现全选与多选,点击确定的时候获取每个值的id传给后台 1.HTML <el-checkbox v-model="checkAll" @change="h ...

  7. Python在Linux下编译安装

    [准备环境] Linux centos [前言] 1 linux下默认带Python,带的是2.7版本的 ,如果需要升级版本,需要把系统的自带的Python改名或者卸载,再次安装你所需要的Python ...

  8. oracle不足位数补零的实现sql语句

    select rpad('AAA',5,'0') from dual; 这样就可以了 [注意] 1.'AAA'为待补字符:5表示补齐后的总字符长度:0表示不足时补什么字符 2.rpad是右侧补0,左侧 ...

  9. Java开发中的23种设计模式详解(收藏-转)

    设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...

  10. ImageLoader在ViewPage中的使用

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...