指定 DAX 表达式在求值过程中使用的交叉筛选的方向。
语法
CROSSFILTER ( <关系的左列>, <关系的右列>, <筛选类型> )
参数 | 属性 | 描述 |
关系的左列 | 用于建立关系的两列之一 | |
关系的右列 | 用于建立关系的两列之一 | |
筛选类型 | 关闭筛选使用 0,单向筛选使用 1,双向筛选使用 2;OneWay_RightFiltersLeft 使用 3,OneWay_LeftFiltersRight 使用 4;也可以直接用 None, OneWay, Both, OneWay_RightFiltersLeft, OneWay_LeftFiltersRight |
返回值
函数不返回任何值。仅在查询期间为所指示的关系设置交叉筛选方向。
备注
- 在一对一关系的情况下,设置为单向和双向并无任何区别。
- CROSSFILTER 只能用于支持将筛选器用作参数的函数中,例如:CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENINGBALANCEMONTH、OPENINGBALANCEQUARTER、OPENINGBALANCEYEAR、TOTALMTD、TOTALQTD 和 TOTALYTD 函数。
- CROSSFILTER 使用模型中的现有关系,通过位于关系两端的列标识关系。
- 在 CROSSFILTER 中,模型设置的关系的交叉筛选方向并不重要;也就是说,在模型中将关系设置为单向或双向筛选不会影响函数的使用。 CROSSFILTER 将覆盖任何现有的交叉筛选设置。
- 如果作为为参数的列不属于一个关系,或者参数属于不同的关系,则会返回错误。
- 如果 CALCULATE 表达式是嵌套的,并且多个 CALCULATE 表达式包含 CROSSFILTER 函数,那么最内层的 CROSSFILTER 就是在有冲突或歧义的情况下起作用的函数。
- 参数 OneWay_RightFiltersLeft 和 OneWay_LeftFiltersRight 可以用于多对多和一对多关系,但不能用于一对一关系。当交叉筛选类型 OneWay_RightFiltersLeft 或 OneWay_LeftFiltersRight 用于一对多关系类型时,它必须与一对多的关系传递方向一致。如果请求的方向与此相反,则返回错误。
- CROSSFILTER 只适用于活动关系,对非活动关系不生效,但目前对非活动关系的判断有瑕疵,详情可以访问下方的文章。
CROSSFILTER 不能在 DirectQuery 模式下创建计算列,所引用的表不支持行级别安全性,也就是说你不能对开启行级别安全性的表使用这个函数,USERELATIONSHIP 也存在同样的限制。可以考虑用 LOOKUPVALUE 或者 TREATAS 作为替代方案。
示例
以下度量值在计算期间激活 Sales 表和 DimProduct 表的双向关系:
= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(Sales[ProductKey], DimProduct[ProductKey] , Both) )
- MSDN 文档:CROSSFILTER
- DAX Guide:CROSSFILTER
说点什么