Sistema de CRM de Vendas para registrar e analisar os dados de vendas realizadas em um período específico, utilizando uma arquitetura moderna de ELT (Extract, Load and Transform).
Este projeto tem como objetivo criar um sistema de CRM de Vendas para registrar e analisar os dados de vendas realizadas em um período específico. Esses dados são extraídos do CRM de Vendas, carregados diretamente no banco de dados PostgreSQL e posteriormente são tratados pelo DBT Core.
A plataforma Render foi utilizada para subir um PostgreSQL Server na nuvem.
Task 01: Extrair os dados do CRM de Vendas e carregar no banco de dados
O script frontend
é responsável por criar um frontend simples através da biblioteca Streamlit para registrar os dados das vendas, e depois carregar esses dados diretamente no PostgreSQL, criando uma tabela vendas
no banco de dados.
Task 02: Transformar os dados
O DBT Core é responsável pela limpeza e transformação dos dados. Após instalar o dbt-postgres
e configurar o arquivo profiles.yml
, o DBT se conecta ao banco de dados PostgreSQL para ter acesso as tabelas.
A pasta models
define as transformações dos dados usando SQL. As transformações foram divididas em três camadas: bronze, silver e gold.
Para mais informações, acesse as pastas dbt_crm_vendas/docs
onde contém toda a documentação do projeto DBT.
.
├── LICENSE
├── README.md
├── dbt_crm_vendas
│ ├── docs
│ │ └── homepage.md
│ ├── models
│ │ ├── bronze
│ │ │ ├── bronze_vendas.sql
│ │ │ └── schema.yml
│ │ ├── gold
│ │ │ ├── gold_vendas_por_produto.sql
│ │ │ ├── gold_vendas_por_vendedor.sql
│ │ │ └── schema.yml
│ │ ├── silver
│ │ │ ├── schema.yml
│ │ │ └── silver_vendas.sql
│ │ └── sources.yml
│ └── dbt_project.yml
├── docs
│ └── index.md
├── exemplo.env
├── imagens
│ ├── fluxograma-dbt.jpeg
│ └── fluxograma-elt.jpeg
├── mkdocs.yml
├── profiles.yml
├── pyproject.toml
├── requirements.txt
└── src
├── contrato.py
├── database.py
└── frontend.py
Todas as etapas foram executadas no terminal bash
.
-
Clone o repositório localmente:
git clone https://github.com/ianlucasch/crm-de-vendas.git
-
Acesse a pasta do projeto:
cd crm-de-vendas
-
Instale o python versão 3.12.3:
pyenv install 3.12.3
-
Defina a versão local do python para 3.12.3:
pyenv local 3.12.3
-
Crie um ambiente virtual e ative-o:
python -m venv .venv source .venv/Scripts/activate
-
Instale todas as dependências do projeto:
pip install -r requirements.txt
-
Execute o script
frontend
:streamlit run src/frontend.py
-
Crie um novo projeto DBT:
dbt init dbt_crm_vendas cd dbt_crm_vendas
-
Configure a conexão com PostgreSQL:
Configure o arquivo
profiles.yml
com suas variáveis de ambiente para conectar o DBT ao PostgreSQL. O arquivo deve estar no diretório~/.dbt/
ou no diretório especificado pela variável de ambienteDBT_PROFILES_DIR
.Exemplo de
profiles.yml
:dbt_crm_vendas: outputs: dev: dbname: <DB_NAME> host: <DB_HOST> pass: <DB_PASS> port: <DB_PORT> schema: public threads: 1 type: postgres user: <DB_USER> target: dev
-
Verifique o estado do projeto:
dbt debug
-
Execute as transformações do DBT:
dbt run
Este README apresenta o passo a passo e as principais ferramentas utilizadas para a criação de um sistema de CRM de Vendas e transformação dos seus dados.