Marcelo Leite • 05 abr 2019 • Microsoft Power BI
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.
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(
;
<expressão>;
;
)
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;
;
<expressão>;
)
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:
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.
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:
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:
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:
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:
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:
Para modificar meu contexto editarei a fórmula anterior da seguinte forma:
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.