码迷,mamicode.com
首页 > 其他好文 > 详细

数据可视化之DAX篇(二十五)PowerBI常用的度量值:累计至今

时间:2020-05-03 13:03:51      阅读:363      评论:0      收藏:0      [点我收藏+]

标签:get   wechat   ref   ext   制作   class   hat   actual   简单   

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

经常碰到本年至今、本月至今的数据计算,其实还有一类计算是,从历史最早日期至今的累计计算,比如从开业到现在总共卖出了多少件商品,累计实现了多少销售额等。

本年累计称为YTD,历史至今的累计是不是可以称为HTD呢:) ;这样的时间段很可能是跨年的,所以时间智能函数并不适用,不过不用时间智能函数依然可以很简单的进行计算。

模拟数据如下:

 

技术图片

只是计算一个整体累计销售额很简单,我们想要计算的是从最初到任意一个日期的累计销售额,为了能一次计算出各种粒度的历史至今,可以先构造一个日期表并建立关系。(参考:玩PowerBI必备的日期表制作方式汇总

然后写个度量值,

历史至今 累计收入 =

CALCULATE(

SUM(‘订单表‘[销售额]),

FILTER(

ALL(‘日期表‘),

‘日期表‘[日期]<=MAX(‘日期表‘[日期])))

 

然后在矩阵中看看结果,

 

技术图片

 

结果正是历史所有订单的累计销售额,这个度量值的关键是用MAX函数获取当前上下文的日期,然后返回小于等于当前日期的所有销售额的合计。

这个度量值写法有一个问题,就是它把日期表中所有的日期都计算了一遍,其实大于最后一个订单日期的无须计算,因为结果并不会发生变化。

为了解决这个问题,可以先把最后一个订单日期找出来:

订单最大日期 = MAXX(ALL(‘订单表‘),‘订单表‘[订单日期])

然后在历史累计中增加个判断条件,

历史至今 累计收入 优化 =

IF(
MIN(‘日期表‘[日期])<=[订单最大日期],
CALCULATE(
SUM(‘订单表‘[销售额]),
FILTER(
ALL(‘日期表‘),
‘日期表‘[日期]<=MAX(‘日期表‘[日期]))))

再来看一下结果,

 

技术图片

 

正是期望的效果。

历史至今的聚合计算,不一定只是累计求和,还可以找出历史上最大的订单金额,或者历史至今的平均订单金额,这些情况只需要改一下聚合函数就行了,比如平均订单金额就是把SUM改成AVERAGE,

历史至今 平均订单订单 =

IF(
MIN(‘日期表‘[日期])<=[订单最大日期],
CALCULATE(
AVERAGE(‘订单表‘[销售额]),
FILTER(
ALL(‘日期表‘),
‘日期表‘[日期]<=MAX(‘日期表‘[日期]))))

最大最小订单同理,不再一一列出,结果如下:

 

技术图片

 

数据可视化之DAX篇(二十五)PowerBI常用的度量值:累计至今

标签:get   wechat   ref   ext   制作   class   hat   actual   简单   

原文地址:https://www.cnblogs.com/qiu-hua/p/12821272.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!