显示筛选器FILTER('花名册',SUM('成绩表'[分数])>250)在calculate外部坏境运算,由filter引入的行上下文中却筛选了模型,对人员进行聚合判断,与下方表达式效果一直
此表达式通过calculate对filter引入的行上下文转换为等效的筛选上下文,可以聚合求值判断,逻辑清晰我能明白,求大神讲解下第一个表达式的原理,多谢
显示筛选器FILTER('花名册',SUM('成绩表'[分数])>250)在calculate外部坏境运算,由filter引入的行上下文中却筛选了模型,对人员进行聚合判断,与下方表达式效果一直
此表达式通过calculate对filter引入的行上下文转换为等效的筛选上下文,可以聚合求值判断,逻辑清晰我能明白,求大神讲解下第一个表达式的原理,多谢
我也不知道我的理解对不对哈,欢迎大家指正,一起探讨。
我想的是外部筛选上下文先起作用,比如以第一张图第一行的“李四”为例,这时候外部筛选上下文是“李四”,然后到迭代函数Filter这里,此时一端表花名册筛选多端表成绩表中的姓名李四,所以Sum('成绩表'[分数])就是聚合李四分数的值,然后看聚合结果是否大于250分。符合条件就进行返回李四姓名,再进行Calculate求值。
第一张图的总计,我的理解是,没有外部筛选上下文起作用的结果。首先Filter('花名册',Sum('成绩表'[分数])>250)返回的表是花名册的全部值,因为Sum('成绩表'[分数])没有办法进行筛选,所以返回的是成绩表[分数]列的聚合,结果是2365肯定是大于250的,所以返回表是花名册的全部。再加上没有外部筛选上下文起作用,所以返回2365。
第二张图的总计,因为有Calculate将Sum('成绩表'[分数])转为筛选上下文,所以Filter('花名册',Calculate(Sum('成绩表'[分数]))>250)返回花名册中成绩分数聚合之后大于250的表。再加上没有外部筛选上下文起作用,所以返回1088。