Processo de Flatten e Deduplicação

Em plataformas, frequentemente é lidado com grandes conjuntos de dados provenientes de diversas fontes, como logs de sistemas, feeds de redes sociais e registros de transações. Esses dados, muitas vezes, apresentam uma estrutura que não se encaixa perfeitamente em um esquema de banco de dados relacional tradicional. Para lidar com essa variedade de formatos e origens, é adotado uma abordagem flexível que permite o tratamento de dados semi-estruturados.

Em muitos casos, a utilização de dados semiestruturados acabam gerando tabelas muito grandes. Dessa forma, uma boa prática é realizar a carga dos dados em modo incremental com base na coluna updated_at. Durante esse processo, é crucial garantir a integridade dos dados, especialmente quando há várias versões de registros. Portanto, para garantir a precisão das análises, é necessário deduplicar os dados.

Exemplo

Suponha que tenha sido executado o processo de full-load até ontem às 0:00, buscando todos os dados até esse momento. Quando trocado para o modo incremental, na próxima execução, o processo identificará todos os registros em que o campo updated_at seja posterior a esse ponto. Isso implica que se houve uma atualização em um registro, ele será replicado novamente.

Processo de Deduplicação

Se as tabelas possuírem uma chave primária, a deduplicação pode ser realizada da seguinte maneira:

SELECT *
FROM TABLE
QUALIFY (ROW_NUMBER() OVER (PARTITION BY primary_key ORDER BY updated_at DESC)) = 1;

Esta query irá garantir que apenas a versão mais recente de cada registro, com base na chave primária, será retida, eliminando duplicatas e mantendo a integridade dos dados.

É fundamental realizar este processo de deduplicação para garantir análises precisas e evitar distorções nos resultados devido à presença de múltiplas versões de registros.