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

Cómo automatizar Data Quality Rules en Gobernanza de Datos: paso a paso

João Barros 16 de September de 2026 5 min de lectura

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?