首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Power BI 度量值 滚动聚合

上一篇文讲了累计聚合,这篇文章继续讲一下滚动聚合,比如常用的MAT计算,Moving Annual Total,滚动年度总计,即向前滚动12月的合计数。

滚动年度求和,也经常用于财务上的滚动预算,看完这篇文章,你以后会很轻松的计算出需要的数据了。

模拟一份2018年1月至2019年7月的订单数据,

利用CALENDARAUTO生成一份日期表,按日期列建立关系,那么如何计算向前滚动12月的销售额合计呢?

其实很简单,新建度量值,

MAT=

IF(MIN('日期表'[日期])

CALCULATE(

[收入],

DATESINPERIOD(

'日期表'[日期],

LASTDATE('日期表'[日期]),-1,YEAR)

)

)

这里直接用了上篇文章的思路,先判断最大订单日期,这样就可以避免最新订单日期之后的计算。

这个度量值的关键是DATESINPERIOD函数的使用,它用来返回移动一定间隔的时间段,在上面的度量值中,正好利用它返回向前滚动一整年的日期。

关于这个时间智能函数的用法,可以参考函数卡片:

结果如下:

因为是从2018年1月才开始有数据,所以2018年12月之前的滚动求和都是不满12个月的数据。如果要求不满12月,就不要显示数据,从达到12个月以后再开始计算,可以优化一下这个度量值,

MAT 优化=

IF(MIN('日期表'[日期])

CALCULATE(

IF(

COUNTROWS(

FILTER(VALUES('日期表'[月份]),[收入]>0)

)=12,

[收入]),

DATESINPERIOD(

'日期表'[日期],

LASTDATE('日期表'[日期]),-1,YEAR)

)

)

结果如下:

除了滚动求和,求移动平均同样是很常见的需求,求往前推一年的平均数,只要把上面度量值中,CALCULATE的第一个参数,改成使用AVERAGE来聚合。

在实际计算时,求往前推一年的平均值并不是必须要求满12个月才开始计算,所以直接使用上面第一个度量值的写法,

滚动平均 年度=

IF(MIN('日期表'[日期])

CALCULATE(

AVERAGE('订单表'[销售额]),

DATESINPERIOD(

'日期表'[日期],

LASTDATE('日期表'[日期]),-1,YEAR)

)

)

上面的例子都是按照一年计算滚动粒度的,如果你需要其他数量和粒度的计算,正常情况下更改一下DATESINPERIOD函数的参数就行了。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190822A040EC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券