Cómo crear una tabla de auditoría de cargas en Data Warehouse
Este tutorial explica cómo crear una tabla de auditoría de cargas en Data Warehouse para registrar ejecuciones ETL, conteos de filas, duraciones y errores —útil para rastrear historial de cargas, diagnosticar fallos y garantizar la calidad de los datos.
Requisitos previos
- Conocimientos básicos de SQL (SELECT, INSERT, UPDATE).
- Entorno de Data Warehouse con soporte SQL (p. ej.: SQL Server, PostgreSQL, Azure Synapse).
- Permisos para crear tablas y ejecutar jobs/ETL.
Paso 1: Definir el propósito y columnas de la tabla de auditoría
Decidir qué información es necesaria: identificador de la carga, origen, destino, timestamps, conteos, estado y mensaje de error. Esto ayuda a responder "cuándo" y "por qué" una carga falló.
-- Exemplo de colunas essenciais para auditoria de cargas
-- job_id: identificador da execução
-- process_name: nome do processo ETL
-- source_system: origem dos dados
-- target_table: tabela destino
-- start_time / end_time: tempos
-- rows_loaded: número de linhas carregadas
-- status: SUCCESS / FAILED
-- message: detalhes do erro
Paso 2: Crear la tabla de auditoría
Crear la tabla en un esquema apropiado (p. ej.: dbo, staging). El ejemplo SQL siguiente es compatible con la mayoría de sistemas SQL; ajusta tipos si es necesario.
CREATE TABLE dbo.etl_audit (
audit_id BIGINT IDENTITY(1,1) PRIMARY KEY,
job_id NVARCHAR(100) NOT NULL,
process_name NVARCHAR(200) NOT NULL,
source_system NVARCHAR(100),
target_table NVARCHAR(200),
start_time DATETIME2 NOT NULL,
end_time DATETIME2 NULL,
rows_expected BIGINT NULL,
rows_loaded BIGINT NULL,
status NVARCHAR(20) NOT NULL,
message NVARCHAR(MAX) NULL,
created_at DATETIME2 DEFAULT SYSUTCDATETIME()
);
Paso 3: Instrumentar el proceso ETL para registrar inicio y fin
Añadir inserts/updates al inicio y al final del job ETL. Al inicio se inserta una fila con el estado 'RUNNING'; al final se actualiza a 'SUCCESS' o 'FAILED' con conteos y mensaje.
-- Inserir a execução ao iniciar
DECLARE @job_id NVARCHAR(100) = 'job_20260914_01';
DECLARE @process NVARCHAR(200) = 'Carga_Clientes';
DECLARE @start DATETIME2 = SYSUTCDATETIME();
INSERT INTO dbo.etl_audit (job_id, process_name, source_system, target_table, start_time, status)
VALUES (@job_id, @process, 'CRM', 'dw.dim_customers', @start, 'RUNNING');
-- Após a carga (exemplo de sucesso): actualizar com contagens e estado
DECLARE @end DATETIME2 = SYSUTCDATETIME();
DECLARE @rows BIGINT = 1250;
UPDATE dbo.etl_audit
SET end_time = @end,
rows_loaded = @rows,
status = 'SUCCESS',
message = NULL
WHERE job_id = @job_id AND status = 'RUNNING';
-- Em caso de erro, registar falha
UPDATE dbo.etl_audit
SET end_time = SYSUTCDATETIME(),
status = 'FAILED',
message = 'Erro: ligação ao source falhou.'
WHERE job_id = @job_id AND status = 'RUNNING';
Paso 4: Registrar validaciones y discrepancias (conteos esperados)
Si el ETL tiene expectativas (por ejemplo, archivo con cabecera que indica filas), registrar rows_expected y comparar. Esta práctica ayuda a identificar cargas incompletas o duplicadas.
-- Exemplo de comparação simples durante o ETL
DECLARE @expected BIGINT = 1300;
DECLARE @loaded BIGINT = 1250;
IF @loaded < @expected
BEGIN
UPDATE dbo.etl_audit
SET rows_expected = @expected,
rows_loaded = @loaded,
status = 'FAILED',
message = 'Contagem menor que a esperada'
WHERE job_id = @job_id;
END
ELSE
BEGIN
UPDATE dbo.etl_audit
SET rows_expected = @expected,
rows_loaded = @loaded,
status = 'SUCCESS'
WHERE job_id = @job_id;
END
Paso 5: Consultas útiles y alertas
Crear queries para monitorizar cargas recientes, fallos y tiempos largos. Estas consultas alimentan dashboards o alertas por e-mail/Teams.
-- Cargas falhadas nas últimas 24 horas
SELECT *
FROM dbo.etl_audit
WHERE status = 'FAILED' AND start_time > DATEADD(day,-1,SYSUTCDATETIME())
ORDER BY start_time DESC;
-- Duração média por processo
SELECT process_name, AVG(DATEDIFF(second,start_time,end_time)) AS avg_seconds
FROM dbo.etl_audit
WHERE status = 'SUCCESS' AND end_time IS NOT NULL
GROUP BY process_name;
Verificar el resultado
Verifica que las filas de auditoría aparecen al iniciar y actualizar el job. Prueba casos de éxito y de fallo: las entradas deben cambiar de 'RUNNING' a 'SUCCESS' o 'FAILED' e incluir conteos y mensajes. Usa las consultas anteriores para confirmar alertas y métricas.
Conclusión
Una tabla de auditoría de cargas simple permite rastrear ETL, diagnosticar errores y medir rendimiento. Próximos pasos: integrar con herramientas de monitorización, almacenar firmas de archivos y registrar hashes para detección de duplicados. Consejo: empieza pequeño y añade campos según las necesidades de investigación de fallos.