Data Contracts¶
Contratos de datos versionados productor-consumidor para todos los productos Gold.
Estructura¶
Cada contrato vive en su propio archivo <contract_id>.yml siguiendo la spec en _schema.json.
Workflow¶
- Cambio propuesto: abrir PR modificando el contrato.
- CI ejecuta:
- Lint del YAML contra el schema.
- Schema diff vs producción → detecta breaking changes.
- Si breaking: requiere aprobación de cada consumidor listado.
- Merge: trigger a producción actualizado tras merge.
- Runtime: Soda/Great Expectations verifica conformidad en cada run; falla si SLA violado.
Comandos útiles¶
# Validar localmente
datacontract lint governance/data-contracts/*.yml
# Schema diff
python scripts/contract_diff.py --base origin/main --head HEAD
# Generar dbt yml a partir del contrato
python scripts/contract_to_dbt.py governance/data-contracts/customer_dim.yml
# Verificar runtime
datacontract test governance/data-contracts/customer_dim.yml --target prod
Versionado¶
Semantic versioning: - MAJOR — breaking changes (drop column, type change, FK removal). - MINOR — additive (nueva columna opcional, nueva métrica). - PATCH — descriptiva (mejor description, no cambio de schema).