Partilhar via


Função HASONEVALUE (DAX)

Retorna TRUE quando o contexto de columnName é filtrado até um único valor distinto. Caso contrário, retorna FALSE.

Sintaxe

HASONEVALUE(<columnName>)

Parâmetros

  • columnName
    O nome de uma coluna existente que usa a sintaxe DAX padrão. Ele não pode ser uma expressão.

Valor de retorno

Retorna TRUE quando o contexto de columnName é filtrado até um único valor distinto. Caso contrário, retorna FALSE.

Comentários

  • Uma expressão equivalente para HASONEVALUE() é COUNTROWS(VALUES(<columnName>)) = 1.

Exemplo

No exemplo a seguir, você deseja criar uma fórmula que verifica se o contexto está sendo fatiado por um valor para estimar um percentual em um cenário predefinido; neste caso, você deseja comparar Vendas de Revendedor a vendas em 2007; então, você precisa saber se o contexto é de filtros de um único ano. Além disso, se a comparação não tem significado, você deseja retornar BLANK.

Se você desejar acompanhar o cenário, poderá baixar a planilha com o modelo de dados de exemplo PowerPivot.

Crie uma medida denominada [ResellerSales compared to 2007] usando a seguinte expressão:

=IF(HASONEVALUE(DateTime[CalendarYear]),SUM(ResellerSales_USD[SalesAmount_USD])/CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]),DateTime[CalendarYear]=2007),BLANK())
  1. Depois de criar a medida, você deve obter um resultado vazio em [ResellerSales compared to 2007], conforme mostrado abaixo:

    ResellerSales compared to 2007

    A célula BLANK no resultado resulta da inexistência de filtros de um único ano em qualquer lugar de seu contexto.

  2. Arraste DateTime[CalendarYear] até a caixa Rótulos de Coluna; sua tabela deve ter a seguinte aparência:

    Rótulos de Coluna

    2005

    2006

    2007

    2008

    ResellerSales compared to 2007

    24.83 %

    74.88 %

    100.00 %

    50.73 %

  3. Arraste ProductCategory[ProductCategoryName] até a caixa Rótulos de Linha para obter algo como:

    ResellerSales compared to 2007

    Rótulos de Coluna

    Rótulos de Linha

    2005

    2006

    2007

    2008

    Acessórios

    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 %

    Componentes

    11.05 %

    65.99 %

    100.00 %

    38.65 %

    Grand Total

    24.83 %

    74.88 %

    100.00 %

    50.73 %

    Você notou que Grand Totals apareceu na parte inferior das colunas, mas não para as linhas? Isso ocorre porque o contexto de Grand Totals em linhas implica mais de um ano; mas, para colunas, ele implica um único ano.

  4. Arraste DateTime[CalendarYear] até a caixa Segmentações de Dados Horizontais, e arraste SalesTerritory[SalesTerritoryGroup] até a caixa Rótulos Horizontais. Você deve ter um conjunto de resultados vazio, porque sua tabela contém dados para vários anos. Selecione 2006 na segmentação de dados e sua tabela agora deve ter dados novamente. Experimente outros anos para verificar como os resultados mudam.

  5. Em resumo, HASONEVALUE() permitirá que você identifique se sua expressão está sendo avaliada no contexto de um único valor para columnName.