Examinar o contexto de filtro
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
- DevolveTRUE
quando uma referência de coluna transmitida é filtrada diretamente . -
ISCROSSFILTERED
- DevolveTRUE
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
- DevolveTRUE
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.