Este projeto implementa um Data Warehouse modelado dimensionalmente para E-Commerce utilizando PostgreSQL, Docker e Python. Com a centralização dos dados de vendas, clientes, avaliações e produtos podemos extrair insights estratégicos.
Informações úteis sobre o dataset:
O conjunto de dados utilizado contém informações de 100 mil pedidos de 2016 a 2018 feitos em vários marketplaces no Brasil. Seus recursos permitem visualizar um pedido em múltiplas dimensões: desde status do pedido, preço, desempenho de pagamento e frete até localização do cliente, atributos do produto e finalmente avaliações escritas pelos clientes.
Estrutura do Dataset:
- Docker Compose (Obrigatório) & Docker CLI (Opcional)
- PostgreSQL
- Python
- Libs Python
Para a construção do Datawarehouse, separei em 3 etapas:
- Processamento dos Dados para a Camada Trusted
- Processamento dos Dados para a Camada Refined
- Carregamento dos Dados para o Datawarehouse
Nessa etapa, o processamento e limpeza dos dados da camada BRUTA(Raw) visa tornar os nosso dados confiáveis para a modelagem dimensional. O script principal se encontra na pasta /etl_scripts/processing_trusted.py
, porém a construção de todo raciocínio e tomada de decisões se encontra nos notebooks da camada trusted.
Nessa etapa, o processamento e limpeza dos dados da camada TRUSTED visa tornar os nossos dados refinados e prontos para a modelagem analítica e relatórios. O script principal se encontra na pasta /etl_scripts/processing_refined.py
, porém a construção de todo raciocínio e tomada de decisões se encontra nos notebooks da camada refined, seguindo a mesma lógica dos notebooks da trusted.
Antes de continuar para a etapa final, com os dados já refinados, segue o resultado da nossa modelagem dimensional:
Agora com nosso modelo definido, construi um script python que me ajudasse a automatizar o processo de construção do datawarehouse via python, sem necessidade de executar nenhum código SQL.
Nesse código acontece a automatização da criação das tabelas e automatização da criação das queries de inserções.
Segue o Script principal:
- Caso precise entender o processo de construção dos scripts, acompanhe os notebooks nas pasta: notebooks_trusted e notebooks_refined para entender melhor o processo e as decisões que resolvi tomar para a transformação dos dados.
- Siga o README para uma visão geral e links para notebooks específicos.
- Antes de iniciar a execução dos scripts de processamento, é necessário que baixa as libs através do comando:
pip install -r requirements.txt
- Navegue até a pasta
etl_scripts
. - Execute o script
processing_trusted.py
para iniciar o processamento dos dados (É necessário que você altere o path para o seu dataset que você pode baixar aqui.)
python processing_trusted.py
- Com os dados confiáveis: Execute o script
processing_refined.py
para iniciar o refinamento dos dados.
python processing_refined.py
- Agora com os dados confiáveis, antes de carregar eles com nosso script. Será necessário você alterar as variáveis
DB, USER, PASS
com as suas credenciais ou executar o docker-compose através do seguinte comando:
docker-compose up -d
-
Caso tenha utilizado o docker-compose, atualize as variáveis
DB, USER, PASS
com as credencias no arquivo docker-compose.yml -
Com o nosso banco de dados relacional em execução na nossa máquina local e as variáveis alteradas devidamente podemos executar o carregamento da nossa modelagem relacional para o nosso banco de dados.
python load_to_dw.py
- E assim teremos nosso Datawarehouse construído, caso queira visualizar com mais detalhes utilize o
pgAdmin
ou SGBD a sua escolha. Minha recomendação é a utilização doDatagrip
caso queria visualizar de forma mais robusta e interativa.
-
Link para o dataset: Dataset
-
Notebooks
-
Scripts
-
Docker Compose: docker-compose.yml
-
Libs Python: requirements.txt
-
Resultado Modelagem Dimensional: modelagem-dimensional.png