Fala, pessoal!

Tudo bem com vocês?

Bora para mais um post tira dúvida no Power BI.

Hoje eu precisei criar um ranking para coletar as top 10 melhores empresas ranqueadas quanto a qualidade dos dados. Basicamente, selecionar os melhores registros (Golden Records) da entidade Cliente (PF e PJ). Para isso, estamos utilizando a tática de score nos registros.

A nossa base fictícia, abordará alguns desses registros.

Abaixo temos o Id, o Setor, o Tempo de Existência e o Score da Empresa na base.

Premissas:

1 – O ranking será criado baseado no score;

2 – O score possui valores repetidos, como o 17,80. Ou seja, duas empresas foram ranqueadas com a mesma nota;

3 – O ranking não pode possui valor duplicado. Cada linha deve possui um valor único;

4 – Como essa base é beta, ainda, não há critério de desempate.

Utilizando medidas, não estava dando muito certo, pois, os valores, quando iguais, estava apontando o mesmo valor no ranking, conforme abaixo:

Então, após dar uma vasculhada na Web, achei uma solução para o meu problema. Basicamente, como a função RANKX  é uma função iterante (avalia o valor linha a linha, similar a uma função do SQL), trabalhar com os registros no mesmo nível, parece funcionar bem.

Foi no canal do Reza Rad, no link abaixo, que encontrei a solução:

How to use RANKX in DAX (Part 1 of 3 – Calculated Columns)

Vamos a fórmula, criando uma coluna calculada:

Rank Funcional =
RANKX(
‘Analise_Ranking’,
‘Analise_Ranking'[Score]
)

Uaui, ficou exatamente igual!

Eu explico!

Tem um macete que precisamos fazer quando os valores são iguais. Precisamos, no nível decimal, acrescentar um número ao rank para que ele fique diferente. Como assim?

Não podemos mudar o valor original, no caso o score, porquê senão corremos o risco de mudar o valor e a ordem correta dos registros. Mas, como o ranking se repete, exemplo o 12, podemos criar um número que o diferencie, como por exemplo:

12,10

12,20

Embora o 12 do rank continue igual, a parte decimal é diferente!

Vamos ao truque!

Clie uma coluna calculada com a fórmula abaixo:

Randomico =
Analise_Ranking[Score] + (RANDBETWEEN(1,1E18)/1E18)

Agora, na coluna Rank Funcional, acrescente esse coluna com um sinal de + na frente do campo ranqueado, conforme abaixo:

Rank Funcional =
RANKX(
‘Analise_Ranking’,
‘Analise_Ranking'[Score] + Analise_Ranking[Randomico]
)

Agora sim!

Notem que no meu cenário, não há critério de desempate, ou seja, entre as colunas com os valores repetidos, qualquer uma pode ser ordenada primeiro!

Abaixo o link para fazer o download do arquivo:

Download PBIX

Por hoje é isso!

Gostaram? Não esqueça de se inscrever no blog para receber os posts novos!

Abs.

Meirieli Ribeiro

Power BI – Ranking Sem Repetição de Valores

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *