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())
  1. 在创建此度量值之后,在 [ResellerSales compared to 2007] 之下应有一个空的结果,如下所示:

    ResellerSales compared to 2007

    结果中之所以出现 BLANK 单元,是因为您在上下文中的任何位置都没有单一年度筛选器。

  2. 将 DateTime[CalendarYear] 拖到列标签框中;您的表应如下所示:

    列标签

    2005

    2006

    2007

    2008

    ResellerSales compared to 2007

    24.83 %

    74.88 %

    100.00 %

    50.73 %

  3. 将 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 的上下文意味着多于一年;但对于列,其上下文则意味着单一年度。

  4. 将 DateTime[CalendarYear] 拖到**“水平切片器”框中,并将 SalesTerritory[SalesTerritoryGroup] 拖到“水平切片器”**框中。 您应获得一个空的结果集,因为您的表包含的是多个年度的数据。 在切片器中选择 2006,然后您的表现在应再次具有数据。 尝试其他年度以查看结果如何发生变化。

  5. 总之,通过 HASONEVALUE() 可以确定您的表达式是否在 columnName 的单一值上下文中进行计算。