Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Lake com Python + DuckDB + Parquet


Projeto para demonstrar a implementação simples de um ELT através de um Data Lake criado com Python, DuckDB e Parquet.

O que você encontrará aqui:


  • Armazenamento em formato Parquet dos dados;
  • Processamento realizado com DuckDB;
  • Suporte a formatos de entrada em Pandas e Polars;
  • Particionamento de dados por data;
  • Consultas SQL nativas;

O que demonstraremos:


  • Velocidade de processamento do DuckDB;
  • Baixo custo de implementação;
  • Tipo mais eficiente de armazenamento;

Estrutura do Projeto


  • datalake.py: Script principal com a implementação do Data Lake;
  • data/: Pasta que armazena os dados;
  • requirements.txt: Lista as bibliotecas que são as dependências do projeto;
  • README.md: O arquivo que documenta o projeto;

Funcionalidades implementadas


  • Ingestão de dados;
  • Aramazenamento em formato Parquet;
  • Consultas SQL no DuckDB;
  • Análise de dados;
  • Particionamento de dados;
  • Versionamento automático;
  • Logging das operações;

Fluxo dos Dados:


1. Ingestão dos Dados

Feita em dois formatos principais:

  • Através de Pandas;
  • Através de Polars;

Exemplo de ingestão:

# Dados de exemplo
data = pd.Dataframe({
    'id': range(1,6),
    'nome': ['Maria', 'Marta', 'Marcos', 'Mateus', 'Michel'],
    'idade': [25, 37, 19, 41, 30],
    'data_criacao': pd.date_range(start='2026-01-01', periods=5)
})

# Ingestão particionando
file_path = dl.ingest_data(data, 'usuarios', partition_by='data_criacao')

2. Armazenamento

Dados armazenados seguindos os passos: 1. Conversão para Pandas se necessário; 2. Marcado com timestamp para o versionamento; 3. Armazenamento em arquivo Parquet;

Estrutura criada no armazenamento:

data/
 |-- usuarios_20260101_120000.parquet
 |-- usuarios_20260102_120000.parquet
 |-- ...

3. Consulta para análises

Realizar consulta nos dados com SQL através do DuckDB:

# Consulta
query = """
SELECT nome, idade
FROM usuarios
WHERE idade >= 30
"""
result = dl.query_data(query)


Requisitos


  • Python 3.12+
  • Dependências descritas no requirements.txt

Como instalar


  1. Clone o repositório;
  2. Crie um ambiente virtual:
python -m venv venv
source venv/bin/activate # Linux/Mac
# ou
.\venv\Scripts\activate # Windows
  1. Instale as dependências:
pip install -r requirements.txt

Como usar


Execute o script principal:

python datalake.py

Exemplo de uso:


    dl = Datalake()

    data = pd.DataFrame({
        'id': range(1, 6),
        'nome': ['Maria', 'Marta', 'Marcos', 'Mateus', 'Michel'],
        'idade': [25, 37, 19, 41, 30],
        'data_criacao': pd.date_range(start='2026-01-01', periods=5)
    })

    file_path = dl.ingest_data(data, 'usuarios', partition_by='data_criacao', mode='append')

    dl.register_parquet_file(file_path, 'usuarios')

    query = """
    SELECT nome, idade
    FROM usuarios
    WHERE idade >=30
    """

    result = dl.query_data(query)
    print(result)

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages