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

Como criar um Catálogo de Metadados em Governação de Dados: passo a passo

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

Este tutorial mostra como criar um Catálogo de Metadados simples em Governação de Dados para documentar conjuntos de dados, proveniência e responsáveis — útil para melhorar descoberta, controlo e conformidade. A abordagem usa uma tabela centralizada e processos ETL simples para manter os metadados atualizados.

Pré-requisitos

  • Acesso a um servidor SQL (por exemplo Azure SQL ou SQL Server) com permissões para criar tabelas e stored procedures.
  • Ferramenta para executar SQL (SSMS, Azure Data Studio ou linha de comandos sqlcmd).
  • Conhecimentos básicos de SQL e uma fonte de metadados inicial (csv, catálogo de ETL ou tabelas existentes).

Passo 1: Conceito e esquema do Catálogo de Metadados

Antes de criar, explicamos o que guardar: nome do conjunto de dados, descrição, proprietário, sensibilidade, proveniência (source), data da última atualização e tags. Este esquema permite responder a perguntas comuns como "quem é responsável?" ou "quando foi atualizado?".

Passo 2: Criar a tabela do Catálogo de Metadados

Criamos uma tabela central em SQL para armazenar os metadados. Mantenha colunas relevantes e chaves para garantir unicidade por conjunto de dados.

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)
);

Passo 3: Popular o catálogo a partir de um ficheiro CSV (exemplo ETL simples)

Um método prático é importar um ficheiro CSV com linhas de metadados. Exemplo com BULK INSERT (ajuste caminhos/permissões). Este passo mostra como automatizar a importação 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
);

Passo 4: Criar uma stored procedure para upsert (inserir/atualizar)

Para manter o catálogo atualizado por processos ETL, criamos uma stored procedure que faz upsert por DatasetId. Isto evita duplicados e permite automatizar atualizações.

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;

Passo 5: Integrar com processo ETL/CI (exemplo com script simplificado)

Chame a stored procedure durante o pipeline ETL quando um conjunto de dados for criado ou alterado. Aqui um exemplo T-SQL que atualiza dois conjuntos de dados; em cenários reais isto é gerado pelo 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';

Passo 6: Controlar acesso e auditoria

Defina permissões mínimas: crie uma role read-only para utilizadores que consultam metadados e restrinja quem pode executar UpsertMetadata. Registe mudanças com triggers ou SQL Audit para auditoria.

-- 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 o resultado

Confirme consultando a tabela e testando o upsert. Verifique também permissões e logs de auditoria.

-- 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

Conclusão

Com uma tabela central, uma rotina de upsert e regras de acesso tem um Catálogo de Metadados funcional que melhora descoberta, responsabilização e conformidade. Próximos passos: integrar com Microsoft Purview ou APIs para sincronizar classificações, adicionar versionamento e automatizar atualizações a partir do pipeline ETL. Dica: comece com campos mínimos e vá expandindo conforme as necessidades de negócio — qual é o próximo conjunto de dados a documentar?