ISFILTERED 函数 (DAX)
当直接筛选 columnName 时,返回 TRUE。 如果列没有筛选器,或由于正在筛选同一个表或相关表中的不同列而发生筛选,则函数返回 FALSE。
语法
ISFILTERED(<columnName>)
参数
- columnName
使用标准 DAX 语法的现有列的名称。 它不能是表达式。
返回值
当直接筛选 columnName 时,为 TRUE。
注释
当将一个或多个筛选器应用于该列时,就认为是直接筛选此 columnName;当应用于同一个表或相关表中其他列的某个筛选器也通过筛选 columnName 列而影响该列时,就认为是对该列进行交叉筛选。
当正在筛选 columnName 或相同表或相关表中的其他列时,相关函数 ISCROSSFILTERED 函数 (DAX) 返回 TRUE。
示例
下面的示例创建一个度量值,然后提供不同方案以说明 ISFILTERED() 的行为。 在这些方案可能是下载数据分析表达式 (DAX) 示例数据电子表格之后获得的。
首先,在 [Product] 表中创建以下度量值 [Is ProductName Filtered directly]。
=ISFILTERED(Product[ProductName])
了解 ISFILTERED():
在创建此度量值后,透视表应显示 [Is ProductName Filtered directly] 为 FALSE,因为根本没有筛选此表达式。 现在,您应看到类似如下的内容:
Is ProductName Filtered directly
FALSE
如果透视表中未显示任何内容,则将 [Is ProductName Filtered directly] 拖到**“值”**框中。
将 ProductCategory[ProductCategoryName] 拖到 Row Labels 框中;所有值均仍应为 FALSE,而您的表应如下所示:
Row Labels
Is ProductName Filtered directly
Accessories
FALSE
Bikes
FALSE
Clothing
FALSE
Components
FALSE
FALSE
总计
FALSE
表包含的值为 FALSE 的原因在于:ProductCategory[ProductCategoryName] 对 Product[ProductName] 进行间接筛选或交叉筛选,而不是对列进行直接筛选。
将 Product[Status] 拖到 Column Labels 框中;所有值仍应为 FALSE,而您的表应如下所示:
Is ProductName Filtered directly
列标签
行标签
Current
总计
Accessories
FALSE
FALSE
FALSE
Bikes
FALSE
FALSE
FALSE
Clothing
FALSE
FALSE
FALSE
Components
FALSE
FALSE
FALSE
FALSE
FALSE
FALSE
总计
FALSE
FALSE
FALSE
此表仍具有许多 FALSE 值,因为 Product[Status] 不直接筛选 Product[Name]。
此过程的最后一步是将 Product[Name] 拖到**“报表筛选器”**框中。 此时应未更改任何内容;然而,一旦您选择了产品名称,表值应立即更改为 TRUE。 根据您选择的产品,表应如下所示:
ProductName
Mountain-400-W Silver, 38
Is ProductName Filtered directly
列标签
行标签
Current
总计
Accessories
TRUE
TRUE
Bikes
TRUE
TRUE
Clothing
TRUE
TRUE
Components
TRUE
TRUE
TRUE
TRUE
总计
TRUE
TRUE
总之,通过 ISFILTERED() 可以确定是否在对表达式进行计算的上下文中直接筛选 columnName。
此示例使用 DAX_AdventureWorks 示例电子表格模型