Una librería modular para construir data pipelines con arquitectura medallion
Project description
Medallion ETL
Una librería modular para construir data pipelines con arquitectura medallion (Bronze-Silver-Gold).
Características
- Arquitectura medallion (Bronze-Silver-Gold) para procesamiento de datos
- Interfaz simple para definir nuevos pipelines
- Funciones reutilizables para cada capa del proceso
- Modularidad clara entre extracción, validación y carga
- Compatibilidad con SQLAlchemy para persistencia en bases de datos
- Integración con Prefect para orquestación de flujos
- Validación de datos con Pydantic
- Procesamiento eficiente con Polars
Requisitos
- Python 3.11+
- polars>=1.30
- pydantic>=2.7
- sqlalchemy>=2.0
- prefect>=2.0
Instalación
pip install medallion-etl
O desde el código fuente:
git clone https://github.com/usuario/medallion-etl.git
cd medallion-etl
pip install -e .
Estructura de la librería
medallion_etl/
├── bronze/ # Capa de ingesta de datos crudos
├── silver/ # Capa de validación y limpieza
├── gold/ # Capa de transformación y agregación
├── core/ # Componentes centrales de la librería
├── pipelines/ # Definición de flujos completos
├── schemas/ # Modelos Pydantic para validación
├── connectors/ # Conectores para diferentes fuentes/destinos
├── utils/ # Utilidades generales
├── config/ # Configuraciones
└——— templates/ # Plantillas para nuevos pipelines
Uso básico
Crear un pipeline simple
from medallion_etl.core import MedallionPipeline
from medallion_etl.bronze import CSVExtractor
from medallion_etl.silver import SchemaValidator
from medallion_etl.gold import Aggregator
from medallion_etl.schemas import BaseSchema
# Definir esquema de datos
class UserSchema(BaseSchema):
id: int
name: str
age: int
email: str
# Crear pipeline
pipeline = MedallionPipeline(name="UserPipeline")
# Agregar tareas
pipeline.add_bronze_task(CSVExtractor(name="UserExtractor"))
pipeline.add_silver_task(SchemaValidator(schema_model=UserSchema))
pipeline.add_gold_task(Aggregator(group_by=["age"], aggregations={"id": "count"}))
# Ejecutar pipeline
result = pipeline.run("data/users.csv")
print(result.metadata)
Usar con Prefect
from medallion_etl.core import MedallionPipeline
from medallion_etl.bronze import CSVExtractor
# Crear pipeline
pipeline = MedallionPipeline(name="SimplePipeline")
pipeline.add_bronze_task(CSVExtractor())
# Convertir a flow de Prefect
flow = pipeline.as_prefect_flow()
# Ejecutar flow
flow("data/sample.csv")
Ejemplos
Consulta la carpeta examples/ para ver ejemplos completos de pipelines:
weather_pipeline.py: Pipeline para procesar datos meteorológicossales_etl_pipeline.py: Pipeline ETL para datos de ventas
Contribuir
Las contribuciones son bienvenidas! Por favor, siente libre de enviar un Pull Request.
Licencia
MIT
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 medallion_etl-0.1.5.tar.gz.
File metadata
- Download URL: medallion_etl-0.1.5.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8e8667039cf86555c758f390da931dce8a0087b8a79cdf66e612b1238fa4e1f
|
|
| MD5 |
c1ecff2008959b2eb9ed05d8c0547044
|
|
| BLAKE2b-256 |
6adcc58276b815b7520a5c33bd8965a7b3348c807d0549625c4cd0c3d21b504e
|
File details
Details for the file medallion_etl-0.1.5-py3-none-any.whl.
File metadata
- Download URL: medallion_etl-0.1.5-py3-none-any.whl
- Upload date:
- Size: 25.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f80a2581fc0f46ff813380fb6b13ba97e18d636fcf052e9f3f465c07eed7514
|
|
| MD5 |
c623439afa46975894bc4ec386f468fc
|
|
| BLAKE2b-256 |
993162974fee50dfa1145db335a2c5e54eaba6350dd94ade8515cd1b5e1883a5
|