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

Cómo crear un Catálogo de Metadatos en Gobernanza de Datos: paso a paso

João Barros 13 de August de 2026 4 min de lectura

Este tutorial muestra cómo crear un Catálogo de Metadatos simple en Gobernanza de Datos para documentar conjuntos de datos, procedencia y responsables —útil para mejorar el descubrimiento, el control y el cumplimiento. El enfoque usa una tabla centralizada y procesos ETL sencillos para mantener los metadatos actualizados.

Requisitos previos

  • Acceso a un servidor SQL (por ejemplo Azure SQL o SQL Server) con permisos para crear tablas y stored procedures.
  • Herramienta para ejecutar SQL (SSMS, Azure Data Studio o línea de comandos sqlcmd).
  • Conocimientos básicos de SQL y una fuente de metadatos inicial (csv, catálogo de ETL o tablas existentes).

Paso 1: Concepto y esquema del Catálogo de Metadatos

Antes de crear, explicamos qué guardar: nombre del conjunto de datos, descripción, propietario, sensibilidad, procedencia (source), fecha de la última actualización y etiquetas. Este esquema permite responder a preguntas comunes como "¿quién es responsable?" o "¿cuándo se actualizó?".

Paso 2: Crear la tabla del Catálogo de Metadatos

Creamos una tabla central en SQL para almacenar los metadatos. Mantenga columnas relevantes y claves para garantizar unicidad por conjunto de datos.

CREATE TABLE MetadataCatalog (
  DatasetId VARCHAR(200) PRIMARY KEY,
  DatasetName VARCHAR(300) NOT NULL,
  Description VARCHAR(2000),
  Owner VARCHAR(200),
  SensitivityLabel VARCHAR(100),
  SourceSystem VARCHAR(200),
  LastUpdated DATETIME2,
  Tags VARCHAR(500)
);

Paso 3: Poblar el catálogo a partir de un archivo CSV (ejemplo ETL sencillo)

Un método práctico es importar un archivo CSV con filas de metadatos. Ejemplo con BULK INSERT (ajuste rutas/permisos). Este paso muestra cómo automatizar la importación inicial.

-- Exemplo: ficheiro C:\temp\metadata.csv com cabeçalho
-- DatasetId,DatasetName,Description,Owner,SensitivityLabel,SourceSystem,LastUpdated,Tags
BULK INSERT MetadataCatalog
FROM 'C:\temp\metadata.csv'
WITH (
  FIRSTROW = 2,
  FIELDTERMINATOR = ',',
  ROWTERMINATOR = '\n',
  TABLOCK
);

Paso 4: Crear una stored procedure para upsert (insertar/actualizar)

Para mantener el catálogo actualizado por procesos ETL, creamos una stored procedure que realiza upsert por DatasetId. Esto evita duplicados y permite automatizar actualizaciones.

CREATE PROCEDURE UpsertMetadata
  @DatasetId VARCHAR(200),
  @DatasetName VARCHAR(300),
  @Description VARCHAR(2000),
  @Owner VARCHAR(200),
  @SensitivityLabel VARCHAR(100),
  @SourceSystem VARCHAR(200),
  @LastUpdated DATETIME2,
  @Tags VARCHAR(500)
AS
BEGIN
  SET NOCOUNT ON;
  MERGE MetadataCatalog AS T
  USING (SELECT @DatasetId AS DatasetId) AS S
  ON T.DatasetId = S.DatasetId
  WHEN MATCHED THEN
    UPDATE SET DatasetName = @DatasetName,
               Description = @Description,
               Owner = @Owner,
               SensitivityLabel = @SensitivityLabel,
               SourceSystem = @SourceSystem,
               LastUpdated = @LastUpdated,
               Tags = @Tags
  WHEN NOT MATCHED THEN
    INSERT (DatasetId, DatasetName, Description, Owner, SensitivityLabel, SourceSystem, LastUpdated, Tags)
    VALUES (@DatasetId, @DatasetName, @Description, @Owner, @SensitivityLabel, @SourceSystem, @LastUpdated, @Tags);
END;

Paso 5: Integrar con proceso ETL/CI (ejemplo con script simplificado)

Llame a la stored procedure durante el pipeline ETL cuando se cree o modifique un conjunto de datos. Aquí un ejemplo T-SQL que actualiza dos conjuntos de datos; en escenarios reales esto lo genera el ETL (Data Factory, Azure Databricks, SSIS).

EXEC UpsertMetadata 'sales.orders', 'Orders', 'Registos de encomendas de vendas', 'data-ops@empresa.com', 'Confidencial', 'OLTP_Sales', GETDATE(), 'finance,orders';
EXEC UpsertMetadata 'crm.customers', 'Customers', 'Dados de clientes CRM', 'crm-owner@empresa.com', 'Pessoal', 'CRM_System', GETDATE(), 'crm,customers';

Paso 6: Controlar acceso y auditoría

Defina permisos mínimos: cree un role read-only para usuarios que consultan metadatos y restrinja quién puede ejecutar UpsertMetadata. Registre cambios con triggers o SQL Audit para auditoría.

-- Criar role e conceder SELECT
CREATE ROLE metadata_read;
GRANT SELECT ON MetadataCatalog TO metadata_read;
-- Conceder execução da procedure apenas a administradores de catálogo
GRANT EXECUTE ON UpsertMetadata TO db_owner; -- ajustar conforme política

Verificar el resultado

Confirme consultando la tabla y probando el upsert. Verifique también permisos y logs de auditoría.

-- Ver lista de metadados
SELECT * FROM MetadataCatalog ORDER BY DatasetName;

-- Testar permissão de leitura (como um utilizador com metadata_read)
-- EXECUTE assume contexto adequado

Conclusión

Con una tabla central, una rutina de upsert y reglas de acceso tiene un Catálogo de Metadatos funcional que mejora el descubrimiento, la responsabilización y el cumplimiento. Próximos pasos: integrar con Microsoft Purview o APIs para sincronizar clasificaciones, añadir versionado y automatizar actualizaciones desde el pipeline ETL. Consejo: comience con campos mínimos y vaya ampliando según las necesidades del negocio —¿cuál es el próximo conjunto de datos a documentar?