Calculate函数是PowerBI 中非常重要的一个函数,其作用是修改上下文并进行计算,包括执行行上下文转换,

calculate函数利用其内部的参数修改已经存在的上下文,这里涉及到了上下文出现的前后顺序及相互作用的情况,所以理解calculate函数的执行顺序及上下文是如何交互的就变得非常重要。

关于calculate函数的执行顺序的详情情况可以看这里,本篇文章我们通过一个简单的示例看看calculate函数内外的筛选器是如何交互的?

以下是关于calculate函数内外上下文交互的两个准则:

对于Calculate函数中的每个筛选器参数,当筛选参数未嵌套在 KEEPFILTERS 函数中时,对于上下文的修改会有两种不同的结果:

准则一:如果列(或表)不在筛选器上下文中,则将向筛选器上下文添加新的筛选器来计算表达式。

准则二:如果列(或表)已在筛选器上下文中,则新筛选器将覆盖现有筛选器以计算表达式。

两张很简单的表:学生表及成绩表,学生表记录了学生的信息,包括姓名,性别及地区,成绩表记录了两个学期的学生成绩。

首先我们看看度量值Fliter.Score是如何与视觉对象table中的上下文时如何交互的?

Filter.Score = CALCULATE ( SUM ( '成绩表'[成绩] ), FILTER ( '学生表', '学生表'[城市] = "北京" ) )

我们将学生表中的地区拖入视觉对象中,如下:

当我们将度量值Filter.Score拖入视觉对象中时,PowerBI内部的处理过程,我们可以想象下:

1. 迭代 PowerBI迭代城市这一列
先从值“上海”处迭代,那么此时在“城市”这一列的筛选器为“上海“,此时为行上下文哦,后面会变成筛选器:

2. 执行calculate函数:

2.1 执行行上下文转换,使行上下文"上海"变成筛选上下文,此时"上海"会通过关系筛选成绩表中对应的记录,那么此时在“城市”这一列的筛选器为“上海“:

2.2 执行calculate函数时先计算筛选器参数Filter, Filter函数会筛选出“北京"的学生记录,如下:

那么此时在“城市”这一列上的筛选器就为:北京

2.3 反过头来,calculate结合函数其内外的筛选器,生成新的上下文

此时,在列"城市"中有两个筛选器,依照先后顺序分别为:北京 和 上海,不是同一个筛选器,所以calculate函数会取这两个筛选器的交集,交集为空吗,对吧? 2.4 计算Sum函数,其结果为空

3. 依次执行上述过程,直至遍历完所有的城市,生成的结果如下:

由于,PowerBI会自动隐藏那些值为空的空行,所以你在PowerBI中看到的结果应该为:

上述过程正好印证了前面提到的两条准则:

准则一:如果列(或表)不在筛选器上下文中,则将向筛选器上下文添加新的筛选器来计算表达式。

准则二:如果列(或表)已在筛选器上下文中,则新筛选器将覆盖现有筛选器以计算表达式。

以上就是本人对于Calculate函数内外筛选器交互过程的理解

我是BISeven,欢迎与我进行交流

Calculate函数内外筛选器的交互过程相关推荐

  1. 在加入ALL函数后,CALCULATE函数内外筛选器的交互过程

    在上篇文章中,我们提到了calculate函数修改上下文的两个准则: 准则一:如果列(或表)不在筛选器上下文中,则将向筛选器上下文添加新的筛选器来计算表达式 准则二:如果列(或表)已在筛选器上下文中, ...

  2. CALCULATE的筛选器参数多种写法

    摘要 CALCULATE 筛选器参数一个迭代器. 找到合适的粒度对控制结果和性能至关重要.本文描述了创建复杂DAX筛选器的可用选项 注意: 本文是描述的是参数为表筛选器时的情景,不考虑那些Direct ...

  3. 【探索PowerShell 】【十二】筛选器 - Filters

    筛选器是函数的一种特殊形式. 定义筛选器:  Filter(关键字) 筛选器名 (参数) {代码} 与定义函数不同的是,函数使用"$input"变量来从管道符中获取信息,而筛选器使 ...

  4. CALCULATE函数的运算顺序-第一弹

    CALCULATE函数应该算是DAX语言中用的最广,最神奇,也最容易理解出错的一个函数.它具有重新设定筛选上下文,并且将行上下文转换为筛选上下文的能力. 在DAX函数中,绝大多数函数的执行顺序都是从左 ...

  5. 《power BI》 高级筛选器Filter 和Values人工造表 ALL 函数

    FILTER Filter函数是一个迭代函数,会对筛选表进行逐行扫描,是一个表函数,会返回一个表. FILTER 函数 的第一个参数 表 ,必须是唯一值的表 COUNTROWS(FILTER(表,筛选 ...

  6. PowerBI基础——第二天 最强大的引擎calculate、筛选表calculatetable、高级筛选器filter

    简体中文版的PowerBI官网:数据可视化 | Microsoft Power BI 在Analysis Services.Power BI 以及 Excel 中的 Power Pivot中使用的公式 ...

  7. desc excel 公式_Excel小技巧之Power Pivot Generate函数、高级DAX函数与常用筛选器函数...

    一.使用Generate函数创建信息叠加表 [目标:将姓名与月份组合,生成每个月份均有对应姓名对应的表格][基本思路:pivot中创建度量值,利用DAX函数创建链接回表后在EXCEL释放]       ...

  8. openswan中ISAKMP交互过程关键函数接口

    1. ISAKMP交互过程中关键函数接口 下面分别说明不同的阶段和模式下的函数接口以及对应的报文. 2. 第一阶段(Phase I)主模式函数接口 发送端 响应端 main_outI1 主模式第一包 ...

  9. 分页解决方案及IK分词器安装使用、分片交互过程

    一 分页 1.导入数据 DELETE us POST /_bulk { "create": { "_index": "us", " ...

最新文章

  1. php编写函数6,编写自己的PHP扩展函数
  2. python交互式程序设计导论第二周_沧州学堂云Python 交互式程序设计导论搜题公众号...
  3. 关闭虚拟机提示“正在处理另一个任务”解决方法
  4. [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  5. 从0到1,数据治理一周年大纪实
  6. iis下屏蔽php notice,apache、iis规则屏蔽拦截蜘蛛抓取
  7. python通讯录管理系统
  8. iOS依赖注入框架系列(二):设置Typhoon
  9. 个人电脑php漏洞怎么修复,PHP版 6.0 漏洞 要怎么修复
  10. Wallpaper Engine壁纸推荐,让程序猿的桌面优美起来
  11. YII2调用天翼云OOS 对象存储服务
  12. 0.9寸oled屏幕驱动程序
  13. mac上传文件到阿里云ECS及scp命令使用
  14. 已知鸡和兔的总数量n,总脚数为m。输入n和m,依次输出鸡和兔的数目。如果无解,输出“no answer”。 将下面的代码填写完整。
  15. 假设检验:一个总体参数的检验、总体方差检验、两个总体参数的检验和两个总体方差的检验
  16. 在阿里(05)2022.04.19 周年啦
  17. 六度分离理论、150法则与弱链接 (转载)
  18. appium环境搭建-android自动化
  19. 简单的思维导图怎么画
  20. 1.HFSS同轴线(内径3mm,外径7mm)转矩形波导(BJ100)3D模型

热门文章

  1. Python中end作用
  2. 电脑打不开u盘,总显示“本次操作由于这台计算机的限制而被取消,请与您的系统管理员联系”
  3. matlab 产生均值为5,如何用matlab 产生 均值为0,方差为5的高斯噪声
  4. Python的egg包(Linux和Windows)
  5. 伺服电机选型计算pdf_机器设计中伺服电机及驱动器的选型(PDF),文末附下载地址...
  6. KT6368A蓝牙芯片开发注意事项以及问题集锦--长期更新
  7. 备战秋招——记录自己学习的第六天(Django项目难点拆分——层级评论数据结构实现)
  8. Python网络与并发编程 10 threading模块线程锁
  9. 合天CTF-签到般的包含
  10. JMeter 配置元件-CSV Data Set Config 参数化配置