CROSSFILTER

适用于:计算列计算表Measure视觉计算

指定要在计算中用于两列之间的关系的交叉筛选方向。

语法

CROSSFILTER(<columnName1>, <columnName2>, <direction>)

参数

术语 定义
columnName1 使用标准 DAX 语法 and 完全限定的现有列的名称,通常表示要使用的关系的多端;if 参数按相反顺序给出,函数会在使用参数之前交换参数。 此参数不能是表达式。
columnName2 使用标准 DAX 语法 and 完全限定的现有列的名称,通常表示要使用的关系的一侧 or 查找端;if 参数按相反顺序给出,函数会在使用参数之前交换参数。 此参数不能是表达式。
Direction 要使用的交叉filter 方向。 必须是下列项之一:

None - 此关系不会发生交叉筛选。

Both - Filters 另一侧 filters。

OneWay - Filters 一侧 or 另一端 filter 关系查找端。 此选项不能与一对一关系一起使用。 不要对多对多关系使用此选项,因为不清楚哪一方是查找端;请改用OneWay_LeftFiltersRight or OneWay_RightFiltersLeft。

OneWay_LeftFiltersRight - FilterscolumnName1filtercolumnName2一侧。 此选项不能与一对一 or 多对一关系一起使用。

OneWay_RightFiltersLeft - FilterscolumnName2filtercolumnName1一侧。 此选项不能与一对一 or 多对一关系一起使用。

返回 value

该函数不返回 value;对于查询 duration,该函数仅设置所指示关系的交叉筛选方向。

言论

  • 对于 1:1 关系,两个方向 and 之间没有区别。

  • CROSSFILTER 只能在采用 filter 作为参数的函数中使用,例如:CALCULATE、CALCULATETABLE、CLOSINGBALANCEMONTH、CLOSINGBALANCEQUARTER、CLOSINGBALANCEYEAR、OPENINGBALANCEMONTH、OPENINGBALANCEQUARTER、OPENINGBALANCEYEAR、TOTALMTD、TOTALQTDandTOTALYTD 函数。

  • CROSSFILTER 使用模型中的现有关系,通过它们的终点列标识关系。

  • 在 CROSSFILTER中,关系的交叉筛选设置 not 重要;也就是说,关系是否设置为 filter 一个,or 模型中的两个方向都会 not 影响函数的使用。 CROSSFILTER 将替代任何现有的交叉筛选设置。

  • if 作为参数命名的任何列 notor 参数属于不同关系的关系的一部分,将返回 error。

  • If CALCULATE 表达式是嵌套的,and 多个 CALCULATE 表达式 containsCROSSFILTER 函数,那么最内部的 CROSSFILTER 是在冲突 or 歧义的情况下占上风的表达式。

  • 在计算列 or 行级别安全性 (RLS) 规则中使用时,not 支持在 DirectQuery 模式下使用此函数。

在以下模型关系图中,DimProduct and DimDate 都与 FactInternetSales 有一个方向关系。

CROSSFILTER_Examp_DiagView

默认情况下,我们无法获取 year销售的产品 Count:

CROSSFILTER_Examp_PivotTable1

可通过两种方法 year获取产品的 count:

  • 打开关系的双向交叉筛选。 这将改变这两个表之间 all 数据的 filters 工作方式。

  • 使用 CROSSFILTER 函数可更改关系如何只处理此 measure。

使用 DAX时,可以使用 CROSSFILTER 函数来更改关系定义的两个列之间的交叉filter 方向的行为方式。 在这种情况下,DAX 表达式如下所示:

BiDi:= CALCULATE([Distinct Count of ProductKey], CROSSFILTER(FactInternetSales[ProductKey], DimProduct[ProductKey] , Both))

通过在 measure 表达式中使用 CROSSFILTER 函数,我们得到预期的结果:

CROSSFILTER_Examp_PivotTable2