05.高级筛选器Filter与Values人工造表

返回一个表,用于表示另一个表或表达式的子集,不能单独使用
Filter函数对筛选的表进行横向的逐行扫描,这样的函数叫迭代函数。
Countrows(Filter(表,筛选条件))
Calculate(表达式(度量值),Filter(‘表名’, 筛选条件))

一、效果相同,为什么使用Filter函数?

例:计算一班男性的成绩和

总分 = SUM(‘成绩表’[分数])
1班男生a = CALCULATE([总分],’花名册’[班级]=”1班”,’花名册’[性别]=”男”)
1班男生b = CALCULATE([总分],FILTER(‘花名册’,’花名册’[班级]=”1班” && ‘花名册’[性别]=”男”))
(1班男生a 和 1班男生b 两个方法完全相同)
image.pngimage.png

image.pngimage.png二、什么时候使用Filter函数 - 对度量值进行条件筛选

*当度量值需要设定条件筛选时候,必须要用filter
*fileter必须是唯一值的表

经典语句: Calculate([度量值],Filter(Values(‘表’[列名]),…))

在Calculate函数中的直接筛选条件里,我们只能输入:
image.png

举例:总分大于250分的学生一共考了多少分?

filter总分1 = CALCULATE([总分],FILTER(‘花名册’,[总分]>250))
filter总分2 = CALCULATE([总分],FILTER(‘成绩表’,[总分]>250)) 错误

*fileter必须是唯一值的表

image.pngimage.png

06.被翻译耽误的上下文

1.度量值天生具有筛选功能
2.新建列是行上下文,行上下文没有筛选功能
3.想让行上下文实现筛选功能就要在外面套一个Calculate
image.png

01.Filter与上下文

filter总分1 = CALCULATE([总分],FILTER(‘花名册’,[总分]>250)) # 正确
filter总分2 = CALCULATE([总分],FILTER(‘花名册’,SUM(‘成绩表’[分数])>250)) # 错误 filter总分3 = CALCULATE([总分],FILTER(‘花名册’,CALCULATE(SUM(‘成绩表’[分数]))>250))
image.png 所谓的筛选上下文,就是度量值,度量值自带天然的Calculate函数 没有筛选功能的新建列就是行上下文,如果行上下文想转成筛选上下文,它是不会自动转的,你要手动套上一个Calculate函数

SUM(‘成绩表’[分数]) 不是度量值,【总分】才是度量值。

07.ALL函数、Allexcept函数、ALLSELECTED函数

一、ALL函数【作用:清除筛选,返回:清除筛选后的表格或列】

image.png










  1. <br /> <br /> <br /> <br /> <br />