Skip to main content

A lightweight ELT framework in pure Python — dbt meets dlt

Project description

🔥 DataForge (DFG)

Motor de ELT em Python puro — dbt meets dlt. Simples, rápido, sem dependências pesadas.

PyPI version Python License: MIT Status

O DataForge unifica ingestão e transformação de dados em uma única ferramenta de linha de comando. Escreva modelos Python para extrair dados de qualquer fonte e modelos SQL com Jinja2 para transformá-los — tudo no mesmo pipeline, com DAG automático, testes, snapshots SCD2 e documentação visual incluídos.

pip install dataforge-dfg[duckdb]

⚡ Início em 60 segundos

# Instala com DuckDB
pip install dataforge-dfg[duckdb]

# Cria o projeto
mkdir meu_projeto && cd meu_projeto
dfg init

# Executa o pipeline
dfg run

# Visualiza o grafo de dependências
dfg docs --serve

✨ O que o DataForge faz

Funcionalidade Comando
Ingestão via Python (APIs, arquivos, DBs) dfg ingest
Transformação SQL com Jinja2 + DAG automático dfg transform
Pipeline completo (ELT) dfg run
Testes de qualidade de dados dfg test
Snapshots SCD Tipo 2 dfg snapshot
Carga de CSVs estáticos dfg seed
Documentação HTML com grafo interativo dfg docs
Compilação Jinja2 (dry-run) dfg compile
Diagnóstico do ambiente dfg debug
Busca nos logs dfg log

🗄️ Bancos Suportados

pip install dataforge-dfg[duckdb]    # DuckDB
pip install dataforge-dfg[postgres]  # PostgreSQL
pip install dataforge-dfg[mysql]     # MySQL
pip install dataforge-dfg[all]       # Todos
# SQLite já vem embutido no Python

📝 Exemplo Rápido

Modelo Python — Ingere dados de uma API:

# models/ingest_produtos.py
DEPENDENCIES = []

def model(context):
    import urllib.request, json
    with urllib.request.urlopen("https://api.exemplo.com/produtos") as r:
        return json.loads(r.read())["data"]

Modelo SQL — Transforma os dados ingeridos:

-- models/stg_produtos.sql
{{ config(materialized='table') }}

SELECT
    id          AS produto_id,
    UPPER(nome) AS nome,
    preco::FLOAT AS preco
FROM {{ ref('ingest_produtos') }}
WHERE ativo = true

Contrato de dados — Garante qualidade:

# models/schema.yml
version: 1
models:
  - name: stg_produtos
    columns:
      - name: produto_id
        tests: [not_null, unique]
dfg run     # executa tudo
dfg test    # valida os contratos

📚 Documentação Completa

Consulte o arquivo DOCUMENTACAO.md para o guia completo com todos os comandos, casos de uso e exemplos.


🤝 Contribuindo

Contribuições são bem-vindas! Veja CONTRIBUTING.md para as diretrizes.

git clone https://github.com/seu-usuario/dataforge
cd dataforge
python -m venv .venv && source .venv/bin/activate  # ou .venv\Scripts\Activate.ps1
pip install -e ".[dev]"
pytest

📄 Licença

MIT © Matheus — veja LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dataforge_dfg-0.1.0.tar.gz (35.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dataforge_dfg-0.1.0-py3-none-any.whl (40.1 kB view details)

Uploaded Python 3

File details

Details for the file dataforge_dfg-0.1.0.tar.gz.

File metadata

  • Download URL: dataforge_dfg-0.1.0.tar.gz
  • Upload date:
  • Size: 35.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dataforge_dfg-0.1.0.tar.gz
Algorithm Hash digest
SHA256 b330ea51aba12f233c08ffaccc83ae547ecd6902beca430bce9d205579619f8c
MD5 1913f11e792158febcb3ea718816810b
BLAKE2b-256 f32d2f26e276ca9867c8948449773bb3ec5cc1b0581772e2734868a425c2f7a2

See more details on using hashes here.

File details

Details for the file dataforge_dfg-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dataforge_dfg-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 40.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for dataforge_dfg-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6044257590cdb289b0eb04032ca5ae30638b7e3b7f7acacfe49c52878bda975
MD5 5b5c7e59b1519ea5e65627480d0b46d3
BLAKE2b-256 edf45dfc771abd8d2f54b19e40089987bdcb667671f9e28761910f760400dbd4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page