Examinar contexto de filtro

Concluído

A função VALUES do DAX permite que as suas fórmulas determinem quais valores estão no contexto do filtro.

A sintaxe da função VALUES é a seguinte:

VALUES(<TableNameOrColumnName>)

A função requer a passagem de uma referência de tabela ou uma referência de coluna. Quando você passa uma referência de tabela, ela retorna um objeto de tabela com as mesmas colunas que contêm linhas para o que está no contexto de filtro. Quando você passa uma referência de coluna, ela retorna uma tabela de coluna única de valores exclusivos que estão no contexto de filtro.

A função sempre retorna um objeto de tabela e é possível que uma tabela contenha várias linhas. Portanto, para testar se um valor específico está no contexto de filtro, sua fórmula precisa primeiro testar se a função VALUES retorna apenas uma linha. Duas funções podem ajudar você a realizar essa tarefa: as funções HASONEVALUE e SELECTEDVALUE do DAX.

A função HASONEVALUE retorna TRUE quando uma determinada referência de coluna foi filtrada para apenas um valor.

A função SELECTEDVALUE simplifica a tarefa de determinar qual pode ser um valor individual. Quando a função é passada para uma referência de coluna, ela retorna apenas um valor; quando mais de um valor está no contexto de filtro, ela retorna em branco (ou um valor alternativo que você passa para a função).

No exemplo a seguir, você usará a função HASONEVALUE. Adicione a medida a seguir, que calcula a comissão de vendas na tabela Sales. Observe que, na Adventure Works, a taxa de Comissão é 10% da receita para todos os países/regiões, exceto os Estados Unidos. Na Estados Unidos, os vendedores recebem 15% de comissão. Formate a medida como moeda com duas casas decimais e, em seguida, adicione-a à tabela encontrada na Página 3 do relatório.

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

Uma imagem mostra um visual de tabela com três colunas: Região, Receita e Comissão de Vendas. Dez linhas de região e um total são mostrados. A Comissão de Vendas total está em branco.

Observe que o resultado da Comissão de Vendas total está em branco. O motivo é porque vários valores estão no contexto de filtro para a coluna Country na tabela Sales Territory. Nesse caso, a função HASONEVALUE retorna FALSE, o que resulta na multiplicação da medida Revenue por um valor BLANK (um valor multiplicado por BLANK também é BLANK). Para produzir um total, você precisará usar uma função de iterador, que é explicada posteriormente neste módulo.

Três outras funções que você pode usar para testar o estado do filtro são:

  • ISFILTERED – retorna TRUE quando uma referência de coluna inserida é filtrada diretamente.
  • ISCROSSFILTERED – retorna TRUE quando uma referência de coluna inserida é filtrada indiretamente. Uma coluna é considerada com filtros cruzados quando um filtro aplicado a outra coluna na mesma tabela ou em uma tabela relacionada afeta a coluna de referência filtrando-a.
  • ISINSCOPE – retorna TRUE quando uma referência de coluna inserida é o nível em uma hierarquia de níveis.

Retorne para Página 2 do relatório e modifique a definição da medida Revenue % Total Country para testar se a coluna Region na tabela Sales Territory está no escopo. Se não estiver no escopo, o resultado da medida deverá ficar em branco.

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    IF(
        ISINSCOPE('Sales Territory'[Region]),
        DIVIDE(
            CurrentRegionRevenue,
            TotalCountryRevenue
        )
    )

Uma imagem mostra um visual de matriz intitulado Receita de Revendedor e tem Grupo, País e Região agrupados por linhas, além dos resumos Receita, Receita da Região em % do Total, Receita em % do Total do País e Receita em % do Total do Grupo. Os valores em branco estão nos resumos de Receita em % do Total do País.

No visual de matriz, observe que os valores de Receita em % do Total do País agora são exibidos apenas quando uma região está no escopo.