Saltar a contenido

Spark · Delta Lake · Databricks

Pipelines de datos gobernados por contratos

DKOps es un framework en Python para construir lakehouses Delta con la arquitectura Medallion. Describes tus tablas y tus cargas en JSON, y el framework se encarga de crearlas, validarlas y mantenerlas. El mismo código corre en tu equipo y en Databricks.

Empezar Ver en GitHub

Capa 1
Landing
Archivos crudos en JSON, CSV o Parquet, o mensajes de Kafka.
Capa 2
Bronze
Datos tal como llegaron, con columnas de trazabilidad.
Capa 3
Silver
Estado actual, limpio y sin duplicados por clave de negocio.
Capa 4
Gold
Agregados y métricas listos para BI.

Qué resuelve

  • Contratos versionados


    El schema, las particiones, los permisos y las propiedades de cada tabla viven en JSON junto al código, no repartidos entre notebooks.

    Contratos

  • Ingesta declarativa


    Cuatro estrategias de promoción a Silver que eliges desde el contrato: full_merge, cdc_merge, incremental_replace y append_dedup.

    Ingesta

  • Escritura y lectura gobernadas


    TableWriter y TableReader validan contra el contrato antes de tocar la tabla, y aplican comentarios, máscaras y permisos por ti.

    Gobierno de tablas

  • Local y Databricks


    El framework detecta dónde corre y resuelve catálogos y rutas desde config.json. No hay ramas if databricks en tu pipeline.

    Runtime

  • Migraciones seguras


    SafeMigrator compara el contrato con la tabla real y genera solo los cambios que no pierden datos.

    Migraciones

  • Trazabilidad operativa


    Cada ejecución queda registrada en una tabla Delta que puedes consultar con SQL para auditoría y monitoreo.

    Operación

Un pipeline completo en pocas líneas

from DKOps.launcher import Launcher
from DKOps.ingestion.engine import IngestionEngine

Launcher("config/config.json")

engine = IngestionEngine.from_launcher(
    bronze_contracts_dir = "ingestion/batch",
    silver_contracts_dir = "ingestion/silver",
    tables_base_dir      = ".",
    ops_path             = "/tmp/ops/control",
)

engine.ingest_bronze()     # de Landing a Bronze
engine.promote_silver()    # de Bronze a Silver
engine.status()

Toda la lógica de qué leer, dónde escribir y cómo fusionar está en los contratos JSON. Si quieres ver cómo se arma un proyecto desde cero, sigue la guía de primeros pasos o abre alguno de los demos.