学习 CALCULATE 函数(三)

file
继续学习CALCULATE函数,之前分享了利用FILTER进行内部筛选,那么还有什么用法呢?别急,咱们来继续。
file

涉及到分析数据这一块,那么占比就是一个我们无法绕过的问题,但是占比分为很多样,该如何进行各种层次的计算呢?FOLLOW ME!
file

这是我们头两期非常熟悉的样例数据,本期也还是用这个举例,可以看到我们的销售数据划分为品牌,和相对应的类别,我现在想知道每个产品数量的总体占比,该如何编写DAX代码呢?


数量=
SUM('表'[列])//这里我替换成了示例文件

这是我们熟悉了很久的基础代码,聚合。
file

首先缕清思路,求总体占比就是求出当下各品类的数量以及总体的情况进行除法运算。而在数据模型中,往往我们的数据是需要更新和受到外部筛选的影响,如何利用函数清除外部筛选条件呢,这里运用了ALL函数,编写如下代码:

总体 =
CALCULATE ( '表'[求和项], ALL ( '表' ) )
//这里需要自己替换数据

这是总体的,之后运用基础的聚合度量值与总体进行除法运算:

总体占比 =
DIVIDE ( [数量], [总体] )
//替换数据

例子如下图:
file

为了省事,写代码的思路是分步骤写的,这里我合并在一起了,说一下ALL在这里的作用,就是在内部的CALCULATE中屏蔽掉外部所有的筛选条件,内部重新设定上下文的结果。
file

当然,我不光想知道总体占比,我还想知道各个产品在各自所属的类别中是怎么个情况,来,继续:

修改上面的代码如下:

分类占比 =
CALCULATE ( '表'[求和项], ALL ( '表'[类别] ) )
//这里需要自己替换数据

结果如图:
file

很清楚的体现不同名称的销售额在其所属的类别中占比情况。
file

但是呢,咱的问题还没结束,还记得之前白茶建立的维度表么?没错,我现在想筛选几项,就这几项的总体占比情况,咋整?

有请ALLSELECTED登场!

编写如下代码:

筛选总体占比 =
CALCULATE ( '表'[求和项], ALLSELECTED ( '表'[类别] ) )
//这里需要自己替换数据

结果如下:

file
ALLSELECTED在这里的作用就是无论我们怎么筛选,都能保证将我们筛选出来的结果作为一个整体百分比呈现。

那么筛选之后,我还是想知道筛选之后的分类占比,咋整?和上面类似,修改刚才的代码如下:

筛选分类占比 =
CALCULATE ( '表'[求和项], ALLSELECTED ( '表'[类别] ) )
//这里需要自己替换数据

结果如图:

file
对比结果很明显,小伙伴们,GET到了没有?

这里做一下总结:

计算总体占比

DAX =
DIVIDE ( SUM ( '表'[求和项] ), CALCULATE ( SUM ( '表'[求和项] ), ALL ( '表' ) ) )

计算分类占比

DAX =
DIVIDE ( SUM ( '表'[求和项] ), CALCULATE ( SUM ( '表'[求和项] ), ALL ( '表'[项目] ) ) )

计算筛选总体占比

DAX =
DIVIDE ( SUM ( '表'[求和项] ), CALCULATE ( SUM ( '表'[求和项] ), ALLSELECTED ( '表' ) ) )

计算筛选分类占比

DAX =
DIVIDE (
    SUM ( '表'[求和项] ),
    CALCULATE ( SUM ( '表'[求和项] ), ALLSELECTED ( '表'[项目] ) )
)

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球[PowerBI丨需求圈])

这里是白茶,一个PowerBI的初学者。

下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。

请在PC端查看,有部分图片无法在移动端显示。
PowerBI丨白茶