Examinar o contexto de filtro

Concluído

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

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

VALUES(<TableNameOrColumnName>)

A função exige a transmissão de uma referência de tabela ou uma referência de coluna. Quando transmite uma referência de tabela, esta apresenta um objeto de tabela com as mesmas colunas que contêm linhas para o que está no contexto de filtro. Quando transmite uma referência de coluna, esta apresenta uma tabela de coluna única de valores exclusivos que estão no contexto de filtro.

A função apresenta sempre um objeto de tabela e é possível que uma tabela contenha várias linhas. Por conseguinte, para testar se um valor específico está no contexto de filtro, a fórmula tem primeiro de testar se a VALUES função devolve uma única linha. Duas funções podem ajudá-lo a realizar esta tarefa: as HASONEVALUE funções DAX e SELECTEDVALUE .

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

A SELECTEDVALUE função simplifica a tarefa de determinar o que pode ser um único valor. Quando a função é transmitida para uma referência de coluna, apresenta um único valor; por outro lado, quando existe mais do que um valor no contexto de filtro, apresenta EM BRANCO (ou um valor alternativo que transmite para a função).

No exemplo seguinte, irá utilizar a HASONEVALUE função . Adicione a seguinte medida, que calcula a comissão de vendas, à tabela Vendas . Tenha em atenção que, na Adventure Works, a taxa de comissão é de 10% da receita para todos os países/regiões, exceto a Estados Unidos. Nos Estados Unidos, os vendedores recebem 15% de comissão. Formate a medida como moeda com duas casas decimais e, em seguida, adicione-a à tabela que se encontra 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
        )
    )

Repare que o resultado da Comissão de Vendas total está EM BRANCO. O motivo deve-se ao facto de vários valores estarem no contexto de filtro para a coluna País na tabela Território de Vendas . Neste caso, a função devolve FALSE, o HASONEVALUE que faz com que a medida Receita seja multiplicada por BLANK (um valor multiplicado por BLANK é BLANK). Para produzir um total, terá de utilizar uma função de iterador, que é explicada mais à frente neste módulo.

As três outras funções que pode utilizar para testar o estado do filtro são:

  • ISFILTERED - Devolve TRUE quando uma referência de coluna transmitida é filtrada diretamente .
  • ISCROSSFILTERED - Devolve TRUE quando uma referência de coluna transmitida é filtrada indiretamente . Uma coluna é filtrada de forma cruzada quando um filtro que é aplicado a outra coluna na mesma tabela, ou numa tabela relacionada, afeta a coluna de referência ao filtrá-la.
  • ISINSCOPE - Devolve TRUE quando uma referência de coluna transmitida é o nível numa hierarquia de níveis.

Regresse à Página 2 do relatório e, em seguida, modifique a definição de medida % Total do País da Receita para testar se a coluna Região na tabela Território de Vendas está no âmbito. Se não estiver no âmbito, o resultado da medida deverá estar 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
        )
    )

No elemento visual de matriz, repare que os valores de Receita Total por País em % agora apenas são mostrados quando uma região está no âmbito.