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

原创: PowerPivot工坊 | 宗琪      2019-11-14 12:16

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


前言:

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

课 题 背 景

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

01数据准备

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


为了方便理解和解读实验结果,我们准备了非常简单的数据。一种商品系列的销售额,该商品系列有三种颜色——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的嵌套使用


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的嵌套使用


[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的嵌套使用



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

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


客户案例

按行业 按部门

线上课程

课程直通 讲师介绍

官方微信

联系我们

北京

13811982114
agileex@agileex.com

北京市朝阳区博雅国际中心A座601

上海

13811982114
agileex@agileex.com

上海市静安区沪太路453号302室

Copyright © 2022 北京敏捷艾科数据技术有限公司agileex.com - 京ICP备16008845号-1