Executar a transição de contexto
O que acontece quando uma medida ou expressão de medida é avaliada dentro do contexto de linha? Esse cenário pode ocorrer em uma fórmula de coluna calculada ou quando uma expressão em uma função de iterador é avaliada.
No exemplo a seguir, você adicionará uma coluna calculada na tabela Customer para classificar os clientes em uma classe de fidelidade. O cenário é simples: Quando a receita produzida pelo cliente é inferior a US$ 2500, os clientes são classificados como Low; caso contrário, eles são classificados como High.
Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
Na Página 4 do relatório, adicione a coluna Segmento de Cliente como a legenda do gráfico de pizza.
Observe que existe apenas um valor de Segmento de Cliente. O motivo é que a fórmula da coluna calculada produz um resultado incorreto: Cada cliente recebe o valor de Alta porque a expressão SUM(Sales[Sales Amount])
não é avaliada em um contexto de filtro. Consequentemente, cada cliente é avaliado na soma de cadavalor da coluna Valor das Vendas na tabela Vendas.
Para forçar a avaliação da expressão SUM(Sales[Sales Amount])
para cada cliente, uma transição de contexto que aplica os valores de coluna de contexto de linha ao contexto de filtro precisa ocorrer. É possível realizar essa transição usando a função CALCULATE
sem inserir expressões de filtro.
Modifique a definição de coluna calculada para que ela produza o resultado correto.
Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
No visual de gráfico de pizza, adicione a nova coluna calculada à caixa Legenda. Verifique se agora são exibidos dois segmentos da pizza.
Nesse caso, a função CALCULATE
aplica valores de contexto de linha como filtros, o que é conhecido como transição de contexto. Para ser preciso, o processo não funciona exatamente assim quando há uma coluna exclusiva na tabela. Quando uma coluna exclusiva está na tabela, você só precisa aplicar um filtro a essa coluna para fazer a transição acontecer. Nesse caso, o Power BI aplica um filtro à coluna CustomerKey para o valor no contexto de linha.
Se você referenciar medidas em uma expressão que é avaliada no contexto de linha, a transição de contexto será automática. Portanto, você não precisa inserir referências de medida para a função CALCULATE
.
Modifique a definição de coluna calculada, que faz referência à medida Receita, e observe que ela continua a produzir o resultado correto.
Customer Segment =
VAR CustomerRevenue = [Revenue]
RETURN
IF(CustomerRevenue < 2500, "Low", "High")
Agora, você pode concluir a fórmula da medida Comissão de Vendas. Para produzir um total, você precisa usar uma função de iterador para iterar em todas as regiões no contexto de filtro. A expressão de função de iterador precisa usar a função CALCULATE
para fazer a transição do contexto de linha para o contexto de filtro. Observe que ele não precisa mais testar se apenas um valor de coluna Country na tabela Sales Territory está no contexto de filtro, porque sabe-se que ela está filtrando por apenas um país (considerando que ela está iterando pelas regiões no contexto de filtro, sendo que uma região pertence a apenas um país).
Passe para a Página 3 do relatório e modifique a definição de medida Sales Commission para usar a função de iterador SUMX
:
Sales Commission =
SUMX(
VALUES('Sales Territory'[Region]),
CALCULATE(
[Revenue]
* IF(
VALUES('Sales Territory'[Country]) = "United States",
0.15,
0.1
)
)
)
O visual de tabela agora exibe um total de comissão de vendas para todas as regiões.
Precisa de ajuda? Confira nosso guia de solução de problemas ou forneça comentários específicos relatando um problema.