Blog Tecnológico

Power BI: Rank dinâmico com DAX

Marcelo Leite • 05 abr 2019

Power BI: Rank dinâmico com DAX

Com o Microsoft Power BI é fácil ranquear as informações para proceder análises efetivas e com base nelas, tomar importantes decisões
dentro da gestão de BI (Business Intelligence). O ranqueamento classifica e indica clientes, empresas, produtos ou qualquer item da seleção de uma Database dentro de um indicador.


Podemos ranquear através de quantidade de vendas, número de pedidos, estoque ou várias outras opções. As possibilidades são infinitas e quero mostrar aqui um formato prático em como criar essas análises usando Funções DAX no Power BI de forma dinâmica, oferecendo ao usuário a possibilidade de escolher quais ranques ele quer visualizar.

Power BI

Neste exemplo vamos começar criando funções auxiliares utilizando as Funções RANKX e TOPN. Essas funções são muito úteis para ranquear uma categoria de acordo com uma expressão. A sintaxe da formula RANLX é:

RANK(
;
;
;
)

Com ela você pode escolher em qual tabela você quer criar o Ranqueamento e partir de qual expressão. Nos opcionais podemos escolher o tipo de ranqueamento como ascendente ou descendente entre outros opcionais.
Já a Função TOPN é uma função que retorna uma tabela como resultado. Com ela recebemos uma tabela com as TOP N linhas de uma tabela avaliada em uma determinada expressão. Sintaxe:
TOPN(
N;
;
;

)

Dentro de uma consulta criada no Power BI, eu quero avaliar quais são os clientes que mais compraram na minha loja. Criarei então uma Matriz para avaliarmos o valor de compra, individual, de cada um desses clientes:

Power BI

Usando a função RANKX podemos filtrar através de uma tabela dos clientes, para conhecer qual a posição no RANK de cada um deles.

Power BI

A medida da expressão no nosso exemplo [Total Vendas] é uma medida que guarda a soma do total das vendas de todos os produtos, quando aplicada na matriz, o contexto de filtro da medida se propaga para cada um dos clientes.

Aplicando a RANKX na nossa matriz obtemos o resultado abaixo:

Power BI

Para calcularmos apenas os valores dos 5 primeiros colocados e criarmos uma avaliação para um total especifico, usaremos a Função TOPN, como auxiliar, para a Função CALCULATE. A fórmula na nossa medida ficaria da seguinte forma:

Power bI

Criando uma variável chamada “Total”, armazenaremos o total correto dos TOP 5 Clientes (que mais compraram na minha loja). Depois criarei um teste lógico duplo que pergunta ao sistema se existe algum valor dentro do campo clientes para a avaliação acontecer, caso não exista ele apresentará o total armazenado na minha variável. Percebam que eu uso a Função ALL para remover o contexto de filtro da minha condicional, e também uso a Função VALUES para que a avaliação seja feita apenas para a seleção dos 5 primeiros clientes em dois contextos distintos (variável e condicional).

Criando a fórmula acima, teremos como resultado na nossa matriz os valores abaixo:

Power BI

Para criarmos um Ranqueamento Dinâmico e possibilitarmos ao usuário escolhas de classificação precisaremos adicionar uma variável ao nosso código. Essa variável será responsável por armazenar o valor atual de avaliação que o usuário está aplicando na minha matriz através de um segmentador. Não entendeu? Deixe-me explicar como isso será feito de forma simples e rápida.

Primeiro vamos criar uma tabela para classificar e armazenar as opções que vou fornecer através de um segmentador para o usuário:

http://www.flashfor.com.br/blog/powerbi_bi_funcaorankx_businessintelligence_curso_engdtpmultimidia-tabela.jpg

Essa nova tabela não precisará ter nenhum relacionamento com as outras consultas, ela servirá apenas para selecionar o ranqueamento que o usuário deseja avaliar.

Entrando dentro da minha medida de ranqueamento, é possível inserir uma nova variável que verificará se existe algum valor ativo no contexto atual em relação a coluna “N”. Por enquanto poderemos criar o segmentador na pagina que está a minha matriz:

http://www.flashfor.com.br/blog/powerbi_bi_funcaorankx_businessintelligence_curso_engdtpmultimidia-top.jpg

Para modificar meu contexto editarei a fórmula anterior da seguinte forma:

http://www.flashfor.com.br/blog/powerbi_bi_funcaorankx_businessintelligence_curso_engdtpmultimidia-codigo.jpg

Criando a variável “TopCliente” eu conseguirei armazenar a seleção do segmentador feita pelo usuário, trocando de forma dinâmica a avaliação da Função TOPN pelos números gerados pela minha tabela. Dessa forma permitiremos verificar totais, porcentagens de vendas e diferenças entre clientes ou produtos de forma dinâmica.

Veja o exemplo feito neste artigo, acesse o Link: https://app.powerbi.com/view?r=eyJrIjoiZDQ2NDFmNTgtM2IyYi00NWQwLWJkOTItYjViNDU4MDRiNmUzIiwidCI6ImU2YmVkMTFkLWM2YzMtNDFkMC05NzU3LTkxNWQwZjIzZmQ4NyJ9
Marcelo Leite

Marcelo Leite

Marcelo Leite é CEO e co-founder de uma empresa de comunicação em Brasília.
Trabalha na área de direção e edição de vídeo, desenvolvendo projetos áudio visuais para seus clientes, tendo vários de seus trabalhos veiculados em grandes emissoras como TV Globo e Record.

Já ministrou dezenas de treinamentos e palestras oficiais da Adobe na ENG DTP & Multimídia.

ENG DTP & Multimídia - Logo

CONTATO