ISCROSSFILTERED 函数 (DAX)
当正在筛选 columnName 或相同表或相关表中的其他列时,返回 TRUE。
语法
ISCROSSFILTERED(<columnName>)
参数
- columnName
使用标准 DAX 语法的现有列的名称。 它不能是表达式。
返回值
当正在筛选 columnName 或相同表或相关表中的其他列时,返回 TRUE。 否则,返回 FALSE。
注释
当应用于同一个表或相关表中其他列的筛选器通过对 columnName 进行筛选而影响该列时,则称对该列进行交叉筛选。 当对一列应用一个或多个筛选器时,则称对该列进行“直接”筛选。
当对 columnName 进行直接筛选时,相关的函数 ISFILTERED 函数 (DAX) 返回 TRUE。
示例
下面的示例创建一个度量值,然后提供不同方案以说明 ISCROSSFILTERED() 的行为。 这些方案可能是下载 DAX_AdventureWorks 电子表格后获得的。
首先,在 [Product] 表中创建以下度量值 [Is ProductName Cross Filtered]。
=ISCROSSFILTERED(Product[ProductName])
了解 ISCROSSFILTERED():
在创建此度量值后,数据透视表应显示 [Is ProductName Cross Filtered] 为 FALSE,因为根本没有筛选此表达式。 现在,您应看到类似如下的内容:
Is ProductName Cross Filtered
FALSE
如果数据透视表中未显示任何内容,则将列 [Is ProductName Cross Filtered] 拖到**“值”**框中。
将 DateTime[CalendarYear] 拖到 Column Labels 框中,并将 SalesTerritory[SalesTerritoryGroup] 拖到 Row Labels 框中;所有值均应显示为 FALSE。 现在,您应看到类似如下的内容:
Is Product Name CrossFiltered
列标签
行标签
2005
2006
2007
2008
Grand Total
Europe
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
NA
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
North America
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
Pacific
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
Grand Total
FALSE
FALSE
FALSE
FALSE
FLASE
FLASE
您会在所有单元中看到值 FALSE,因为 DateTime[CalendarYear] 或 SalesTerritory[SalesTerritoryGroup] 对于 Product[ProductName] 都没有带来筛选影响。
将列 ProductCategory[ProductCategoryName] 拖到**“水平切片器”框中,并将 ProductSubCategory[ProductSubCategoryName] 拖到“垂直切片器”**框中。 所有的值应仍显示为 FALSE,这是因为当您将列添加到切片器框时,尚未选择切片集。 因此,您应看到类似如下的内容:
ProductCategoryName
Accessories
Bikes
Clothing
Components
ProductSubcategoryName
Is Product Name CrossFiltered
列标签
Bib-Shorts
行标签
2005
2006
2007
2008
Grand Total
Bike-Racks
Europe
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
Bike-Stands
NA
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
Bottles and Cages
North America
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
Bottom Brackets
Pacific
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
Brakes
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
Caps
Grand Total
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
Chains
Cleaners
Cranksets
Derailleurs
Fenders
Forks
Gloves
Handlebars
Headsets
在切片器中选择任何项,您的表现在会将所有单元转换为 TRUE,因为您现在正在通过相关表 ProductCategory 和 ProductSubcategory 筛选 [ProductName] 列。 结果应如下所示:
ProductCategoryName
Accessories
Bikes
Clothing
Components
ProductSubcategoryName
Is Product Name CrossFiltered
列标签
Bib-Shorts
行标签
2005
2006
2007
2008
Grand Total
Bike-Racks
Europe
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
Bike-Stands
NA
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
Bottles and Cages
North America
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
Bottom Brackets
Pacific
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
Brakes
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
Caps
Grand Total
TRUE
TRUE
TRUE
TRUE
TRUE
TRUE
Chains
Cleaners
Cranksets
Derailleurs
Fenders
Forks
Gloves
Handlebars
Headsets
您现在可以将切片器替换为 Product[ProductName] 和 Product[ModelName]。 只要您没有在任何切片器上选择任何项,此度量值将返回 FALSE;但是,当您在切片器中选择某一项时,度量值现在将返回 TRUE,因为您正在根据 Product[ProductName] 筛选其自身,或者通过选择 Product[ModelName] 来筛选 Product[ProductName]。
总之,通过 ISCROSSFILTERED() 可以确定是否在对 DAX 表达式进行计算的上下文中筛选 columnName。
此示例使用 DAX_AdventureWorks 示例电子表格模型。