Herramientas open source y rutas de aprendizaje · Python-first · en español

Todas las guías

Conceptos

Qué es un contrato de datos y cómo se escribe en OpenMetadata

Qué promete un contrato de datos además de la calidad, cómo se arma uno en OpenMetadata y qué parte comprueba la herramienta de verdad.

Revisada el 2026-09-11

Qué es un contrato de datos

Un contrato de datos es el acuerdo escrito entre quien produce un dato y quien lo consume: qué se entrega, con qué forma, para qué se puede usar y cuándo está disponible.

La analogía más útil es la de una API. Nadie integra un servicio sin saber qué devuelve y con qué garantías. Con una tabla, en cambio, lo normal es descubrir las reglas el día que algo se rompe: alguien renombró una columna, dejó de etiquetar un dato sensible o cambió el horario de carga, y el tablero de otro equipo amaneció mal.

La idea que más se confunde: un contrato no es una suite de pruebas de calidad. La calidad dice si el dato está bien. El contrato dice además quién responde por él, qué columnas se garantizan, para qué se puede usar —también por un agente de IA— y si sigue gobernado. La calidad es una parte del contrato, no el contrato.

Qué tiene adentro

Un contrato completo tiene siete partes. La diferencia que importa entre ellas es cuáles puede comprobar una herramienta y cuáles quedan declaradas por escrito:

Parte¿Se comprueba?Qué aporta al gobiernoQué dice
DetalleAlguien responde por la promesaNombre, responsable y descripción
Términos de usoNoLa finalidad del dato, que ninguna prueba de calidad miraUsos permitidos y no permitidos, también para agentes de IA
EsquemaControl de cambios: el productor sabe qué no puede tocar sin avisarLas columnas que se garantizan
Reglas semánticasQue el gobierno siga puesto, no solo que se haya puesto una vezCondiciones sobre los metadatos: responsable, etiquetas, dominio
SeguridadNoA quién está destinado el datoClasificación, quién consume y qué filas ve
CalidadQue el dato esté bienLas pruebas que forman parte del acuerdo
Acuerdo de servicio (SLA)NoCuándo se puede contar con el dato y cuánto duraFrecuencia de actualización, latencia, hora de disponibilidad, retención

La tabla sigue la estructura de OpenMetadata. El estándar abierto de contratos, ODCS (Open Data Contract Standard), organiza piezas equivalentes —esquema, calidad, acuerdo de servicio, equipo, roles— para que un contrato pueda viajar entre herramientas.

La prueba de que no es solo calidad

Un ejemplo sobre una tabla de clientes con datos de práctica. El contrato tiene tres reglas semánticas —la tabla tiene responsable, está marcada como dato sensible, pertenece a su dominio— y dos pruebas de calidad: identificador único y correo no nulo.

Se ejecutó tres veces. Antes de la segunda, a la tabla se le quitó la etiqueta de dato sensible. Los datos no cambiaron y las pruebas de calidad siguieron al 100%. El resultado:

El encabezado de la tabla muestra el aviso Contract Failed
El encabezado de la tabla muestra el aviso Contract Failed
El encabezado de la tabla muestra el aviso Contract Failed

La regla semántica «Marcada como dato personal» en rojo, y la calidad en verde con 2 de 2
La regla semántica «Marcada como dato personal» en rojo, y la calidad en verde con 2 de 2
La regla semántica «Marcada como dato personal» en rojo, y la calidad en verde con 2 de 2

El contrato falló y señaló la regla por su nombre, mientras la calidad seguía en verde. Una suite de pruebas sobre esa tabla no habría dicho nada: los datos estaban bien. Lo que se rompió es que la tabla dejó de estar gobernada —para la búsqueda, las políticas de acceso y cualquier agente que la consulte, pasó a ser un dato cualquiera—, y eso es justamente lo que un contrato vigila y una prueba de calidad no.

Cómo se escribe uno en OpenMetadata

Las capturas son de OpenMetadata 1.12 sobre una base de ejemplo; en versiones nuevas algún rótulo puede cambiar de lugar. El paso a paso completo, con todas las opciones, vive en la documentación oficial (enlace al final). Acá va el recorrido con el criterio de cada paso.

Antes de empezar: la tabla ya catalogada y curada —con responsable, dominio y etiquetas—, porque el contrato no carga esas cosas: comprueba que estén. Y las pruebas de calidad ya creadas sobre la tabla. Para ejecutar el contrato hace falta además el servicio de ingesta de OpenMetadata encendido: las pruebas de calidad corren ahí.

1. Abrir el asistente. En la ficha de la tabla, pestaña ContractAdd Contract. Hay tres formas de darlo de alta: escribirlo en la interfaz, o importarlo en el formato propio de OpenMetadata o en ODCS.

El menú Add Contract con Create Contract with UI, Import OM e Import ODCS
El menú Add Contract con Create Contract with UI, Import OM e Import ODCS
El menú Add Contract con Create Contract with UI, Import OM e Import ODCS

2. Detalle: quién responde. El título funciona como identificador —forma parte del nombre completo del contrato—, así que conviene sin espacios ni acentos. El responsable suele ser un equipo. Completá esta pestaña primero: el botón Save se enciende al pasar por la pestaña de reglas aunque falte el título, y si lo presionás, el error que aparece es un mensaje técnico del servidor, no un "falta el título".

Contract Details con título, equipo responsable y descripción
Contract Details con título, equipo responsable y descripción
Contract Details con título, equipo responsable y descripción

3. Términos de uso: para qué se puede usar. Es el único lugar donde queda escrito el uso permitido del dato. Funciona bien en tres párrafos: uso permitido, uso no permitido y qué puede hacer un agente de IA con la tabla.

Terms of Service con usos permitidos, no permitidos y la cláusula para agentes de IA
Terms of Service con usos permitidos, no permitidos y la cláusula para agentes de IA
Terms of Service con usos permitidos, no permitidos y la cláusula para agentes de IA

4. Esquema: qué se garantiza. Se marcan las columnas que usan los consumidores, no todas. Cada columna marcada es un compromiso; las demás el productor las puede cambiar sin romper el acuerdo.

5. Reglas semánticas: el corazón del contrato. Cada regla tiene nombre, descripción y una condición armada con tres desplegables: campo, operador y valor. Los campos disponibles son metadatos de la tabla: responsable, descripción, etiquetas, nivel de criticidad, dominio, producto de datos, entre otros.

La regla «Marcada como dato personal»: Tags, Contains, Sensitive
La regla «Marcada como dato personal»: Tags, Contains, Sensitive
La regla «Marcada como dato personal»: Tags, Contains, Sensitive

Dos criterios. Una regla por cosa: cuando el contrato falla, muestra el nombre de la regla que no se cumplió, así que tres reglas separadas dicen qué se rompió y una sola con todo adentro dice solamente que algo se rompió. Y escribí la descripción como la explicación que va a leer quien encuentre el contrato en rojo, porque es el texto que se guarda como motivo.

6. Seguridad: a quién está destinado. Clasificación, política de acceso, identidades y filtro de filas. Todo es texto libre: la clasificación no se toma de las etiquetas del catálogo y la política no se aplica. Es una declaración.

Security con la clasificación, la política de acceso y las identidades que la consumen
Security con la clasificación, la política de acceso y las identidades que la consumen
Security con la clasificación, la política de acceso y las identidades que la consumen

7. Calidad. Se eligen, entre las pruebas que ya existen sobre la tabla, las que forman parte del acuerdo. OpenMetadata crea para el contrato su propio agente de ejecución y lo borra junto con él.

8. Acuerdo de servicio. Frecuencia de actualización, latencia máxima, hora a la que el dato tiene que estar disponible, retención y la columna que marca cuándo se actualizó cada fila.

SLA con frecuencia, latencia, hora de disponibilidad, retención y columna de actualización
SLA con frecuencia, latencia, hora de disponibilidad, retención y columna de actualización
SLA con frecuencia, latencia, hora de disponibilidad, retención y columna de actualización

9. Guardar y ejecutar. Al guardar, el contrato queda aprobado: no hay paso de revisión en el asistente. Guardar no lo ejecuta; la rueda dentada de arriba tiene Run now, y además OpenMetadata trae una aplicación que ejecuta todos los contratos una vez por día. Con el resultado, la frontera de la tabla de arriba se ve en pantalla: esquema, reglas semánticas y calidad llevan su estado; acuerdo de servicio y seguridad no llevan ninguno.

El SLA sin estado y el esquema con Schema Status Passed
El SLA sin estado y el esquema con Schema Status Passed
El SLA sin estado y el esquema con Schema Status Passed

Cada ejecución queda en el historial del contrato. En el ejemplo: cumple, incumple, cumple.

El historial de ejecuciones del contrato: verde, rojo, verde
El historial de ejecuciones del contrato: verde, rojo, verde
El historial de ejecuciones del contrato: verde, rojo, verde

Lo que conviene saber antes de confiar en él

Medido ejecutando, no leído en un folleto:

  • Tres de siete partes se comprueban. Esquema, reglas semánticas y calidad. Términos, seguridad y acuerdo de servicio quedan escritos junto al dato, y hacerlos cumplir depende de otros controles: permisos, monitoreo de frescura, revisión de usos.
  • Un cambio de tipo no hace fallar el contrato. El esquema falla si una columna garantizada deja de existir, pero si cambia de tipo sigue en verde: de un entero a texto queda anotado como diferencia; de un entero a otro entero más grande, ni eso.
  • Nace aprobado. Si tu organización necesita aprobación formal de un contrato, ocurre fuera de la herramienta.
  • La exportación a ODCS pierde la parte de gobierno. De un contrato escrito en la interfaz no salen el texto de los términos de uso, ni las reglas semánticas, ni las de calidad. Para moverlo a otra instalación de OpenMetadata, la exportación propia (Export) lo lleva completo.

Cuándo vale la pena escribir uno

Vale la pena cuando una tabla la consumen varios equipos o agentes de IA, cuando tiene datos sensibles, o cuando los cambios del productor ya rompieron algo aguas abajo. Ahí el contrato convierte en regla lo que hoy es una conversación que se olvida.

Todavía no, si la tabla no tiene responsable ni etiquetas: el contrato comprueba un gobierno que tiene que existir antes. El primer paso es catalogar y curar (OpenMetadata). Tampoco rinde en una tabla que solo usa quien la produce: no hay nadie del otro lado del acuerdo.

Y si lo que necesitás es solamente probar que el dato está bien, lo que buscás es una herramienta de calidad, como Great Expectations: el contrato empieza donde esa pregunta termina.

Para ir más profundo

Herramientas de esta ruta