DAX——FILTER

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

2、FILTER(

,)

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(

,AND(,))

    FILTER(

,&)

    FILTER(FILTER(

,),)

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

    FILTER(

                  FILTER(

                               

,

                                ),

                   )

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

    FILTER(

                  FILTER(

                               

,

                                ),

                   )

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

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

你可能感兴趣的:(Power,BI,DAX,Power,BI,FILTER)