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

Cómo crear una tabla de validación de datos en Data Warehouse

João Barros 04 de November de 2026 4 min de lectura

Vamos a crear una tabla de validación de datos en Data Warehouse para registrar reglas violadas durante las cargas ETL/ELT. Esto es útil para rastrear errores, facilitar correcciones y mejorar la calidad de los datos con el tiempo.

Requisitos previos

  • Entorno de Data Warehouse (p. ej.: SQL Server, Azure Synapse, Amazon Redshift) con permisos para crear tablas.
  • Pipeline ETL/ELT sencillo (p. ej.: Azure Data Factory, SSIS, dbt) para invocar las validaciones.
  • Conocimientos básicos de SQL y del esquema de las tablas de origen y destino.

Paso 1: Definir el propósito y las reglas de validación

Antes de crear la tabla, defina qué tipos de validaciones quiere registrar. Ejemplos comunes: valores nulos indebidos, tipos inválidos, rangos fuera de lo esperado, claves duplicadas y referencias a dimensiones inexistentes. Elija campos importantes para diagnosticar el error (p. ej.: source_system, table_name, row_key, column_name, error_code, error_message).

Paso 2: Crear la estructura de la tabla de validación

Creé una tabla central para almacenar eventos de validación. La tabla debe ser compacta pero informativa: incluya timestamps, identificadores de fila del origen y contexto de la carga (batch_id o run_id).

CREATE TABLE validation_errors (
  validation_id BIGINT IDENTITY(1,1) PRIMARY KEY,
  run_id VARCHAR(100) NOT NULL,
  source_system VARCHAR(100),
  table_name VARCHAR(100),
  row_key VARCHAR(500),
  column_name VARCHAR(100),
  error_code VARCHAR(50),
  error_message VARCHAR(1000),
  detected_at DATETIME2 DEFAULT SYSUTCDATETIME(),
  severity VARCHAR(20) DEFAULT 'warning'
);

Adapte tipos y longitudes según su Data Warehouse. En entornos columnar (p. ej.: Redshift, Synapse dedicated SQL pool) puede ajustar tipos para compresión.

Paso 3: Implementar validaciones en el pipeline ETL/ELT

Implemente las reglas en la etapa de transformación. En ETL tradicional (SSIS) o en ELT (SQL después de la carga), use consultas que identifiquen filas inválidas y hagan un INSERT en la tabla de validación en lugar de bloquear toda la carga.

-- Exemplo SQL para detectar nulos indevidos e inserir na tabela de validação
DECLARE @run_id VARCHAR(100) = 'run_20261104_01';

INSERT INTO validation_errors (run_id, source_system, table_name, row_key, column_name, error_code, error_message, severity)
SELECT
  @run_id,
  'syst_x',
  'stg_clientes',
  CAST(id AS VARCHAR(500)),
  'email',
  'NULL_EMAIL',
  'Email não pode ser nulo',
  'error'
FROM stg_clientes
WHERE email IS NULL;

Para validaciones de integridad referencial, haga LEFT JOINs y registre filas sin correspondencia:

-- Exemplo: FK para dimensão de país
INSERT INTO validation_errors (run_id, source_system, table_name, row_key, column_name, error_code, error_message)
SELECT
  @run_id, 'syst_x', 'stg_clientes', CAST(c.id AS VARCHAR(500)), 'country_code', 'FK_MISSING_COUNTRY', 'Código de país não existe na dimensão'
FROM stg_clientes c
LEFT JOIN dim_country d ON c.country_code = d.country_code
WHERE c.country_code IS NOT NULL AND d.country_code IS NULL;

Paso 4: Clasificar y gestionar los errores

Use el campo severity para distinguir 'error' (impide la carga de destino) y 'warning' (se carga pero se registra). Puede automatizar alertas cuando existan errores críticos: enviar correo electrónico, crear un ticket o bloquear la promoción del dataset a producción.

-- Exemplo simples: contar erros críticos antes de proceder à carga final
IF EXISTS (SELECT 1 FROM validation_errors WHERE run_id = @run_id AND severity = 'error')
BEGIN
  THROW 50001, 'Existem erros críticos. Parar processo de carga.', 1;
END

Paso 5: Enriquecer la tabla con métricas e historial

Incluya columnas adicionales si necesita análisis posterior: resolved_by, resolved_at, note. Cree vistas o informes en Power BI para monitorizar tendencias de errores por run, por tabla o por tipo de error.

ALTER TABLE validation_errors
ADD resolved_by VARCHAR(100), resolved_at DATETIME2, note VARCHAR(2000);

Verificar el resultado

Para confirmar, ejecute consultas de verificación: cuente errores por run_id, vea ejemplos de filas reportadas y pruebe escenarios que generen errores conocidos. Ejemplos:

-- Contagem por severidade
SELECT severity, COUNT(*) as cnt FROM validation_errors WHERE run_id = 'run_20261104_01' GROUP BY severity;

-- Exemplos de erros
SELECT TOP 20 * FROM validation_errors WHERE run_id = 'run_20261104_01' ORDER BY detected_at DESC;

Conclusión

Una tabla de validación de datos en Data Warehouse permite monitorizar y resolver problemas de calidad sin interrumpir todo el pipeline. Próximos pasos: automatizar alertas, crear dashboards en Power BI y añadir rutinas de corrección automática para errores recurrentes. Consejo: empiece con pocas reglas esenciales e vaya ampliando según aprenda qué errores impactan más.