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.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b330ea51aba12f233c08ffaccc83ae547ecd6902beca430bce9d205579619f8c
|
|
| MD5 |
1913f11e792158febcb3ea718816810b
|
|
| BLAKE2b-256 |
f32d2f26e276ca9867c8948449773bb3ec5cc1b0581772e2734868a425c2f7a2
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6044257590cdb289b0eb04032ca5ae30638b7e3b7f7acacfe49c52878bda975
|
|
| MD5 |
5b5c7e59b1519ea5e65627480d0b46d3
|
|
| BLAKE2b-256 |
edf45dfc771abd8d2f54b19e40089987bdcb667671f9e28761910f760400dbd4
|