Cómo automatizar Data Quality Rules en Gobernanza de Datos: paso a paso
Este tutorial muestra cómo automatizar Data Quality Rules en Gobernanza de Datos para validar, registrar y notificar problemas de calidad. Automatizar reglas aporta consistencia, detecta regresiones pronto y facilita la auditoría de la calidad de los datos.
Pre-requisitos
- Cuenta con acceso a un entorno SQL (por ejemplo: Azure SQL o SQL Server).
- PowerShell instalado (o acceso a Azure Automation) para programar tareas.
- Permisos para crear tablas y jobs en el servidor SQL.
- Conocimientos básicos de SQL y scripts PowerShell.
Paso 1: Definir las Data Quality Rules
Comienza por listar reglas concretas y medibles. Ejemplos comunes: no nulos, formatos (email), rangos numéricos, unicidad. Cada regla debe tener: nombre, expresión SQL, severidad y frecuencia de ejecución.
-- Exemplo de regras numa tabela de referência
-- rule_id | rule_name | sql_check | severity
INSERT INTO data_quality_rules (rule_id, rule_name, sql_check, severity)
VALUES
(1, 'CustomerEmailNotNull', 'SELECT COUNT(*) FROM dbo.Customer WHERE Email IS NULL', 'High'),
(2, 'OrderAmountPositive', 'SELECT COUNT(*) FROM dbo.Orders WHERE Amount <= 0', 'Medium');
Paso 2: Crear una tabla de reglas y un repositorio de resultados
Guarda las reglas y los resultados de las ejecuciones para auditoría y tendencia. La tabla de resultados debe registrar timestamp, rule_id, count_violations y mensaje.
CREATE TABLE dbo.data_quality_rules (
rule_id INT PRIMARY KEY,
rule_name NVARCHAR(200),
sql_check NVARCHAR(MAX),
severity NVARCHAR(50)
);
CREATE TABLE dbo.data_quality_results (
result_id INT IDENTITY(1,1) PRIMARY KEY,
rule_id INT,
run_time DATETIME2 DEFAULT SYSUTCDATETIME(),
violations INT,
details NVARCHAR(MAX)
);
Paso 3: Script SQL para ejecutar una única regla
Crea un stored procedure que ejecute la expresión sql_check dinámicamente, capture el número de violaciones y grabe el resultado. Esto permite centralizar la lógica de ejecución.
CREATE PROCEDURE dbo.ExecuteDataQualityRule @rule_id INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql NVARCHAR(MAX); DECLARE @violations INT; DECLARE @details NVARCHAR(MAX);
SELECT @sql = sql_check FROM dbo.data_quality_rules WHERE rule_id = @rule_id;
IF @sql IS NULL
BEGIN
RAISERROR('Regra não encontrada', 16, 1); RETURN;
END
-- Executa a query que devolve um COUNT(*) como resultado
DECLARE @execSql NVARCHAR(MAX) = 'DECLARE @cnt INT; SET @cnt = 0; ' + @sql + '; SELECT @cnt = (SELECT TOP 1 * FROM (SELECT 1) AS t);';
-- Simples abordagem alternativa: assume que sql_check é 'SELECT COUNT(*) FROM ...'
INSERT INTO dbo.data_quality_results (rule_id, violations, details)
EXEC('DECLARE @v INT; ' + @sql + '; SELECT @v = (SELECT COUNT(*) FROM (SELECT 1) as x);');
END;
Paso 4: Script PowerShell para orquestar y notificar
Usa PowerShell para leer las reglas, ejecutar el stored procedure por cada regla, y enviar notificación (email o webhook) cuando haya violaciones por encima de un umbral.
# Exemplo simplificado PowerShell
$server = 'myserver.database.windows.net'
$database = 'MyDB'
$user = 'admin'
$pwd = 'P@ssw0rd'
$connStr = "Server=$server;Database=$database;User ID=$user;Password=$pwd;Encrypt=True;"
Import-Module SqlServer
$rules = Invoke-Sqlcmd -Query "SELECT rule_id, rule_name FROM dbo.data_quality_rules" -ConnectionString $connStr
foreach ($r in $rules) {
Invoke-Sqlcmd -Query "EXEC dbo.ExecuteDataQualityRule $($r.rule_id)" -ConnectionString $connStr
}
# Verificar resultados e enviar alerta
$results = Invoke-Sqlcmd -Query "SELECT r.rule_name, res.violations FROM dbo.data_quality_results res JOIN dbo.data_quality_rules r ON res.rule_id=r.rule_id WHERE res.run_time > DATEADD(hour,-1,sysutcdatetime())" -ConnectionString $connStr
foreach ($row in $results) {
if ($row.violations -gt 0) {
# Exemplo: registar ou chamar um webhook/Enviar email
Write-Output "ALERTA: $($row.rule_name) tem $($row.violations) violações"
}
}
Paso 5: Programar la ejecución automática
Para automatizar, crea un Job del SQL Agent (SQL Server) o un Runbook en Azure Automation / Azure Logic Apps que ejecute el script PowerShell con la frecuencia necesaria (horaria, diaria, etc.).
-- Exemplo: criar um SQL Agent Job que executa um PowerShell step
-- (esta parte faz-se via SSMS GUI ou T-SQL system stored procedures para jobs)
-- Alternativa: colocar o PowerShell num Runbook e agendar no Azure Automation.
Verificar el resultado
Confirma que las reglas se han ejecutado consultando dbo.data_quality_results. Verifica timestamps recientes, número de violaciones y detalles. Prueba con datos que violen las reglas y con datos limpios para confirmar que el sistema detecta ambos escenarios.
SELECT r.rule_name, res.run_time, res.violations, res.details
FROM dbo.data_quality_results res
JOIN dbo.data_quality_rules r ON res.rule_id = r.rule_id
ORDER BY res.run_time DESC;
Conclusión
Automatizar Data Quality Rules en Gobernanza de Datos permite detectar problemas pronto y crear un historial de calidad. Próximos pasos: mejorar los detalles de las violaciones (por ejemplo: registro de claves de fila afectadas), integrar con Power BI para dashboards y añadir thresholds por severidad. Consejo: comienza con pocas reglas críticas y expande gradualmente — ¿cuál es la primera regla que vas a automatizar?