Alejandría

Busca en Alejandría

Herramientas

Data Contract CLI

Herramienta de terminal para crear, validar y probar contratos de datos.

01

En pocas palabras

Herramienta de terminal para crear, validar y probar contratos de datos.

Qué problema resuelve

Cambios de estructura y calidad que rompen intercambios entre productores y consumidores.

Cuándo utilizarlo

Productos de datos. Ejemplo: comprobar un contrato antes de publicar una tabla.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

En el Radar compartido: Trial (valoración de la edición aportada).

Cómo funciona

Interpreta definiciones del contrato y ejecuta comprobaciones sobre estructuras y datos compatibles. Puede integrarse en CI para detectar incompatibilidades temprano.

Ejemplo de uso

Definir columnas, tipos y reglas de calidad de pedidos. La pipeline verifica la definición y prueba datos del entorno antes de promover un cambio de esquema.

Qué es un contrato de datos

Un acuerdo versionado entre quien produce un conjunto de datos y quienes lo consumen. Describe esquema, semántica, calidad, SLA (frescura, disponibilidad), propietario y condiciones de uso. Es la pieza que hace operativo el data product thinking.

Ejemplo de contrato (ODCS v3)

apiVersion: v3.0.2
kind: DataContract
id: pagos-recibidos
name: Pagos recibidos
version: 1.1.0
status: active
servers:
  - server: produccion
    type: postgres
    host: analytics.internal
    port: 5432
    database: finanzas
    schema: cartera
schema:
  - name: pagos
    properties:
      - name: pago_id
        logicalType: string
        required: true
        unique: true
      - name: credito_id
        logicalType: string
        required: true
      - name: importe
        logicalType: number
        required: true
        quality:
          - type: sql
            description: No hay importes nulos ni negativos
            query: SELECT COUNT(*) FROM cartera.pagos WHERE importe <= 0
            mustBe: 0
      - name: fecha_pago
        logicalType: date
        required: true

Comandos principales

pip install 'datacontract-cli[all]'

datacontract lint pagos.odcs.yaml                    # valida el contrato
datacontract test pagos.odcs.yaml --server produccion # comprueba esquema y calidad contra datos reales
datacontract breaking v1.yaml v2.yaml                 # detecta cambios incompatibles
datacontract export pagos.odcs.yaml --format sql      # genera DDL; también dbt, avro, jsonschema…
datacontract import --format sql --source esquema.sql # crea un contrato desde un esquema existente

Soporta servidores como PostgreSQL, BigQuery, Snowflake, Databricks, S3 (Parquet, JSON, CSV) y Kafka, entre otros.

Cambios compatibles e incompatibles

Cambio Tipo Acción
Añadir una columna opcional Compatible Versión menor
Hacer obligatoria una columna existente Incompatible Versión mayor y aviso a consumidores
Cambiar el tipo o eliminar una columna Incompatible Periodo de convivencia con ambas versiones
Endurecer una regla de calidad Puede romper Probar contra datos actuales antes de publicar

En el pipeline

  1. lint y breaking en el pull request que modifica el contrato o el modelo de datos.
  2. test tras cada carga en el entorno de staging o producción.
  3. Publicación del contrato en un catálogo para que los consumidores lo encuentren.

Criterios de implementación

Confirmar formato y versión soportados, como ODCS, y capacidades del conector. Versionar contratos y acordar cómo se gestionan excepciones y cambios incompatibles.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.