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:
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.
