1. Data Governance
Gestión de disponibilidad, usabilidad, integridad y seguridad de datos empresariales.
1.1 🎯 Data Governance
Qué: Framework de políticas, procesos y controles para gestionar datos como activo estratégico.
Por qué: Datos son el nuevo petróleo. Sin governance = caos, riesgos legales, decisiones incorrectas.
Quién: Chief Data Officer, Data Stewards, compliance, engineering.
Cuándo: Desde día 1 manejando datos sensibles o a escala.
Esfuerzo: Inversión inicial alta, previene multas millonarias (GDPR hasta €20M).
1.2 📊 Pilares de Data Governance
| Pilar | Qué | Cómo implementar |
|---|---|---|
| Data Quality | Datos precisos, completos, consistentes | Validaciones, monitoreo, data contracts |
| Data Security | Proteger de accesos no autorizados | Encryption, access control, auditoría |
| Data Privacy | Cumplir regulaciones (GDPR, CCPA) | Minimización, consentimiento, right to delete |
| Data Lineage | Rastrear origen y transformaciones | Metadata management, cataloging |
| Master Data Management | Single source of truth | Golden records, deduplicación |
1.3 📋 Data Quality Framework
1.3.1 Dimensiones de Calidad
| Dimensión | Qué | Validación |
|---|---|---|
| Accuracy | Datos reflejan realidad | Comparar con fuentes autoritativas |
| Completeness | Sin valores faltantes críticos | % campos poblados |
| Consistency | Misma info en múltiples lugares coincide | Cross-system checks |
| Timeliness | Datos actualizados | Timestamp freshness |
| Validity | Cumple reglas de negocio | Regex, ranges, foreign keys |
| Uniqueness | Sin duplicados | Deduplicación, composite keys |
1.3.2 Data Contracts
Qué: Acuerdo explícito entre producer y consumer sobre schema y calidad de datos.
Ejemplo:
# user_events.contract.yml
dataset: user_events
owner: analytics-team
schema:
- name: user_id
type: string
required: true
format: uuid
- name: event_type
type: enum
values: [signup, login, purchase]
- name: timestamp
type: datetime
required: true
sla:
freshness: 5 minutes
completeness: 99%
Enforcement: Pipeline rechaza datos que violan contrato.
Herramientas: Great Expectations, Soda, Monte Carlo
1.4 🔍 Data Lineage
Qué: Mapa visual de origen, transformaciones y destino de datos.
Por qué: Debugging, impact analysis, compliance.
Cuándo: Sistemas complejos con múltiples transformaciones.
Ejemplo de Lineage:
graph TD
A[Users DB] --> B[ETL Job]
B --> C[Data Warehouse]
C --> D[BI Dashboard]
B --> E[ML Feature Store]
E --> F[Recommendation Model]
Preguntas que responde:
- ¿De dónde vienen estos datos?
- ¿Qué sistemas usan esta tabla?
- Si cambio schema aquí, ¿qué se rompe?
- ¿Por qué este reporte muestra X?
Niveles:
- Column-level: Trazabilidad campo por campo
- Table-level: Dependencias entre tablas
- System-level: Flujo entre sistemas
Herramientas: Apache Atlas, Amundsen, DataHub
1.5 ⚙️ Implementación Operacional
1.5.1 Enforcing Data Contracts
Cómo implementar contratos estrictos en el pipeline:
- Definición: Contratos en repositorio Git central (
schemas/). Formato JSON Schema, Protobuf o YAML. - CI Check: En el PR de un cambio de schema, validar backward compatibility.
- Producer Check (Runtime): Librería en el productor valida datos antes de emitir (Blocking).
- Consumer Check (Runtime): Validar en ingestión. Si falla → Dead Letter Queue (DLQ).
Pipeline Ejemplo:
flowchart LR
A[App Producer] -->|Valida Schema| B{Pass?}
B -- No --> C[Log Error & Drop]
B -- Yes --> D[Kafka Topic]
D --> E[ETL Consumer]
E -->|Valida Contrato| F{Pass?}
F -- No --> G[Dead Letter Queue]
F -- Yes --> H[Data Warehouse]
1.5.2 Automatización de Lineage
Cómo lograr lineage a nivel de columna sin intervención manual:
- SQL Parsing: Herramientas analizan logs de queries para inferir dependencias (
SELECT a FROM table_b). - Integración con Orquestadores: Airflow/Dagster envían eventos de OpenLineage en cada run.
- Metadata Injection: Dbt genera lineage automáticamente (
ref()).
Captura con OpenLineage:
{
"eventType": "COMPLETE",
"run": { "runId": "uuid..." },
"job": { "name": "daily_etl_users" },
"inputs": [{ "name": "raw_users", "namespace": "postgres" }],
"outputs": [{ "name": "dim_users", "namespace": "snowflake" }]
}
1.6 📚 Data Catalog
Qué: Inventario searchable de todos los datasets de la organización.
Por qué: Descubrimiento, evitar duplicados, democratizar acceso.
Cuándo: >50 datasets o múltiples fuentes.
Metadata incluida:
| Tipo | Ejemplos |
|---|---|
| Technical | Schema, size, format, location |
| Business | Descripción, owner, use cases |
| Operational | Freshness, update frequency, SLA |
| Social | Ratings, comments, popularidad |
Ejemplo Entry:
Dataset: customer_transactions
Description: Todas las transacciones de clientes desde 2020
Owner: finance-team
Schema:
- transaction_id (UUID, PK)
- user_id (UUID, FK → users)
- amount (DECIMAL)
- timestamp (DATETIME)
Freshness: Real-time (< 1 min)
Access: Restricted (PII)
Tags: #financial #pii #production
Related: customer_profiles, product_catalog
Herramientas: Alation, Collibra, Atlan
1.7 🔐 Data Security & Privacy
1.7.1 Access Control
| Nivel | Qué | Implementación |
|---|---|---|
| Row-level | Filtrar filas según usuario | WHERE user_region = current_user_region |
| Column-level | Ocultar columnas sensibles | Views sin PII, field-level encryption |
| Dataset-level | Acceso por roles | RBAC, grupos IAM |
1.7.2 Privacy by Design
Principios:
- Data Minimization: Solo recopilar lo necesario
- Purpose Limitation: Usar solo para fin declarado
- Consent Management: Opt-in explícito
- Right to Access: Usuario puede ver sus datos
- Right to Delete: Usuario puede borrar sus datos
- Pseudonymization: Reemplazar identificadores directos
- Encryption: En tránsito y reposo
1.7.3 PII (Personally Identifiable Information)
Tipos:
| Tipo | Ejemplos | Protección |
|---|---|---|
| Direct PII | Email, teléfono, SSN | Hash, encrypt, access control |
| Indirect PII | IP, device ID, location | Aggregate, anonymize |
| Sensitive PII | Salud, religión, etnia | Extra protección, explicit consent |
Techniques:
| Técnica | Qué | Cuándo |
|---|---|---|
| Hashing | One-way transformation | Passwords, identificadores |
| Tokenization | Reemplazar con token | Credit cards, referencias |
| Masking | Ocultar parcialmente | Logs, UIs (***-**-1234) |
| Anonymization | Eliminar identificadores | Analytics, research |
| Differential Privacy | Ruido matemático | Statistical releases |
1.8 🗄️ Master Data Management (MDM)
Qué: Proceso para crear "golden record" único y autoritativo de entidades críticas.
Por qué: Sin MDM = 10 sistemas con 10 versiones de "Cliente A".
Cuándo: Múltiples sistemas con datos duplicados/conflictivos.
Entidades típicas:
- Clientes: Deduplicar, consolidar info de CRM, Support, Sales
- Productos: SKU único, jerarquía consistente
- Empleados: HR system como source of truth
- Proveedores: Vendor master data
Proceso:
Fuente 1: Cliente "John Smith", email: john@email.com
Fuente 2: Cliente "J. Smith", phone: 51234
Fuente 3: Cliente "Smith, John", address: 123 Main St
↓ [MDM Process: Match, Merge, Survive]
Golden Record:
Name: John Smith
Email: john@email.com
Phone: 51234
Address: 123 Main St
Master_ID: CUST-0001
Herramientas: Informatica MDM, Talend MDM, Profisee
1.9 📊 Data Quality Monitoring
1.9.1 Observability para Datos
Métricas:
| Métrica | Qué | Alert |
|---|---|---|
| Freshness | Última actualización | >2h sin actualizar |
| Volume | Cantidad de registros | Spike o drop >20% |
| Schema Changes | Cambios no esperados | Columna nueva/borrada |
| Null Rate | % valores nulos | >5% en campo critical |
| Duplicate Rate | % registros duplicados | >1% |
| Distribution Shift | Cambio en distribución | KS-test p-value < 0.05 |
1.9.2 Anomaly Detection
# Ejemplo: Detectar anomalías en volumen diario
import pandas as pd
daily_counts = df.groupby('date').size()
mean = daily_counts.mean()
std = daily_counts.std()
# Alert si >3 std deviations
threshold = mean + 3 * std
anomalies = daily_counts[daily_counts > threshold]
Herramientas: Monte Carlo Data, Bigeye, Datafold
1.10 🔄 Data Lifecycle Management
| Fase | Qué | Políticas |
|---|---|---|
| Creation | Ingesta inicial | Validación, classification |
| Storage | Almacenamiento | Encryption, backup |
| Usage | Consumo | Access control, auditoría |
| Archival | Mover a storage barato | Retention policy (7 años) |
| Deletion | Eliminación segura | Compliance, purge |
Retention Policy Ejemplo:
Transaction Records:
- Active: 2 años (hot storage)
- Archive: 5 años (cold storage)
- Delete: Después 7 años
- Exception: Legal hold suspende deletion
1.11 📋 Data Governance Roles
| Rol | Responsabilidad |
|---|---|
| Chief Data Officer | Estrategia, budget, accountability |
| Data Steward | Calidad, metadata, access control |
| Data Owner | Responsable final de dataset |
| Data Custodian | Mantiene infraestructura |
| Data User | Consume datos, reporta issues |
1.12 🚫 Anti-patrones
| Anti-patrón | Problema | Solución |
|---|---|---|
| Data swamp | Data lake sin governance | Cataloging, quality checks |
| Siloed data | Equipos con copias propias | MDM, centralized catalog |
| No documentation | Nadie sabe qué es cada campo | Data dictionary obligatorio |
| Manual processes | Humans haciendo validación | Automated data quality checks |
| Reactive governance | Actuar solo tras problemas | Proactive monitoring, policies |
1.13 📚 Recursos
- DAMA-DMBOK - Data Management Body of Knowledge
- GDPR Compliance Guide
- Data Governance Institute
- Great Expectations Documentation