Realizar a transição de contexto

Concluído

O que acontece quando uma medida ou expressão de medida é avaliada no contexto de linha? Este cenário pode ocorrer numa fórmula de coluna calculada ou quando se avalia uma expressão numa função de iterador.

No exemplo seguinte, irá adicionar uma coluna calculada à tabela Cliente para classificar os clientes numa classe de fidelização. O cenário é simples: quando a receita produzida pelo cliente for inferior a $2500, o cliente é classificado como Baixo; caso contrário, são classificados como Altos.

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 Clientes como a legenda do gráfico circular.

Imagem a mostrar um elemento visual de gráfico circular intitulado Receita por Segmento de Clientes. Existe apenas um segmento: Elevado, que representa 100% dos dados.

Repare que existe apenas um valor de Segmento de Clientes. Tal deve-se ao facto de a fórmula da coluna calculada produzir um resultado incorreto: atribui-se a cada cliente o valor Elevado, porque a expressão SUM(Sales[Sales Amount]) não é avaliada num contexto de filtro. Consequentemente, cada cliente é avaliado sobre a soma de cada valor de coluna Montante de Vendas na tabela Vendas.

Para forçar a avaliação da expressão SUM(Sales[Sales Amount])para cada cliente, tem de ocorrer uma transição de contexto que aplica os valores da coluna de contexto de linha ao contexto de filtro. Pode efetuar esta transição utilizando a CALCULATE função sem transmitir expressões de filtro.

Modifique a definição de coluna calculada para que produza o resultado correto.

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

No elemento visual do gráfico circular, adicione a nova coluna calculada ao conjunto Legenda, verifique se são agora apresentados dois segmentos circulares.

Imagem a mostrar um elemento visual de gráfico circular intitulado Receita por Segmento de Clientes. Existem dois segmentos: Elevado e Baixo. Elevado representa 76% dos dados e Baixo representa 24%.

Neste caso, a CALCULATE função aplica valores de contexto de linha como filtros, conhecidos como transição de contexto. Em termos precisos, o processo não funciona muito bem dessa forma quando uma única coluna está na tabela. Quando tal acontece, só precisa de aplicar um filtro nessa coluna para concretizar a transição. Neste caso, o Power BI aplica um filtro na coluna CustomerKey para o valor no contexto de linha.

Se fizer referência às medidas numa expressão que é avaliada no contexto de linha, a transição de contexto será automática. Assim, não precisa de transmitir referências de medida à CALCULATE função.

Modifique a definição de coluna calculada, que faz referência à medida Receita. Repare que continua a produzir o resultado correto.

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

Agora, pode concluir a fórmula da medida Comissão de Vendas. Para produzir um total, precisa de utilizar uma função de iterador para iterar em todas as regiões no contexto de filtro. A expressão da função iterador tem de utilizar a CALCULATE função para fazer a transição do contexto de linha para o contexto de filtro. Tenha em atenção que já não precisa de testar se um único valor de coluna País na tabela Território de Vendas está no contexto de filtro porque se sabe que está a filtrar por um único país (porque está a iterar sobre as regiões no contexto de filtro e uma região pertence apenas a um país).

Mude para a Página 3 do relatório e, em seguida, modifique a definição de medida da Comissão de Vendas para utilizar a SUMX função iterador:

Sales Commission =
SUMX(
    VALUES('Sales Territory'[Region]),
    CALCULATE(
        [Revenue]
        * IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )
)

O elemento visual de tabela agora mostra um total da comissão de vendas para todas as regiões.

Imagem a mostrar um elemento visual de tabela com três colunas: Região, Receita e Comissão de Vendas. São mostradas dez linhas de região e um total. A Comissão de Vendas total agora apresenta um total.