HASONEVALUE 函数 (DAX)
当已将 columnName 的上下文筛选为只剩下一个非重复值时,将返回 TRUE。 否则为 FALSE。
语法
HASONEVALUE(<columnName>)
参数
- columnName
使用标准 DAX 语法的现有列的名称。 它不能是表达式。
返回值
当已将 columnName 的上下文筛选为只剩下一个非重复值时,为 TRUE。 否则为 FALSE。
注释
- HASONEVALUE() 的等效表达式是 COUNTROWS(VALUES(<columnName>)) = 1。
示例
在以下示例中,您希望创建一个公式来验证上下文是否正由一个值进行切片,以便针对预定义的方案估计百分比;在这种情况下,您希望对照 2007 年的销售额比较经销商销售额,然后,您需要了解是否按单一年度对上下文进行筛选。 此外,如果这种比较没有意义,则希望返回 BLANK。
如果您希望遵循此方案,则可以从 PowerPivot 示例数据 电子表格中下载具有此模型的电子表格。
使用以下表达式创建名为 [ResellerSales compared to 2007] 的度量值:
=IF(HASONEVALUE(DateTime[CalendarYear]),SUM(ResellerSales_USD[SalesAmount_USD])/CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]),DateTime[CalendarYear]=2007),BLANK())
在创建此度量值之后,在 [ResellerSales compared to 2007] 之下应有一个空的结果,如下所示:
ResellerSales compared to 2007
结果中之所以出现 BLANK 单元,是因为您在上下文中的任何位置都没有单一年度筛选器。
将 DateTime[CalendarYear] 拖到列标签框中;您的表应如下所示:
列标签
2005
2006
2007
2008
ResellerSales compared to 2007
24.83 %
74.88 %
100.00 %
50.73 %
将 ProductCategory[ProductCategoryName] 拖到行标签框中,以便显示如下内容:
ResellerSales compared to 2007
列标签
行标签
2005
2006
2007
2008
Accessories
6.74 %
31.40 %
100.00 %
55.58 %
Bikes
28.69 %
77.92 %
100.00 %
53.46 %
Clothing
3.90 %
55.86 %
100.00 %
44.92 %
Components
11.05 %
65.99 %
100.00 %
38.65 %
Grand Total
24.83 %
74.88 %
100.00 %
50.73 %
您是否注意到 Grand Totals 出现在列的底部,而不是行的底部? 这是因为针对行的 Grand Totals 的上下文意味着多于一年;但对于列,其上下文则意味着单一年度。
将 DateTime[CalendarYear] 拖到**“水平切片器”框中,并将 SalesTerritory[SalesTerritoryGroup] 拖到“水平切片器”**框中。 您应获得一个空的结果集,因为您的表包含的是多个年度的数据。 在切片器中选择 2006,然后您的表现在应再次具有数据。 尝试其他年度以查看结果如何发生变化。
总之,通过 HASONEVALUE() 可以确定您的表达式是否在 columnName 的单一值上下文中进行计算。