Ir para o conteúdo principal

Carregando uma dimensão de alteração lenta do tipo 2 do Data Warehouse usando o Matillion na plataforma Databricks Lakehouse

Gerenciamento de SCD Tipo 2 usando Matillion no Databricks

Loading a Data Warehouse Slowly Changing Dimension Type 2 Using Matillion on Databricks Lakehouse Platform

Publicado: 25 de janeiro de 2023

Parceiros5 min de leitura

Esta é uma publicação colaborativa entre Databricks e Matillion. Agradecemos a David Willmer, Product Marketing da Matillion, por suas contribuições.

 

À medida que mais e mais clientes modernizam seu Enterprise Data Warehouse legado e plataformas ETL mais antigas, eles estão procurando adotar uma pilha de dados moderna na nuvem usando a Databricks Lakehouse Platform e o Matillion para ETL baseado em GUI. A plataforma ELT visual e de baixo código da Matillion facilita a integração de dados de qualquer fonte no Databricks SQL Warehouse, tornando os dados de análise e IA prontos para os negócios e mais rápidos.

Este blog mostrará como criar um pipeline de ETL que carrega uma Dimensão de Alteração Lenta (SCD) Tipo 2 usando Matillion na Databricks Lakehouse Platform. O Matillion tem uma interface de usuário moderna baseada em navegador com funcionalidade ETL/ELT push-down. Você pode integrar facilmente seus warehouses ou clusters Databricks SQL com o Matillion. Agora, se você está se perguntando como se conectar ao Matillion usando o Databricks, a maneira mais fácil de fazer isso é usar o Partner Connect, que simplifica o processo de conexão de um SQL warehouse ou cluster existente em seu espaço de trabalho Databricks ao Matillion. Aqui estão os passos detalhados.

O que é uma dimensão de alteração lenta (SCD) tipo 2?

Uma SCD Tipo 2 é uma técnica comum para preservar o histórico em uma tabela de dimensão usada em toda a arquitetura de modelagem/data warehousing. As linhas inativas têm um sinalizador booleano, como a coluna ACTIVE_RECORD definida como 'F' ou uma data de início e término. Todas as linhas ativas são exibidas retornando uma consulta onde a data de término é nula ou ACTIVE_RECORD diferente de 'F'

Tabela de dimensão antes das alterações do SCD2 - Esta tabela de data warehouse representa um cenário típico de marcação de registros inativos com uma "Data de término".
Tabela de dimensão antes das alterações do SCD2 - Esta tabela de data warehouse representa um cenário típico de marcação de registros inativos com uma “Data de término”.

Matillion ETL para Delta Lake no Databricks usa uma abordagem de duas etapas para gerenciar dimensões de alteração lenta do tipo 2. Essa abordagem de duas etapas envolve primeiro identificar as alterações nos registros de entrada e sinalizá-las em uma tabela ou visualização temporária. Depois que todos os registros de entrada são sinalizados, as ações podem ser tomadas na tabela de dimensão de destino para concluir a atualização.

Agora, vamos dar uma olhada mais de perto na implementação das transformações SCD Tipo 2 usando Matillion, onde seu destino é uma tabela Delta Lake e a opção de computação subjacente usada é um Databricks SQL Warehouse.

Etapa 1: Preparando as alterações de dimensão

Ao analisarmos a Etapa 1 abaixo, o pipeline de ETL lê os dados de nossa tabela de dimensão Delta Lake existente e identifica apenas os registros mais atuais ou ativos (este é o fluxo de dados inferior). Ao mesmo tempo, leremos todos os nossos novos dados, certificando-nos de que a chave primária pretendida seja exclusiva para não interromper o processo de detecção de alterações (este é o fluxo de dados superior). Esses dois caminhos então convergem para o componente de detecção de alterações.

Etapa 1: Detectar alterações - Este pipeline compara novos registros de dados com registros de dados existentes já em uma tabela de dimensão do seu Lakehouse. Usando o componente Detect Change dentro do Matillion ETL, os registros são sinalizados como Novos, Alterados ou Excluídos e gravados em uma visualização intermediária.
Etapa 1: Detectar alterações - Este pipeline compara novos registros de dados com registros de dados existentes já em uma tabela de dimensão do seu Lakehouse. Usando o componente Detect Change dentro do Matillion ETL, os registros são sinalizados como Novos, Alterados ou Excluídos e gravados em uma visualização intermediária.

Dentro do Matillion ETL, o componente Detect Changes é um mecanismo central para determinar as atualizações e inserções para registros alterados. Ele compara um conjunto de dados de entrada com um conjunto de dados de destino e determina se os registros são Idênticos, Alterados, Novos ou Excluídos usando uma lista de colunas de comparação configuradas dentro do componente. Cada registro do novo conjunto de dados é avaliado e recebe um Campo Indicador na saída do componente Detect Changes - 'I' para Idêntico, 'C' para Alterado, 'N' para Novo e 'D' para Excluído.

Tabela de preparação do Data Warehouse - Esta tabela representa uma tabela de preparação típica em um data warehouse que preenche um campo "Código de alteração" após comparar os dados de entrada com uma tabela de destino e determinar se os registros são Idênticos, Alterados, Novos ou Excluídos.
Tabela de preparação do Data Warehouse - Esta tabela representa uma tabela de preparação típica em um data warehouse que preenche um campo “Código de alteração” após comparar os dados de entrada com uma tabela de destino e determinar se os registros são Idênticos, Alterados, Novos ou Excluídos.

A ação final na Etapa 1 desta abordagem de duas etapas é adicionar uma data de carregamento a cada registro antes de gravar cada novo registro, agora sinalizado com seu indicador de alteração, em uma tabela Delta Lake de dimensão temporária. Isso se tornará a entrada da Etapa 2.

UM LÍDER 5X

Gartner®: Databricks, líder em banco de dados em nuvem

Etapa 2: Finalizando as alterações de dimensão

Ao passarmos para a Etapa 2, começamos lendo a tabela de dimensão intermediária ou temporária em nosso lakehouse. Usaremos o Campo Indicador que foi derivado do componente Detect Changes e criaremos 3 caminhos separados usando um componente Filter simples. Não faremos nada para registros idênticos (identificados com um 'I'), pois nenhuma alteração é necessária, então esses registros são filtrados. Para sermos explícitos em nossa explicação neste blog, deixamos este caminho. Ainda assim, seria desnecessário para fins práticos, a menos que algo específico precisasse ser feito com esses registros.

Etapa 2: Gravar na tabela de dimensão - Lendo da tabela intermediária, o Matillion filtra os registros com base em seu sinalizador de alteração respectivo e toma as medidas apropriadas para gravar os novos dados na tabela de dimensão.
Etapa 2: Gravar na tabela de dimensão - Lendo da tabela intermediária, o Matillion filtra os registros com base em seu sinalizador de alteração respectivo e toma as medidas apropriadas para gravar os novos dados na tabela de dimensão.

O próximo caminho, para registros Novos ou Alterados, gerará um novo registro atual para cada registro novo ou alterado identificado. O componente Filter processa apenas os registros com um 'N' (para Novo) ou 'C' (para Alterado) conforme identificado pelo componente Detect Changes. O componente Rename atua como um mapeador de coluna para mapear os dados alterados dos campos dos novos registros (identificados pelo prefixo compare_) para os nomes de coluna reais conforme definidos pela tabela de dimensão de destino Delta Lake. Finalmente, o componente "New fields" é um componente Calculator configurado para definir o timestamp de expiração dos registros ativos como "infinito", identificando-os assim como o registro mais atual.

Componente Rename - O componente Rename atua como um mapeador de coluna para mapear os dados alterados dos campos dos novos registros (identificados pelo prefixo compare_) para os nomes de coluna reais da tabela de dimensão de destino dentro do Lakehouse.
Componente Rename - O componente Rename atua como um mapeador de coluna para mapear os dados alterados dos campos dos novos registros (identificados pelo prefixo compare_) para os nomes de coluna reais da tabela de dimensão de destino dentro do Lakehouse.

O caminho final é fechar ou expirar os registros existentes identificados como Alterados ou Excluídos. Lembre-se, no SCD2, as alterações são adicionadas como um novo registro (conforme descrito no caminho Novo ou Alterado acima) e, portanto, cada registro anterior deve ser marcado como expirado ou inativo. Da mesma forma, os registros excluídos precisam de uma data de expiração para que não sejam mais identificados como ativos. Aqui, o caminho Alterado ou Excluído processa cada 'C' (para Alterado) ou 'D' (para Excluído) mapeando as colunas apropriadas que identificam exclusivamente o registro para expiração. Uma vez identificado, a data de expiração é definida para o timestamp atual e a atualização é feita dentro da tabela de dimensão de destino Delta Lake.

Tabela de dimensão após as atualizações do SCD2 - Esta tabela representa a tabela de dimensão final do data warehouse depois que todas as transações da tabela de preparação foram aplicadas.
Tabela de dimensão após as atualizações do SCD2 - Esta tabela representa a tabela de dimensão final do data warehouse depois que todas as transações da tabela de preparação foram aplicadas.

Conclusão

Mostramos como implementar dimensões de alteração lenta na plataforma Databricks Lakehouse usando a integração de dados de baixo código/sem código do Matillion. É uma excelente opção para todas as organizações que preferem ferramentas ETL baseadas em GUI, como o Matillion, para implementar e manter pipelines de engenharia de dados, ciência de dados e machine learning na nuvem. Ele realmente desbloqueia o poder do Delta Lake no Databricks e melhora a produtividade de dados, oferecendo o desempenho, a velocidade e a escalabilidade para impulsionar sua análise de dados na nuvem.

Se você deseja saber mais sobre a integração do Matillion e Databricks, sinta-se à vontade para consultar a documentação detalhada aqui.

Experimente o Databricks gratuitamente por 14 dias.

(Esta publicação no blog foi traduzida utilizando ferramentas baseadas em inteligência artificial) Publicação original

Nunca perca uma postagem da Databricks

Inscreva-se nas categorias de seu interesse e receba as últimas postagens na sua caixa de entrada