工坊实验室 | CALCULATE的嵌套使用

工坊实验室 | CALCULATE的嵌套使用_第1张图片

前言:

研究DAX函数不能抱着轻视它的心态,DAX简约而不简单,它的设计使得用户上手速度很快,但是要深入掌握一种函数的原理还是需要一定的耐心,投入相当的精力。


课 题 背 景


有时在表达式中我们会嵌套使用多个Calculate函数,多层条件之间的相互作用让很多小伙伴感到困惑,多层条件的叠加结果是取交集呢还是取并集呢,今天我们就来研究一下


01数据准备


工坊实验室 | CALCULATE的嵌套使用_第2张图片

为了方便理解和解读实验结果,我们准备了非常简单的数据。一种商品系列的销售额,该商品系列有三种颜色——Red、Yellow、Blue,三种颜色分别对应一个销售额。

02尝试建模


我们构造如下几个度量值:

红色系列的销售额:

Sales of Red =

CALCULATE ( SUM( Sales[Sales] ), 'Sales'[Color]= "Red" )

红黄系列的销售合计:

Sales of Red andYellow =

CALCULATE (

SUM ( Sales[Sales] ),

'Sales'[Color] = "Red"

||'Sales'[Color] = "Yellow"

)

红蓝系列的销售合计:

Sales of Red and Blue = 

CALCULATE (

SUM ( Sales[Sales] ),

'Sales'[Color] = "Red"

||'Sales'[Color] = "Blue"

)


以上三个表达式的形式是我们在平时的建模工作中经常用到的形式。三个表达式在可视化界面的结果如下所示:


工坊实验室 | CALCULATE的嵌套使用_第3张图片

03深化建模


我们构造两种嵌套的场景:

两个Calculate条件嵌套使用,内层选择红黄系列,外层选择红蓝系列

Sales of Red andYellow ?? =

CALCULATE (

CALCULATE (

SUM( Sales[Sales] ),

'Sales'[Color]= "Red"

|| 'Sales'[Color]= "Yellow"

),

'Sales'[Color] = "Red"

||'Sales'[Color] = "Blue"

)


内层表达式使用Keepfilters函数的嵌套,仍然是内层选择红黄系列,外层选择红蓝系列

Sales of Red !! =

CALCULATE (

CALCULATE (

SUM( Sales[Sales] ),

KEEPFILTERS( 'Sales'[Color] = "Red"|| 'Sales'[Color]= "Yellow" )

),

'Sales'[Color] = "Red"

||'Sales'[Color] = "Blue"

)


两个表达式的结果如下


工坊实验室 | CALCULATE的嵌套使用_第4张图片

[Sales of Red and Yellow??]表达式完全采用了内层的筛选结果,这里需要提一下Calculate内外层筛选表达式的作用顺序,外层首先起作用,然后是内层。这里内层和外层作用于同一列且条件冲突,于是后起作用的内层筛选将原条件覆盖了。

[Sales of Red !!]表达式采用了内层和外层取交集“红色系列”的结果,原因是外层筛选首先起作用,筛选了红蓝系列,内层由于Keepfilters函数的作用,不是直接覆盖原条件,而是取内外层条件的交集,最终得到红色系列产品销售额。


04总结


Calculate函数在嵌套使用的时候作用顺序是由最外层到最内层,如果内层筛选条件有与外层筛选条件作用于同一列且冲突的,则内层筛选覆盖外层筛选条件;

Keepfilters函数改变Calculate的筛选条件作用机制,不是直接覆盖原筛选上下文,而是基于原来的上下文添加新的条件,产生的结果是多个条件取交集。

本期内容就是这些,小伙伴们下期再见!


* PowerPivot工坊原创文章,转载请注明出处!



延伸阅读:

重点函数 | KEEPFILTERS用法介绍

带你了解DAX筛选转换原理

重点函数 | ISCROSSFILTERED用法介绍

有关SUMMARIZE函数的简单查询用法

重点函数 | 表函数与DAX查询



如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”。

工坊实验室 | CALCULATE的嵌套使用_第5张图片

长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯,欢迎小伙伴儿们转发分享~

工坊实验室 | CALCULATE的嵌套使用_第6张图片

你可能感兴趣的:(工坊实验室 | CALCULATE的嵌套使用)