Realizar a transição de contexto

Concluído

O que acontece quando uma medida ou uma expressão de medida é avaliada dentro do contexto da 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 à tabela Customer para classificar clientes em uma classe de fidelidade. O cenário é simples: quando a receita produzida pelo cliente é inferior a US$ 2.500, o cliente é classificado como Baixo; do contrário, ele é classificado como Alto.

Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

Na Página 4 do relatório, adicione a coluna Customer Segment como a legenda do gráfico de pizza.

Uma imagem mostra um visual de gráfico de pizza intitulado Revenue por Customer Segment. Existe apenas um segmento: Alto, que representa 100% dos dados.

Só existe um valor Customer Segment. O motivo é porque a fórmula de coluna calculada produz um resultado incorreto: cada cliente recebe o valor Alto porque a expressão SUM(Sales[Sales Amount]) não é avaliada em um contexto de filtro. Consequentemente, cada cliente é avaliado com base na soma de cada valor da coluna Sales Amount na tabela Sales.

Para forçar a avaliação da expressão SUM(Sales[Sales Amount]) para cada cliente, uma transição de contexto deve acontecer aplicando os valores da coluna de contexto da linha ao contexto do filtro. Você pode realizar essa transição usando a função CALCULATE sem passar expressões de filtro.

Modifique a definição de coluna calculada, de maneira que ela produza o resultado correto.

Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

No visual do gráfico de pizza, adicione a nova coluna calculada à caixa Legenda, verifique se dois segmentos de pizza são exibidos agora.

Uma imagem mostra um visual de gráfico de pizza intitulado Revenue por Customer Segment. Existem dois segmentos: Alto e Baixo. Alto representa 76% dos dados e Baixo representa 24%.

Nesse caso, a função CALCULATE aplica valores de contexto da linha como filtros, conhecidos 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 na coluna CustomerKey para o valor no contexto da linha.

Se você referenciar medidas em uma expressão avaliada no contexto da linha, a transição do contexto será automática. Assim, você não precisa passar referências de medida para a função CALCULATE.

Modifique a definição de coluna calculada, que faz referência à medida Revenue, e observe que ela continua produzindo o resultado correto.

Customer Segment = 
VAR CustomerRevenue = [Revenue]
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

Você já pode concluir a fórmula da medida Sales Commission. Para produzir um total, você precisa usar uma função de iterador para iterar em todas as regiões no contexto do filtro. A expressão da função de iterador deve usar a função CALCULATE para fazer a transição do contexto da linha para o contexto do filtro. Ela não precisa mais testar se apenas um valor da coluna Country na tabela Sales Territory está no contexto do filtro, porque se sabe que ela está filtrando por apenas um país (porque ela está iterando pelas regiões no contexto do filtro, e uma região pertence a apenas um país).

Alterne para a Página 3 do relatório e modifique a definição da 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 da tabela agora exibe um total da comissão de vendas para todas as regiões.

Uma imagem mostra um visual de tabela com três colunas: Region, Revenue e Sales Commission. Dez linhas de região e um total são mostrados. A Sales Commission agora tem um total.