Documentação Técnica

Bastidores da análise de churn: origem dos dados, exploração em SQL, medidas DAX e processo analítico usado no dashboard.

Projeto
Análise de Churn e Retenção de Clientes – Telecom.
Base
Telco Customer Churn, com 7.043 clientes e variáveis de contrato, cobrança e serviços.
Ferramentas
SQL Workbench, Power BI, DAX e storytelling de dados.
Dataset

A base utilizada foi o dataset público Telco Customer Churn, disponível no Kaggle. O conjunto contém informações cadastrais e comerciais de clientes de telecom, incluindo tipo de contrato, tempo de permanência, serviços contratados, método de pagamento, cobranças mensais e status de churn.

Usei essa base por permitir uma análise completa de retenção: ela possui variáveis suficientes para investigar perfil, comportamento, relacionamento com o serviço e possíveis fatores associados ao cancelamento.

Ver dataset no Kaggle Voltar para o case
Processo analítico

A análise foi conduzida em etapas. Primeiro, busquei entender o tamanho do problema a partir da distribuição de churn e da taxa geral de cancelamento. Depois, segmentei os clientes por variáveis-chave, como contrato e tempo de permanência, para identificar onde o churn era mais concentrado.

  1. Importação do CSV no SQL Workbench.
  2. Exploração inicial da base e validação da variável de churn.
  3. Cálculo da taxa geral de churn.
  4. Segmentação por tempo de permanência e tipo de contrato.
  5. Criação de medidas no Power BI para construção dos visuais.
  6. Estruturação do dashboard em visão geral, análise de drivers e recomendações.
SQL 01 — Distribuição de clientes por status de churn

Para entender o comportamento geral da base, foi realizada uma agregação por status de churn. Essa consulta mostra quantos clientes permaneceram ativos e quantos cancelaram o serviço.

SELECT 
    Churn, 
    COUNT(*) AS total_clientes
FROM "Telco_Customer_Churn.csv"
GROUP BY Churn;
Query SQL com distribuição de clientes por status de churn

Essa etapa foi importante para dimensionar o problema antes de partir para análises mais específicas. A base indicou 5.174 clientes ativos e 1.869 clientes churnados.

SQL 02 — Taxa geral de churn

Após identificar a quantidade de clientes churnados, calculei a taxa geral de churn. Essa métrica mostra a proporção de clientes que cancelaram em relação ao total da base.

SELECT 
    ROUND(
        100.0 * SUM(CASE WHEN Churn = 'Yes' THEN 1 ELSE 0 END) / COUNT(*),
        2
    ) AS churn_rate_percent
FROM "Telco_Customer_Churn.csv";
Query SQL calculando a taxa geral de churn

O resultado foi uma taxa de churn de aproximadamente 26,5%, indicando que mais de um quarto dos clientes da base cancelaram o serviço.

SQL 03 — Churn por faixa de tempo de cliente

Para entender em qual momento da jornada o churn era mais crítico, os clientes foram agrupados por tempo de permanência. Essa análise ajudou a identificar se o cancelamento era mais comum em clientes novos ou antigos.

SELECT
    CASE
        WHEN tenure <= 12 THEN '0-12 meses'
        WHEN tenure <= 24 THEN '13-24 meses'
        WHEN tenure <= 48 THEN '25-48 meses'
        ELSE '49+ meses'
    END AS faixa_tenure,
    COUNT(*) AS total_clientes,
    SUM(CASE WHEN Churn = 'Yes' THEN 1 ELSE 0 END) AS clientes_churn,
    ROUND(
        100.0 * SUM(CASE WHEN Churn = 'Yes' THEN 1 ELSE 0 END) / COUNT(*),
        2
    ) AS churn_rate_percent
FROM "Telco_Customer_Churn.csv"
GROUP BY 1
ORDER BY churn_rate_percent DESC;
Query SQL com análise de churn por tempo de permanência

A análise mostrou que clientes com até 12 meses apresentaram churn próximo de 47%, tornando esse grupo o mais crítico. Esse resultado guiou a recomendação de priorizar onboarding e acompanhamento nos primeiros meses.

DAX — Medidas principais

No Power BI, criei medidas enxutas e reutilizáveis para sustentar os principais indicadores do dashboard. A ideia foi manter o modelo simples, evitando medidas desnecessárias e focando no que realmente seria usado nos visuais.

Churn Flag = IF('telco_customer_churn'[Churn] = "Yes", 1, 0)

Total Customers = COUNTROWS('telco_customer_churn')

Churned Customers = SUM('telco_customer_churn'[Churn Flag])

Churn Rate = DIVIDE([Churned Customers], [Total Customers])

Active Customers = [Total Customers] - [Churned Customers]
DAX — Segmentações usadas no dashboard

Além das medidas, criei colunas de segmentação para facilitar a leitura dos gráficos e transformar variáveis contínuas em grupos mais úteis para análise de negócio.

Tenure Group =
SWITCH(
    TRUE(),
    'telco_customer_churn'[tenure] <= 12, "0-12",
    'telco_customer_churn'[tenure] <= 24, "13-24",
    'telco_customer_churn'[tenure] <= 48, "25-48",
    "49+"
)

Charge Group =
SWITCH(
    TRUE(),
    'telco_customer_churn'[MonthlyCharges] < 35, "Low",
    'telco_customer_churn'[MonthlyCharges] < 70, "Medium",
    "High"
)
Como eu pensei a análise

A construção do projeto seguiu uma lógica progressiva: primeiro medir o problema, depois entender onde ele estava concentrado e, por fim, propor ações. Essa abordagem evitou um dashboard apenas visual e levou a uma análise mais conectada com decisão de negócio.

O ponto mais relevante foi perceber que o churn não estava distribuído de forma homogênea. Ele se concentrava principalmente em clientes de contrato mensal, clientes novos e grupos com maior sensibilidade a preço ou experiência.

Ver dashboard completo Ver case completo