FILTER
Filter函数是一个迭代函数,会对筛选表进行逐行扫描,是一个表函数,会返回一个表。
FILTER 函数 的第一个参数 表 ,必须是唯一值的表
COUNTROWS(FILTER(表,筛选条件))
CALCULATE(度量值,FILTER(表名,筛选条件1 && 条件2))
如果筛选条件是列 = 值 ,则不需要用filter,但是如果筛选条件是
列 = 度量值 、列 = 公式 、列 = 列 、度量值 = 度量值 、度量值 = 公式 、度量值 = 固定值,
则筛选条件必须使用FILTER来表达,否则CALCULATE 函数会报错。
VALUES
人工造表,该表为唯一值的表
新表 = VALUES(‘源表’[目标列])
filter总分2 = calculate([度量值总分],filter(values(‘成绩表’[学号]),[度量值总分]>250))
filter 内部 如果是使用度量值进行筛选,必须使用度量值本身,而不能是度量值的公式,因为只有度量值本身才具有筛选功能,否则需要在filter外面套上calculate函数。
新建列是行上下文,没有筛选功能
度量值天生具有筛选功能
想让行上下文实现筛选功能,只需要在外面套上一个calculate函数即可。
ALL
ALL函数的作用是清除返回,返回清除筛选后的表格或列。
商品表中的商品总数 = COUNTROWS(‘商品表’)
countrows(values(商品表[商品名]))或者:
销售表中的商品品种数量 = CALCULATE(COUNTROWS(‘商品表’),‘销售表’)
不能被筛选的商品总数 = COUNTROWS(ALL(‘商品表’))
ALL函数可以清除所有筛选条件,语法:
- ALL(表) 清除表格内所有筛选
- ALL(表[列]) 清除某一列的筛选,其他列的筛选仍然生效
ALL 函数在引用列的时候,必须与矩阵的行与列在同一张表上。
占比 = [销售表中的商品数量] / [不能被筛选的商品总数]
总销量 = SUM(‘销售表’[销售数量])
禁止筛选的总销量 = CALCULATE([总销量],ALL(‘销售表’))
每个商品的占比 = [总销量] / [禁止筛选的总量]
可以加切片器(外部筛选)
ALL 函数可以忽略所有内部筛选和外部筛选,当加入切片器的时候,占比总计会发生变化,如果想要占比总计是100%,则需要将ALL函数替换为ALLSELECTED函数
ALLSELECTED函数只忽略内部筛选,不能忽略外部筛选。
ALL([表]列)可以对某一列取消筛选,
ALLEXCEPT(表[列])可以保留所选列的筛选,其他的清除。
ALLNOBLANKROW函数是一个表函数,可以返回表中除空白行以外的所有行。
表 = ALLNOBLANKROW(‘子表’)
表 = ALLNOBLANKROW(‘子表’[姓名])