(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo validar esquemas de datos en ELT: paso a paso

João Barros 29 de July de 2026 4 min de lectura

Validación de esquemas en ELT significa garantizar que los datos de origen tienen la estructura esperada antes de ser transformados en el destino. Esto evita que las cargas fallen, que los informes muestren valores erróneos y facilita el mantenimiento de los pipelines.

Pre-requisitos

  • Cuenta con cluster o servicio que soporte SQL/SQL-like (ex.: Databricks, Synapse, Snowflake).
  • Archivos de origen en JSON/CSV o una tabla de staging.
  • Conocimientos básicos de SQL y alguna herramienta para ejecutar scripts (notebook o CLI).

Paso 1: Definir el esquema de referencia

El primer paso es tener un esquema de referencia (lo que esperamos). Puede ser un archivo JSON con campos y tipos, o una tabla de metadatos. Este esquema sirve para comparar con los datos de entrada y decidir si la carga debe proseguir, alertar o aplicar reglas de corrección.

{
  "table": "clientes",
  "columns": [
    {"name":"id", "type":"INTEGER", "nullable":false},
    {"name":"nome", "type":"STRING", "nullable":false},
    {"name":"email", "type":"STRING", "nullable":true},
    {"name":"created_at", "type":"TIMESTAMP", "nullable":false}
  ]
}

Paso 2: Inferir o leer el esquema de los datos de origen

Extraer el esquema actual de los archivos o de la tabla de origen. En muchos entornos (ex.: Spark/Databricks) es fácil inferir el esquema; en otros, se consulta la definición de la tabla de staging.

-- Exemplo SQL para obter colunas de uma tabela staging (Postgres/MySQL/Snowflake têm variações)
SELECT column_name, data_type, is_nullable
FROM information_schema.columns
WHERE table_name = 'staging_clientes';

Paso 3: Comparar esquemas e identificar discrepancias

Con el esquema de referencia y el esquema inferido, comparar campo por campo. Buscar diferencias: campos faltantes, tipos incompatibles, nullable diferente o nuevos campos inesperados. Implementar una función simple de comparación permite automatizar decisiones.

-- Pseudocódigo SQL para identificar colunas em falta
SELECT r.name AS expected, s.column_name AS actual
FROM reference_schema r
LEFT JOIN information_schema.columns s
  ON r.name = s.column_name
WHERE s.column_name IS NULL;

Paso 4: Reglas de corrección automática (casting y rellenado)

Decidir reglas para corregir automáticamente problemas comunes: convertir tipos (ex.: STRING a INTEGER con TRY_CAST), rellenar valores nulos con defaults, ignorar campos adicionales. Estas reglas mantienen la carga sin intervención manual cuando procede.

-- Exemplo em SQL/DBT-like para aplicar casting seguro
SELECT
  TRY_CAST(id AS INTEGER) AS id,
  nome,
  NULLIF(email, '') AS email,
  TRY_CAST(created_at AS TIMESTAMP) AS created_at
FROM staging_clientes;

Paso 5: Tagging y auditoría de las discrepancias

Registrar meta-información sobre la validación: filas con casting fallido, campos rellenados por default, o columnas ignoradas. Crear una tabla de auditoría facilita el troubleshooting y el reprocesado.

-- Exemplo de inserção na tabela de auditoria
INSERT INTO schema_audits(table_name, issue_type, detail, detected_at)
VALUES('clientes','missing_column','email missing in source', CURRENT_TIMESTAMP);

Paso 6: Integrar validación en el pipeline ELT

Poner la validación como etapa inicial del ELT: (1) extraer a staging, (2) validar esquema, (3) aplicar correcciones, (4) cargar al destino. Automatizar con jobs que fallen en niveles críticos y alerten en discrepancias menores.

-- Pseudoflow orchestration
1. Extract -> staging_clientes
2. Run validate_schema('clientes')
   -> returns status and audit rows
3a. If status = FAIL then alert and stop
3b. If status = WARN then apply corrections and continue
4. Load to production_clientes

Verificar el resultado

Confirmar que el destino tiene las columnas con los tipos esperados y que la tabla de auditoría contiene las discrepancias. Tests a ejecutar: query simple para verificar tipos y nulls; contar filas con casting fallido; revisar entradas de audit.

-- Verificações rápidas
SELECT COUNT(*) FROM production_clientes;
SELECT COUNT(*) FROM production_clientes WHERE id IS NULL;
SELECT * FROM schema_audits WHERE table_name='clientes' ORDER BY detected_at DESC LIMIT 10;

Conclusión

Validar esquemas en ELT reduce fallos y garantiza que las transformaciones se aplican a datos con estructura conocida. Próximos pasos: implementar tests automáticos de regresión de esquema y alertas via e-mail/Slack. Consejo: comienza con reglas simples (casting y defaults) y ve enriqueciendo la auditoría según la necesidad.