美文网首页工具癖PowerBI专栏Power BI干货
ALLEXCEPT:帮你更灵活的累计求和

ALLEXCEPT:帮你更灵活的累计求和

作者: PowerBI星球 | 来源:发表于2019-05-10 22:59 被阅读91次

    累计求和问题,之前已经介绍过(有了这几个公式,你也可以快速搞定累计求和),主要是基于比较简单的情形,针对所有的数据进行累计求和。

    现实中的需求并不总是这么简单,稍微复杂一点的是按类别求累计,以帕累托分析为例,模拟数据如下,

    这次不是按全部产品进行累计求和,而是在每一个产品类别内部进行累计求和,进而计算出类别内的累计占比。

    根据之前学过的知识,其实也可以计算出来,这里直接给出另一种更简洁且性能更优的方式,新建列,

    累计销售额 类别 = CALCULATE(SUM('产品表'[销售额]),'产品表'[销售额]>=EARLIER('产品表'[销售额]),ALLEXCEPT('产品表','产品表'[产品类别]))

    结果如下,

    这里分类累计销售额的实现,主要是使用了ALLEXCEPT函数,该函数的含义是,删除其他所有的过滤器,而只保留它的参数列的过滤器,在这个例子中就是删除“产品类别”之外的其他所有的过滤器,因此可以正确计算出期望的结果。

    有了类别的累计数,计算累计占比也就比较简单了,

    累计占比 类别 = DIVIDE(        [累计销售额 类别],    CALCULATE(SUM('产品表'[销售额]),ALLEXCEPT('产品表','产品表'[产品类别])    ))

    这样就可以轻松进行产品类别内部的20/80分类或者ABC分类了。

    ALLEXCEPT保留的过滤器,可以只有一列,也可以保留多列,再看下面的例子,

    这是一张工资表,我们要计算出每名员工截至当月,本年累计的工资数。

    这里就是按照员工和年度来求累计,新建列的DAX如下,

    本年累计工资 = CALCULATE(SUM('工资表'[每月工资]),'工资表'[年度月份]<=EARLIER('工资表'[年度月份]),ALLEXCEPT('工资表','工资表'[年度],'工资表'[姓名]))

    ALLEXCEPT函数中有两个参数列,就是保留了这两个过滤器,结果如下,

    累计工资对每名员工分别求累计,并在新的一年重新开始计算,正是需要的结果。

    ALLEXCEPT函数是不是很好用呢?

    /推荐阅读/

    01连接表的几种DAX代码,一次全掌握!

    02利用这个控件,轻松制作带播放轴的条形图

    03利用ALL和ALLSELECTED灵活计算占比

    长按下方二维码或者点击“阅读原文”,和我一起精进PowerBI。

    相关文章

      网友评论

        本文标题:ALLEXCEPT:帮你更灵活的累计求和

        本文链接:https://www.haomeiwen.com/subject/ylxtaqtx.html