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.
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
lintybreakingen el pull request que modifica el contrato o el modelo de datos.testtras cada carga en el entorno de staging o producción.- 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.