PowerBI实用技巧——案例十二 (根据所选日期动态滚动日期并累计求和显示)

分享一波Power BI求累计值的小技巧,在Dax的现有函数中,我们听到累计值就会想到EARLIER函数,但是最于刚入门,以及表结构复杂的小伙伴可能使用该函数会发现,计算出来的值怎么都不对,所以本篇文章就介绍如果使用EARLIER及以外的计算方法来实现累计求和的功能。

首先我们先了解EARLIER是什么?

基础概念:EARLIER 主要用于计算的列的上下文。(听到上下文,我们可以简单理解成针对每一列的遍历,在此处就是指逐行求值)

语法:EARLIER(<column>, <number>)

举例:现在按月进行累加计算,2月份的值等于1+2月,3月份的值等于1+2+3,依此类推

EARLIER 实现逻辑:

累计利润 =

CALCULATE(SUM('table'[sales]),

    FILTER(ALL('table'),'table'[month]<=EARLIER('table'[month])

            &&'table'[org]=EARLIER('table'[org])

        )

)

备注:新建列

实现效果:

如何使用其它方法实现累计求和功能?

 先看最终效果:

整体实现步骤
第一步:创建一张日期维度表,与所计算的指标表无关联关系
第二步:新增度量值,计算累计值

累计值 =

CALCULATE(SUM('指标表'[Original value]),

FILTER(ALL('日期表'[Year],'日期表'[Year&Month]),

'日期表'[Year&Month]<=MAX('日期表'[Year&Month])

&&'日期表'[Year]=MAX('日期表'[Year])

)

)

第三步:结合第一步,实现滚动效果,此处以滚动当年为例

rolling =

VAR SELECTEDYEARMONTH_END = SELECTEDVALUE('日期表'[Year&Month])

VAR SELECTEDYEARMONTH_BEGIN= LEFT(SELECTEDVALUE('日期表'[Year&Month]),4)&"01"

RETURN

IF(

AND(

LEFT(SELECTEDVALUE('切片日期表'[Year&Month]),6)<=SELECTEDYEARMONTH_END,

LEFT(SELECTEDVALUE('切片日期表'[Year&Month]),6)>=SELECTEDYEARMONTH_BEGIN

),

CALCULATE([累计值],TREATAS(VALUES('切片日期表'[Year&Month]),'日期表'[Year&Month])

)

)

备注:1、其中切片日期表与指标表无任何关联关系;2、表格内显示的年月列为切片日期表的年月列;3、年月切片器使用正常的日期维度表即可

实现模型逻辑:

  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值