隐藏

FILTER-POWER BI 筛选函数

发布:2024/9/25 20:55:34作者:管理员 来源:本站 浏览次数:51

FILTER返回一个表,用于表示另一个表或表达式


的子集


语法


FILTER(表,FILTEREXPRESSION)


参数1-表:要筛选的表,还可以是生成表的表达式


参数2-FILTEREXPRESSION指筛选条件


FILTER函数返回的是一张表,不能单独使用,需要与其他函数结合使用


CACLULATE(…,FILTER())是DAX中最常见的组合函数



1、为何使用FILTER


在CALCULATE一文里我们展示过FILTER函数,度量值


1和度量值2结果完全相同:


度量值1:产品数量华为的手机 = CALCULATE('产品明细表'[产品数量],'产品明细表'[品牌名称]="华为",'产品明细表'[产品类别]="手机")


度量值2:多条件FILTER与 = CALCULATE('产品明细表'[产品数量],FILTER('产品明细表','产品明细表'[品牌名称]="华为"&&'产品明细表'[产品类别]="手机"))


度量值3:多条件FILTER或 = CALCULATE('产品明细表'[产品数量],FILTER('产品明细表','产品明细表'[品牌名称]="华为"||'产品明细表'[产品类别]="手机"))


(DAX函数,多条件‘与’用‘&&’;多条件‘或’用‘||')


貌似直接筛选(布尔表达式


)更简洁,但如果要做更复杂的运算,通过简单的布尔表达式根本无法实现,必须借助FILTER进行更复杂的筛选



2、什么时候使用FILTER函数


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


‘表’[列] = 固定值 或 ‘表’[列] <> 固定值


‘表’[列] >= 固定值 或 ‘表’[列] <= 固定值


‘表’[列] > 固定值 或 ‘表’[列] < 固定值


但是遇到如下情况,就要使用Filter函数,返回的是【表】


[列]=[度量值]、 [列]=公式、[列]=[列]


[度量值]=[度量值]、 [度量值]=公式、[度量值]=固定值



案例


3、步骤1-POWER BI导入6个表格并建模




4、任务1-要筛选销售额大于千万的产品


筛选条件是度量值大于固定值,必须要使用FILTER进行条件筛选


度量值1:销售总额 = SUM('销售明细表'[销售金额])


度量值2:销售金额大于千万产品 = CALCULATE('销售明细表'[销售总额],FILTER('产品明细表','销售明细表'[销售总额]>=10000000))





5、任务2-筛选销售额大于3000万的城市


度量值3:销售额大于3000万的城市 = CALCULATE('销售明细表'[销售总额],FILTER('门店-城市','销售明细表'[销售总额]>30000000))




6、任务3-将任务2中矩阵表‘行标签’改为‘产品名称





7、任务3中,为何明细和总计数不相等?


上面数字的意思是:任务2中,销售额大于3000万的城市只有南京;任务3中,销售额大于3000万的城市中,而且产品又大于3000万的只有华为手机(南京的华为手机销售额大于3000万,但南京的其他产品销售额没有显示在明细中)


为什么多了一个产品的筛选条件?这就是内外上下文共同决定


的筛选结果:


内上下文,DAX函数筛选出销售额大于3000万的城市;


外上下文,矩阵表的行标签筛选出销售额大于3000万的产品


这就是PowerBI中数据模型

的特点,在这个表格中,每个数据都是独立运算的,和其他数字没有关系。