Pular para o conteúdo
Lucas Lessa
Voltar para projetos

Estudo de caso · Engenharia de dados · Finanças

Comparativo financeiro com Delta Lake Time Travel

Desenvolvimento de uma solução no Databricks para comparar os valores financeiros registrados no fechamento mensal com os valores carregados nos dias seguintes, acompanhando as alterações até o próximo fechamento.

Utilizando o versionamento do Delta Lake, a solução recuperava snapshots históricos e os comparava com versões recentes, permitindo identificar alterações nos valores financeiros sem duplicar toda a base de dados.

  • Databricks
  • Delta Lake
  • Time Travel
  • PySpark
  • SQL
  • Databricks Jobs

Como funcionava a solução

  1. Dia do fechamento financeiro

    Identificação do snapshot histórico de referência.

  2. Recuperação da versão histórica

    Com Delta Lake Time Travel: consulta ao transaction log com DESCRIBE HISTORY e identificação da versão correspondente ao fechamento.

  3. Comparação com as cargas posteriores

    Consulta da versão de referência e da versão mais recente da tabela.

  4. Análise das divergências financeiras

    Identificação das mudanças nos valores entre o fechamento e as atualizações subsequentes.

A rotina foi pensada para executar diariamente, mantendo a mesma referência de fechamento enquanto as novas cargas financeiras chegavam. No próximo fechamento, uma nova referência poderia ser definida para o ciclo seguinte.

Tecnologias e recursos utilizados

  • Databricks e Delta Lake

    Armazenamento transacional e versionamento das tabelas financeiras.

  • DESCRIBE HISTORY

    Consulta ao histórico de operações, versões e timestamps registrados no Delta Lake.

  • PySpark e SQL

    Identificação das versões, leitura dos snapshots e comparação dos dados.

  • Databricks Jobs

    Parametrização da data de referência e execução automatizada do processo.

Lógica técnica implementada

Um dos pontos centrais foi identificar a versão exata da tabela que representava o fechamento financeiro, em vez de simplesmente comparar os dados de duas datas de calendário. O fluxo envolvia:

  1. Receber uma data de referência, por exemplo, data_referencia = 2026-03-05.

  2. Consultar o histórico da tabela com DESCRIBE HISTORY.

  3. Identificar o timestamp e a versão correspondentes à carga de fechamento.

  4. Recuperar o snapshot histórico com VERSION AS OF.

  5. Comparar esse snapshot com a versão mais recente da tabela.

  6. Disponibilizar os resultados para análise das alterações financeiras.

Principal desafio: preservar o histórico

A solução dependia da disponibilidade das versões antigas do Delta Lake. Por isso, um aspecto importante foi considerar as políticas de retenção e o impacto do comando VACUUM.

O VACUUM remove arquivos de dados antigos que não são mais necessários segundo as regras de retenção. Se os arquivos necessários para um snapshot histórico forem removidos, não será possível recuperar aquela versão apenas porque ela continua aparecendo no histórico transacional.

Por isso, o projeto exigia atenção à retenção dos arquivos e ao intervalo durante o qual os fechamentos precisariam continuar disponíveis para comparação.