表函数的意义
在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可以的他也可以