常用表函数

表函数的意义

在dax基本知识里面,我们列举了9种函数,表函数就是其中一类

在写度量值的时候,只能有两种变量,一个是值,一个是表。

PBI中展示的只能是一个值,但是在生成值的过程中经常伴随使用表
比如:

    SUM ( Sales[Quantity] )

可以把 Sales[Quantity] 看作一个单列表,在把一个一行的单列表也可以看作值
在计算值的时候会使用大量的表,所以理解表的意义尤为重要

表有三种,一个是导入的表,一个是通过dax生成的表,一个是临时存储的表
利用这三个表进行各种筛选聚合后才能得到我们所需要的值

FILTER

filter相当于SQL里面的where,只有两个参数,但是第二个参数可以写无限长

    FILTER ( <table>, <condition> )

例如:

    FILTER (
        'Product',
        'Product'[Brand] = "Fabrikam" && RELATED ( 'Product'[Color] ) = "Red"
    )



也可以两列相比较:

    FILTER (
        'Product',
        'Product'[Unit Price] > 'Product'[Unit Cost] 
    )

注意:
    filter是迭代逐行计算,而不是聚合计算,到后面我们会明白行上下文和筛选上下文,这里面就是行上下文


filter的第一个参数是表,fiter的结果也是表,所以就可以嵌套使用
例如:

    FILTER (
        FILTER (
            'Product',
            'Product'[Unit Price] > 'Product'[Unit Cost] * 3
        ),
    'Product'[Brand] = "Fabrikam"
    )

我们还可以对表的某一列判断后筛选
例如:

    fliter(
        'Product',
         IF ( 'Product'[Color] = "Red", 1, 0 ) = 1
    )

总结:
    fliter就是sql里面的where,where可以的他也可以

这里仅说了这一个表函数的使用,因为表函数过于常用且复杂,后续我会单独对每一个常用表函数讲解,例如values distinct all allexpect

posted @ 2024-03-11 23:34  程闯  阅读(60)  评论(0)    收藏  举报