image

Access unlimited bootcamps and 650+ courses

50
%OFF
Article image
Júlio Droszczak
Júlio Droszczak18/11/2024 10:13
Share

🔹Gráfico de Pareto Usando o Dashboard IA/BI da Databricks

  • #SQL
  • #Databricks

Publicação - Júlio César Droszczak

Você já ouviu falar da Lei de Pareto?🤔Também conhecida como a regra 80/20, ela afirma que 80% dos resultados vêm de 20% das causas. Isso é um divisor de águas no mundo dos negócios, ajudando a identificar onde está o maior impacto e permitindo focar esforços no que realmente importa.

💡No meu caso: Utilizei o Databricks para criar um gráfico de Pareto, analisando as vendas por empresa e descobrindo quais delas compõem os 80% do volume de vendas. Vou te mostrar agora o passo a passo dessa construção e as técnicas aplicadas, com destaque para o uso de Window Functions🚀

Passo a Passo da Query 🔍

1️⃣ Agregação das Vendas Totais

Primeiro, agrupei as vendas totais de cada loja em um CTE chamado TotalVendas: 

WITH TotalVendas AS (
  SELECT
      empresa,
      SUM(valor_vendas) AS total_vendas
  FROM workshop.gold.notas
  WHERE DATE(dt_referencia) BETWEEN '{{dt_referencia.start}}' AND '{{dt_referencia.end}}'
  GROUP BY empresa
),

🔎 O que fiz aqui:

• Agrupei os dados: Totalizei as vendas por empresa no intervalo de datas fornecido.

• Esse é o primeiro passo para identificar quais empresas mais contribuem para o volume total.

2️⃣ Ordenação e Ranking das Lojas

Em seguida, apliquei o CTE RankedVendas para ordenar as empresas e calcular valores percentuais e acumulados: 

RankedVendas AS (
  SELECT
      empresa,
      total_vendas,
      RANK() OVER (ORDER BY total_vendas DESC) AS rank,
      total_vendas / SUM(total_vendas) OVER () AS pct_total,
      SUM(total_vendas) OVER (ORDER BY total_vendas DESC) AS vendas_acumuladas
  FROM TotalVendas
),

🔎 Técnicas utilizadas

• RANK(): Classifiquei as empresas pelo volume total de vendas.

• % de Contribuição (pct_total): Identifiquei a participação percentual de cada empresa.

• Vendas Acumuladas: Somei os valores de forma acumulativa.

3️⃣ Cálculo da Porcentagem Acumulada

No CTE PctAcumulado, calculei a porcentagem acumulada das vendas: 

PctAcumulado AS (
  SELECT
      *,
      vendas_acumuladas / SUM(total_vendas) OVER () AS pct_acumulado
  FROM RankedVendas
)

🔎 Aqui, respondi:

Quem compõe os 80%? A porcentagem acumulada identifica as empresas que mais impactam o volume total.

4️⃣ Seleção Final e Filtro de Pareto

Por fim, filtrei as empresas que compõem os 80% iniciais das vendas: 

SELECT
  empresa,
  ROUND(total_vendas, 0) AS total_vendas,
  ROUND(pct_acumulado * 100, 2) AS pct_acumulado
FROM PctAcumulado
WHERE IF(pct_acumulado <= 0.8, 'S', 'N') IN ({{flag_pareto}})
ORDER BY pct_acumulado
LIMIT {{top}}

🔎 Finalizando:

• Filtro Pareto: Seleciona apenas as empresas dentro dos 80% do total acumulado.

• Exibição: Limitei os resultados para mostrar apenas as lojas relevantes.

Resultado Final 🎯

1️⃣ Query Resultante: Aqui está a query completa que consolidou todas as etapas. 

WITH TotalVendas AS (
  SELECT
      empresa,
      SUM(valor_vendas) AS total_vendas
  FROM workshop.gold.notas
  WHERE DATE(dt_referencia) BETWEEN '{{dt_referencia.start}}' AND '{{dt_referencia.end}}'
  GROUP BY empresa
),

RankedVendas AS (
  SELECT
      empresa,
      total_vendas,
      RANK() OVER (ORDER BY total_vendas DESC) AS rank,
      total_vendas / SUM(total_vendas) OVER () AS pct_total,
      SUM(total_vendas) OVER (ORDER BY total_vendas DESC) AS vendas_acumuladas
  FROM TotalVendas
),

PctAcumulado AS (
  SELECT
      *,
      vendas_acumuladas / SUM(total_vendas) OVER () AS pct_acumulado
  FROM RankedVendas
)

SELECT
  empresa,
  ROUND(total_vendas, 0) AS total_vendas,
  ROUND(pct_acumulado * 100, 2) AS pct_acumulado
FROM PctAcumulado
WHERE IF(pct_acumulado <= 0.8, 'S', 'N') IN ({{flag_pareto}})
ORDER BY pct_acumulado
LIMIT {{top}}

 

2️⃣ Gráfico Interativo: O gráfico criado no Databricks permite a visualização interativa dos resultados, com filtros ajustáveis por parâmetros. 🖥️📊

Gráfico resultante:

image

Exemplo aplicado a um dashboard do databricks:

image

3️⃣ Demonstração em Vídeo: Confira o vídeo explorando o gráfico e extraindo insights valiosos dos dados. 👉 Assista agora!

Conclusão 💡

Este gráfico de Pareto no Databricks é uma poderosa ferramenta para identificar onde concentrar esforços e entender quais clientes ou empresas fazem a diferença no resultado.

📌Recursos e Técnicas Utilizados:

  • Conceito da Lei de Pareto (Regra 80/20): Para priorizar os itens de maior impacto.
  • Funções SQL Aplicadas:
  • Window Functions: Para calcular rankings, porcentagens e valores acumulados.
  • RANK() e OVER(): Para criar rankings e acumular vendas em ordem decrescente.
  • WITH(): Para organizar a query em etapas claras e reutilizáveis.
  • Parâmetros Dinâmicos ({{parametro_filtro}}): Para flexibilidade nos filtros e configurações do dashboard.

Espero que este conteúdo seja útil e inspire suas próximas análises!😉

Share
Comments (1)
Eliete Araújo
Eliete Araújo - 21/11/2024 10:39

Parabéns. Gostei bastante.