A ideia do projeto é gerar dados de acordo com o desejo do usuário, para que possamos simular uma situação real de utilização de dados, para tratamento comparando o desempenho do Pandas e DuckDB
Para esse projeto o Gestor solicitou que fosse extraido o resultado do total de vendas, como também total de vendas por produtos e por clientes. Para gerar arquivos nos formatos csv e parquet, destas informações para o time de DataViz poder criar incríveis e infaliveis dashboards.
Ao utilizar o pandas para o tratamento de dados o mesmo desempenho todas o pipeline de dados em aproximadamente 1.008 segundos (Cerca de 16 minutos), exportando os dados tanto em csv, como também em parquet. Conforme imagem abaixo:
Ao utilizar o DuckDB, para realizar o mesmo pipeline de dados ele levou 584,83 segundos (Menos de 10 minutos). Conforme imagem abaixo:
-- O DuckDB teve uma perfomace 72% melhor do que o Pandas
- Processador: AMD Ryzen 3 5300U with Radeon Graphics 2.6 Ghz
- RAM: 8 GB DDR-4
- SSD Sata: 256 GB
- SO: Windows 11 23H2
- Python
- Pandas
- Faker
- DuckDB
- Pyarrow
- Fastparquet
- TQDM
- Taskipy
- Mkdocs
- Clone o repositório:
git clone https://github.com/luhborba/duckdb-primeirouso.git
cd duckdb-primeirouso
- Configure a versão correta do Python com
pyenv
pyenv install 3.12.1
pyenv local 3.12.1
- Ativando Poetry
poetry env use 3.12.1
poetry shell
- Insatalando dependências
poetry install
- Rodando a Documentação
poetry run task docs
- Gerando dados:
Para gerar dados você pode acessar o arquivo gerar e definir os parametros que deseja, os parametros são: Quantidade de Linhas, Quantidade de Clientes e nome do arquivo (que por padrão é dados.csv, caso você mude deve mudar também nós arquivos de teste).
poetry run task gerar
- ETL com Pandas:
poetry run task pandas
- ETL com DuckDB:
poetry run task duck
- Caso realize o ajuste no código use o código abaixo para refatorar segundo biblioteca
BLACK
:
poetry run task ajust_code