Master Data Management (MDM) - Consolidação de Dados

🔹 1. Solução com Query Simples (USING JOIN)

Esta abordagem usa JOIN para unir as tabelas com base no ClienteID e prioriza os valores mais recentes.

SELECT 
    COALESCE(B.ClienteID, A.ClienteID) AS ClienteID, 
    COALESCE(B.Nome, A.Nome) AS Nome, -- Prioriza Nome da tabela mais recente, mantendo o antigo se for NULL 
    COALESCE(B.Email, A.Email) AS Email, -- Prioriza Email da mais recente, mantendo o antigo se for NULL 
    B.DataAtualizacao 
FROM 
    Clientes_SistemaA A 
        FULL JOIN Clientes_SistemaB B 
            ON A.ClienteID = B.ClienteID 
WHERE 
    B.DataAtualizacao >= A.DataAtualizacao OR 
    A.DataAtualizacao IS NULL; 

Vantagens:

  • Simples e eficiente para um conjunto menor de dados.
  • Fácil leitura e manutenção.

Desvantagens:

  • Pode ser menos eficiente em tabelas grandes, pois FULL JOIN pode ser pesado.

🔹 2. Solução com Common Table Expression (CTE)

Aqui utilizamos CTE para organizar a seleção e facilitar a reutilização da consulta.

WITH DadosMestres AS ( 
SELECT 
    COALESCE(B.ClienteID, A.ClienteID) AS ClienteID, 
    COALESCE(B.Nome, A.Nome) AS Nome, 
    COALESCE(B.Email, A.Email) AS Email, 
    B.DataAtualizacao 
FROM 
    Clientes_SistemaA A 
        FULL JOIN Clientes_SistemaB B 
            ON A.ClienteID = B.ClienteID 
WHERE 
    B.DataAtualizacao >= A.DataAtualizacao OR 
    A.DataAtualizacao IS NULL ) 

SELECT * FROM DadosMestres; 

Vantagens:

  • Melhor organização e legibilidade do código.
  • Facilita a reutilização dentro de consultas mais complexas.

Desvantagens:

  • Pode não ter um ganho real de performance em relação à query simples.

🔹 3. Solução com MERGE (Atualizando uma Tabela Mestre)

Aqui utilizamos MERGE para consolidar os dados em uma única tabela Clientes_Mestre.

MERGE INTO Clientes_Mestre AS CM 
USING ( 
    SELECT 
        COALESCE(B.ClienteID, A.ClienteID) AS ClienteID, 
        COALESCE(B.Nome, A.Nome) AS Nome, 
        COALESCE(B.Email, A.Email) AS Email, 
        B.DataAtualizacao 
    FROM 
        Clientes_SistemaA A 
            FULL JOIN Clientes_SistemaB B 
                ON A.ClienteID = B.ClienteID 
    WHERE 
        B.DataAtualizacao >= A.DataAtualizacao OR 
        A.DataAtualizacao IS NULL 
) AS Fonte 
ON CM.ClienteID = Fonte.ClienteID 

WHEN MATCHED THEN 
    UPDATE SET 
        CM.Nome = Fonte.Nome, 
        CM.Email = Fonte.Email, 
        CM.DataAtualizacao = Fonte.DataAtualizacao 

WHEN NOT MATCHED THEN 
    INSERT (ClienteID, Nome, Email, DataAtualizacao) 
    VALUES (Fonte.ClienteID, Fonte.Nome, Fonte.Email, Fonte.DataAtualizacao); 

Vantagens:

  • Mais eficiente para grandes volumes de dados, pois evita duplicação.
  • Permite a criação de uma tabela mestre consolidada, ideal para sistemas de MDM.

Desvantagens:

  • Mais complexo e pode ser mais pesado se rodado frequentemente.
  • o.

4️⃣ Usando Views Indexadas ou Materializadas

💡 Boa para consolidar os dados permanentemente e otimizar consultas frequentes.

CREATE VIEW vw_ClientesAtualizados AS 
SELECT 
    COALESCE(B.ClienteID, A.ClienteID) AS ClienteID, 
    COALESCE(B.Nome, A.Nome) AS Nome, 
    COALESCE(B.Email, A.Email) AS Email, 
B.DataAtualizacao 
FROM 
    Clientes_SistemaA A 
        FULL JOIN Clientes_SistemaB B 
            ON A.ClienteID = B.ClienteID 
WHERE 
    B.DataAtualizacao >= A.DataAtualizacao OR 
    A.DataAtualizacao IS NULL; 

Vantagens:

  • Boa para consultas recorrentes, pois evita cálculos repetidos.
  • Pode ser indexada para ganho de performance.

Desvantagens:

  • Não armazena fisicamente os dados (a menos que seja uma view materializada, que alguns bancos suportam).

📊 Comparação de Performance

 

Abordagem
Performance
Complexidade
Melhor para
Query Simples (JOIN)
🟡 Média
🟢 Simples
Pequenos conjuntos de dados
CTE
🟡 Média
🟡 Média
Organização melhorada
MERGE
🟢 Alta
🔴 Complexa
Grandes volumes e MDM centralizado
View Indexada
🟢 Alta
🟡 Média
Consultas frequentes

 


Conclusão:
Se for uma simples análise pontual, a query com JOIN ou CTE é suficiente.
Se precisar consolidar dados permanentemente, MERGE é a melhor escolha! 🚀

Data de Publicação: 22-03-2025

Categoria: Governança de Dados