Este tutorial rápido de ETL tem como objetivo mostrar como categorizar os registros mais recentes em uma tabela quando houver itens duplicados em um conjunto de dados.

Abaixo está um exemplo usando a tabela de um funcionário como ponto de partida:

Por algum motivo, os registros de John McGuire e Mary Campbell registros estão duplicados:

SELECT * FROM EMPLOYEES;

Neste exemplo, o objetivo é manter apenas os registros mais recentes para cada pessoa.

Para fazer isso, uma simples função row_number() precisa ser aplicada às colunas NAME e AGE. Veja abaixo:

select NAME, AGE, ETL_INSERT_DATE,
      row_number() over(partition by NAME, AGE order by ETL_INSERT_DATE desc) as RowNum
  from EMPLOYEES

Ao usar o ETL_INSERT_DATE como parâmetro, o RowNum = 1 sempre será único e o mais novo registro inserido, que é o que queremos manter neste exercício.

Só precisamos filtrar os registros com RowNum = 1e excluir os outros registros:

with CTE as (
     select NAME, AGE, ETL_INSERT_DATE,
          row_number() over(partition by NAME, AGE order by ETL_INSERT_DATE desc) as RowNum
       from EMPLOYEES
)
select *
     from CTE
          where RowNum = 1

Como Mark e Lincoln não estão duplicados, eles não foram afetados. Portanto, RowNum será 1 para todos os funcionários.