Pular para o conteúdo principal

[Power BI] Atualização MARÇO 2020 !!!!

[Power BI] Calculando Vendas de Novos Clientes


Olá Viciados em Power BI tudo bem?

No artigo de hoje eu queria mostrar como podemos calcular duas métricas interessantes, Vendas para novos clientes e Quantidade de novos clientes em um período específico.

Mas antes aquele pedido maroto, se você não conhece meu canal no youtube, da uma conferida lá youtube.com/rafaelmendonca que tem vários vídeos legais como o dessa semana feito com o meu amigo Edney Siqueira. Inscreva-se, deixa seu like ou não mas conheça também essa minha outra plataforma.

Hoje vamos falar sobre algumas funções DAX e se você quiser conhecer mais DAX pode conferir vídeos categorizados por função em www.guiadax.com.br .

1 - Nosso Ambiente

Tenho 3 tabelas simples, dCliente com os cadastros dos meus clientes, dCalendario com datas, e fVendas com as vendas.

dCalendario relaciona-se com fVendas em Data, e com dCliente em Dt_Cadastro(essa relação inativa)
e dCliente relaciona-se com fVendas em Cod_Cliente.


Até aí tudo normal, mas analisando meus dados eu preciso entender que coluna de datas eu vou utilizar para calcular quais são os novos clientes. Analisando com calma eu verifico que o cliente Rafael, embora tenha tido cadastro realizado em Dezembro de 2018 somente realizou a primeira Compra em Fevereiro de 2019. Então nesse modelo, e pode ser o seu caso, a data de cadastro não é a melhor para analisar se esse é um cliente novo ou não. Teremos que calcular então baseando-se na data da Primeira Venda.


Criei alguns filtros na minha tela de ano e meses e desabilitei a interação desses filtros com essa tabela base (que é uma mistura da fVendas com dCliente), para que os filtros aplicados não interfiram nessa tabela e possamos analisar melhor os dados.



2 - Calculando Novos Clientes

Então precisamos encontrar agora uma forma de calcular nos meses selecionados os novos clientes que é o nosso primeiro desafio, lembrando que não podemos utilizar a coluna de data de cadastro do cliente que não possui o dado correto de quando este faz a primeira aquisição.

Após alguns testes cheguei na seguinte expressão DAX.




Temos então nosso resultado acima que no mês de Fevereiro de 2019 eu tive dois novos clientes.

Mas essa forma é bem complexa não é?

Imagina então, se isso foi somente para calcular quantos novos clientes existem, você consegue pensar no tamanho e complexidade da expressão para calcular o faturamento desses novos clientes?

O problema que muitas vezes queremos resolver tudo com modelagem (Relacionamento e DAX), o que nem sempre é a melhor abordagem, pois se tivermos dados melhor tratados que já venham com informações mais prontas poderemos trabalhar melhor e dar menos "trabalho" ao DAX, melhorando assim a performance dos nossos relatórios.

3 - Tratando os Dados no Power Query Editor

Então vamos para o Power Query melhorar o nosso modelo de dados afim de facilitar o trabalho para o DAX.

O que iremos fazer agora é levar para o nosso cadastro de clientes uma nova coluna de datas com as Datas da primeira Compra de cada um dos nossos clientes.

Vamos então inciar duplicando nossa tabela fVendas clicando com o botão direito nela na área de Consultas e indo em Referencia



Uma vez duplicada iremos garantir que a nossa coluna de datas está em ordem decrescente pois será importante para identificarmos a data da primeira compra de cada cliente.


Selecionando a coluna de Cod_Cliente iremos clicar no botão direito e ir em "Agrupar por..."


E vamos então alterar o nome da nova coluna para "Agrupado" e em operação vamos selecionar a opção "Todas as Linhas" e pode dar OK.


Isso criou uma coluna com tabelas encapsuladas com os dados agrupados pelo código do cliente.


Vamos agora criar uma nova coluna de tabelas encapsuladas incluindo dentro de cada tabela uma coluna índice iniciando em 1, pois assim saberemos que sempre que tiver um 1 em índice aquela terá sido a primeira compra.

Menu>Adicionar Coluna>Coluna Personalizada


Criando a nossa nova Tabela

Você pode verificar que numa função de Table em Power Query o primeiro argumento será sempre uma tabela, como temos na nossa coluna [Agrupado] tabelas, então podemos referenciar essa coluna como primeiro argumento da função. Os argumentos seguintes são, Nome da Coluna de índice, o índice inicial e o step, ou seja de quanto em quanto esse índice cresce.

= Table.AddIndexColumn([Agrupado], "indice", 1, 1)


E temos então nossa nova coluna de Tabelas encapsuladas agora com um índice dentro de cada uma delas.


Podemos então remover a primeira coluna "Agrupado".


E Vamos então agora expandir a coluna "Agrupado_ComIndice", extraindo somente "Data" e "indice".


Então vamos filtrar quem possui índice = 1 .


 E temos nossa tabela de Código de Clientes com a Data da primeira compra.


Vamos então levar esse dado para a nossa tabela de dimensão de Clientes, para que tenhamos uma unica tabela com esses dados, Nome, Código, Data de Cadastro e Data da Primeira Compra.

Iremos fazer isso indo em Pagina Inicial>Mesclar Consultas


Vamos selecionar na dCliente a coluna "Cod_Cliente" e na fVendas (2) a coluna "Cod_Cliente" e podemos dar OK.

Vai ser carregada uma coluna de tabelas encapsuladas da nossa fVendas (2) e vamos expandi-la selecionando apenas a coluna "Data" e na sequencia alterar o nome da coluna para "Data_PrimeiraCompra".




Vou desabilitar a carga da tabela fVendas(2) para que ela não apareça na minha modelagem, já que ela foi necessária apenas para criar um calculo. Cuidado para NÃO desabilitar a outra opção que é "Incluir na atualização do relatório".


4 - Agora Sim MODELAGEM - Calculando Novos Clientes.


Vamos então na nossa modelagem criar uma relação de Ambos sentidos entre dCalendario[Data] e dCliente[Data_PrimeiraCompra] , essa relação ficará inativa.


E criarmos então a nova medida com bem menos linhas para calcular os Nossos "novos Clientes.

Nessa função eu criei uma "CALCULATE" em que eu faço a contagem distintas de clientes ativando a relação entre dCliente e dCalendario usando como argumento da Filter da CALCULATE a função USERELATIONSHIP, que ativa o relacionamento para esse calculo especifico contido na minha calculate.

Dentro da USERELATIONSHIP a ordem de quem ficará no primeiro e no segundo argumento fará diferença então verifique se no seu exemplo no primeiro argumento esta a coluna da dimensão cliente e no segundo a coluna da dimensão Calendário.


Jogando essa função para dentro de um  Cartão temos então o mesmo resultado da função criada lá no inicio.


5 -  Calculando o Faturamento de Novos Clientes

A nossa segunda meta agora está mais próxima e iremos calcular os novos clientes.

Para isso preciso então dentro da minha função criar duas variáveis, datainicial e datafinal, que me trarão a menor data do período selecionado e a maior data do período selecionado.

Criaremos então uma "CALCULATE" que no primeiro argumento trará uma soma da minha fVendas[Valor] e usando também o "USERELATIONSHIP" usado no calculo da quantidade de clientes.

Se eu parasse apenas aqui o valor trazido iria ser errado, visto que ele iria identificar quais são os clientes novos no período selecionado e trazer TODAS as vendas em TODOS os períodos dos novos clientes, ou seja me traria a soma de vendas em períodos futuros ao selecionado.

Porque isso ocorre Rafael?

Simples, a USERELATIONSHIP é usada para ativar uma relação inativa e geralmente a utilizamos quando há outra relação ativa gerando ambiguidade de filtro, pois lembrem que a minha dCalendario filtra também a fVendas mas também a minha dCliente filtra a fVendas pelo código do cliente. Então quando ativamos a relação da dCalendário com a dCliente via "USERELATIONSHIP", automaticamente o Power BI desabilita (para esse calculo) a relação ativa entre dCalendario e fVendas, deixando assim a fVendas sem FILTRO DE DATA, ou seja para o calculo da expressão sum(fVendas[Valor]) ele vai pegar as vendas de todos os Periodos, filtrados apenas pelos clientes filtrados na "USERELATIONSHIP".

Portanto iremos usar um "Filtro Manual" na fVendas com as variaveis datainicial e datafinal inserindo um terceiro argumento na "CALCULATE" com a função "DATESBETWEEN"


Calculo finalizado jogamos a Medida em um Cartão e está calculando exatamente o faturamento de novos clientes no período de Fevereiro de 2019.


E é isso pessoal, espero que vocês tenham curtido esse artigo tanto quanto eu curti de faze-lo.
Usem, Abusem...

E se você chegou ao final desse artigo merece claro o link do Arquivo:

http://bit.ly/2HzBbcn

Grande abraço e até a próxima.

Comentários

  1. Mitoso como sempre ! Excelente exemplificação de um indicador complexo de se calcular , valeu mesmo Rafael!
    * Ainda bem que colocou o arquivo no final pq eu já ia pedir 😁

    ResponderExcluir
  2. Muito Bom Rafael! Sempre apanhamos pra conseguir essas informações.

    ResponderExcluir
  3. Parabéns Rafael, ainda não tinha visto essa abordagem para clientes novos. Bem bolado.

    ResponderExcluir
  4. Muito bom Rafael bacana aproveitando o assunto na questão de grande volumes de dados no caso do Powerbi qual seria a melhor abordagem de tratamento de dados modelagem para que sim depois possamos consumir no powerbi .

    ResponderExcluir
  5. Rafael meu nobre, obrigado pela excelente explicação tem ajudado muita gente com seu blog e seus vídeos. Parabéns

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

[Power BI] Atualização MARÇO 2020 !!!!

Atualização Power BI Março de 2020!
Olá meus queridos, saiu agorinha a pouco a atualização do nosso Power BI Desktop de Março de 2020.

A atualização você pode fazer aqui:

https://www.microsoft.com/pt-BR/download/details.aspx?id=58494

Alguns itens você pode acompanhar aqui nesse rápido artigo pra sair brincando hoje mesmo com a sua atualização.

1) Botão de "pesquisar" nos filtros laterais
Muitas vezes você tem uma série de filtros em uma página ou relatório e é dificil encontrar aquele filtro específico, bem agora você com o botão de pesquisa pode procura-lo muito mais fácil utilizando o nome dele. Por enquanto ainda não é possível utiliza os "sinônimos" que você pode criar para cara coluna, tabela, ou medida na área de modelo, mas quem sabe em breve né?

2) Ordenar Tabela por mais de uma Coluna 
Esse é um dos grandes pedidos da comunidade, e veio através do ideas.powerbi.com , agora você pode, como no excel, ordenar uma tabela por mais de uma coluna bastando utiliza…

Power BI Service - O Publicar na Web não está disponível para mim, e agora?

Olá seus pão duro que adoram publicar link público, tudo bem com vocês?

Hoje vamos dar uma mãozinha para você que por algum motivo arrancou todos os fios de cabelo da cabeça porque não viu mais a opção de Publicar na Web disponível no seu Power BI.

Antes também gostaria de te fazer dois convites:

O segundo, como sempre te convido a conhecer meu canal no YouTube, se inscrever e compartilhar os conteúdos que faço sempre com muito carinho para todos vocês (coisa melosa),

https://youtube.com/rafaelmendonca

Dados os recados vamos para nosso problema...

1) Seu dia amanheceu assim...
Numa bela manha você decide publicar seu relatório e compartilhar para toda a rede e se depara com essa situação:


Cara quem roubou meu botão de "Publicar na Web"?

Mas não se desespere isso pode ser uma configuração que o administrador do tenant (do seu site no serviço do PBI) ou até mesmo você desavisadamente alterou.

2) Verificando a Opção Desabilitada...
A partir daqui você precisa ter acesso de admi…

Power BI - Colocando sua dCalendario em "Ordem"

Power BI - Colocando sua dCalendario em "Ordem"
Olá Princesas e Princesos.

Hoje iremos brincar, novamente, com dCalendario.

É um assunto legal, uma estrutura praticamente obrigatória, então vamos explora-la ainda mais.

Se você já entende o conceito de ordenar as linhas da coluna da dCalendário de forma a ficar sempre tudo na ORDEM crescente ou DECRESCENTE de Datas, Meses, Anos, Semanas, e etc esse artigo pode ser um tanto quanto boring pra você, então aconselho a procurar outro meio de vida.

MAS ANTES... adivinhem?

Não tá inscrito no canal se inscreve lá www.youtube.com/rafaelmendonca

Exemplo 1 - Ordenando coluna de Nome do Mês.
Uma das colunas que costumamos criar na dCalendario é a Mês Nome (janeiro, fevereiro, março...)

Por padrão a ordenação de uma coluna sempre é ela mesmo, ou seja numa coluna com dados de texto a ordenação vai ser alfabética, e seus meses serão ordenados da seguinte forma:

abril, agosto, dezembro, fevereiro, janeiro, julho, junho, maio, março, novembro…