DAX——FILTER

本文介绍了DAX中FILTER函数的用法,它接收表格并按条件筛选行。理论上对每行迭代判断,实际有内置优化,会对涉及列的值去重。条件越多筛选越细,可嵌套使用,嵌套时从最里层开始计算,合理调整计算顺序能提高DAX计算效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、FILTER函数接收一张表格并返回一张表格,返回的表格每列与原表格一致,但是会对行进行条件筛选

2、FILTER(<table>,<condition>)

3、理论上可以这么理解FILTER函数:FILTER函数对表格的每一行进行迭代,每一行都与conditon里的条件进行比较,返回布尔值(TRUE/FALSE),TRUE则保留(返回)该行,FALSE则删除(跳过)该行。类似于python:

        for row in table:

            if row = condition:

                return row

            else:

                pass

4、实际上DAX对于FILTER的内置优化是:将condition里涉及的每列的值以行为单位去重,保留唯一值(类似于选中excel里的A:D列,再进行删除重复值,此时表格里的每一行都是唯一的),只对这些唯一值(行)进行condition条件判断

5、condition条件越多,筛选的颗粒度越细小

6、FILTER可以嵌套FILTER,虽然FILTER默认只接受一个条件参数,但是可以通过&链接符或AND函数来组合筛选条件,以下查询语句返回相同的结果:

    FILTER(<table>,AND(<condition1>,<condition2>))

    FILTER(<table>,<condition1>&<condition2>)

    FILTER(FILTER(<table>,<condition1>),<condition2>)

7、嵌套的FILTER语句,计算是从最里面的FILTER开始,因此,更改条件语序也会相应改变计算顺序,以下面两个语句为例:

    FILTER(

                  FILTER(

                                <table>,

                                <condition1>),

                   <condition2>)

    先计算(执行筛选)condition1,后计算(执行筛选)condition2

    FILTER(

                  FILTER(

                                <table>,

                                <condition2>),

                   <condition1>)

    先计算(执行筛选)condition2,后计算(执行筛选)condition1

8、合理调整计算(执行筛选)顺序,可以提高dax的计算效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值