Examinar contexto de filtro
A função VALUES permite que as fórmulas determinem quais valores estão no contexto de 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, contendo as linhas que estão 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, a fórmula deve primeiro testar se a função VALUES retorna uma única linha. Duas funções podem ajudar a realizar essa tarefa: HASONEVALUE e SELECTEDVALUE.
A função HASONEVALUE retornará TRUE quando uma determinada referência de coluna tiver sido filtrada para um único valor.
A função SELECTEDVALUE simplifica a tarefa de determinar o que um único valor poderia ser. Quando a função recebe uma referência de coluna, ela retorna um único valor ou, quando há mais de um valor no contexto de filtro, ela retorna BLANK (ou um valor alternativo que você passar para a função).
No exemplo a seguir, você usa a função HASONEVALUE. Adicione a medida a seguir, que calcula a comissão de vendas, à tabela Sales. Na Adventure Works, a taxa de comissão é de 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
)
)
Observe que o resultado da medida Sales Commission é BLANK. Isso porque vários valores estão no contexto de filtro da coluna Country na tabela Sales Territory. Nesse caso, a função HASONEVALUE retorna FALSE, o que resulta na medida Revenue sendo multiplicada pelo valor BLANK (um valor multiplicado por um valor BLANK é BLANK). Para produzir um total, você precisa usar uma função de iterador, que é explicada mais adiante neste módulo.
Três outras funções que podem ser usadas para testar o estado do filtro são:
-
ISFILTERED: retornaTRUEquando uma referência de coluna passada é filtrada diretamente. -
ISCROSSFILTERED: retornaTRUEquando uma referência de coluna passada é filtrada indiretamente. Uma coluna é cruzada por filtro quando um filtro que é aplicado a outra coluna na mesma tabela, ou em uma tabela relacionada, afeta a coluna de referência ao filtrá-la. -
ISINSCOPE: retornaTRUEquando uma referência de coluna passada corresponde a um nível em uma hierarquia de níveis.
Retorne à 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á ser BLANK.
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
IF(
ISINSCOPE('Sales Territory'[Region]),
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
)