Power BI Formatação Condicional Matriz

Um dos posts mais acessados no blog é o Power BI Formatação Condicional em Texto, e hoje precisei fazer uma outra formatação condicional, mas dessa vez em uma matriz, que fica um pouquinho diferente.

O Problema

Antes de mais nada, vamos ver o resultado esperado, conforme imagem abaixo:

clique pra aumentar

Meu cliente pediu pra, no GROSS PROFIT apenas, pintar o resultado do subtotal de vermelho, quando for menor que zero, ou verde quando for maior que zero.

Analisando

Antes de sair fazendo, vamos pensar no que precisamos. Pra esse caso preciso de alguma forma identificar aquela célula do subtotal do Gross Profit. Eu sei que no DAX a função ISINSCOPE() pode me ajudar com isso.

Ou seja, com essa função vou dar um jeito que identificar exatamente aquela posição que eu quero.

Porque pensa assim, eu sei que eu tenho ali duas dimensões, a de KPI e a de Company, então eu preciso identificar quando o KPI for igual a GROSS PROFIT e a company for nada, ou seja, a company não estiver no escopo. Então é só criar uma medida que me retorne essa condição!

Mão na massa

Seguindo o raciocínio do tópico anterior, eu crio a medida utilizando a ISINSCOPE() com SWITCH().

O mais importante nessa medida é a ordem das funções ISINSCOPE(), isso por conta da lógica que o SWITCH() aplica. Portanto, primeiro é preciso verificar dVenture pra só depois verificar dKPI, caso contrário nossa medida não funcionaria, isso porque dKPI retorna TRUE pra todas as linhas, enquanto que dVenture só retorna TRUE para as linhas onde realmente aparecem as company.

Agora no lugar de mostrar “kpi” eu coloco pra mostrar o nome do KPI, faço isso usando SELECTEDVALUE() do dKPI, e trago também uma variável que traz o valor de SalesAmount.

Já coloquei as variáveis em uso junto da lógica, portanto se o ISINSCOPE() do dKPI for TRUE() e o kpi for Gross Profit e o valor de SalesAmount for maior que zero, então escreva “aqui”.

Pronto, a lógica é essa, a medida final fica assim:

SalesAmount CF = 
VAR vSELECTVALUE = SELECTEDVALUE( dKPI[kpiLevel1] )
VAR vSALESAMOUNT = [SalesAmount]
VAR vRESULT = 
SWITCH (
    TRUE,
    ISINSCOPE ( dVenture[VentureMask] ), "company",
    ISINSCOPE ( dKPI[kpiLevel1] ) = TRUE() && vSELECTVALUE = "Gross Profit" && vSALESAMOUNT > 0, "#47C165", // VERDE
    ISINSCOPE ( dKPI[kpiLevel1] ) = TRUE() && vSELECTVALUE = "Gross Profit" && vSALESAMOUNT < 0, "#D64550"  // VERMELHO
)

RETURN
vRESULT

Aplicando a Formatação Condicional

Pra finalizar e aplicar a cor verde ou vermelha que definimos na medida, basta selecionar a medida na matriz e definir como Field Value. Importante, pra esse caso, é selecionar Apply To para Values and totals, porque aquele lugarzinho ali é um total.

Published by Pedro Carvalho

Apaixonado por análise de dados e Power BI

Deixe uma resposta

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: