Revenir au contenu principal

Chargement d’une dimension à évolution lente de type 2 d’un entrepôt de données à l’aide de Matillion sur Databricks Lakehouse Platform

Gestion du SCD Type 2 à l’aide de Matillion sur Databricks

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

Publié: 25 janvier 2023

Partenaires6 min de lecture

Il s’agit d’un article collaboratif entre Databricks et Matillion. Nous remercions David Willmer, Product Marketing chez Matillion, pour ses contributions.

 

Alors que de plus en plus de clients modernisent leurs anciens entrepôts de données d’entreprise et leurs anciennes plateformes ETL, ils cherchent à adopter une pile de données cloud moderne à l’aide de Databricks Lakehouse Platform et de Matillion pour l’ETL basé sur l’interface graphique. La plateforme ELT visuelle à faible code de Matillion permet à quiconque d’intégrer facilement des données provenant de n’importe quelle source dans Databricks SQL Warehouse, ce qui rend ainsi les données d’analytique et d’IA prêtes pour l’entreprise, et plus rapidement.

Ce blog vous montrera comment créer un pipeline ETL qui charge une dimension à évolution lente (SCD) de type 2 à l’aide de Matillion dans Databricks Lakehouse Platform. Matillion possède une interface utilisateur moderne basée sur navigateur avec une fonctionnalité ETL/ELT push-down. Vous pouvez facilement intégrer vos entrepôts ou clusters SQL Databricks à Matillion. Maintenant, si vous vous demandez comment vous connecter à Matillion à l’aide de Databricks, la façon la plus simple de le faire est d’utiliser Partner Connect, ce qui simplifie le processus de connexion d’un entrepôt ou d’un cluster SQL existant dans votre espace de travail Databricks à Matillion. Voici les étapes détaillées.

Qu’est-ce qu’une dimension à évolution lente (SCD) de type 2 ?

Une SCD de type 2 est une technique courante pour préserver l’historique dans une table de dimension utilisée dans toute architecture d’entrepôt/de modélisation de données. Les lignes inactives ont un indicateur booléen tel que la colonne ACTIVE_RECORD définie sur « F » ou une date de début et de fin. Toutes les lignes actives sont affichées en retournant une requête où la date de fin est null ou ACTIVE_RECORD n’est pas égal à « F ».

Table de dimension avant les modifications SCD2 : cette table d’entrepôt de données représente un scénario typique d’étiquetage des enregistrements inactifs avec une « date de fin ».
Table de dimension avant les modifications SCD2 - Cette table d’entrepôt de données représente un scénario typique d’étiquetage des enregistrements inactifs avec une « date de fin ».

Matillion ETL for Delta Lake on Databricks utilise une approche en deux étapes pour gérer les dimensions à évolution lente de type 2. Cette approche en deux étapes consiste d’abord à identifier les modifications dans les enregistrements entrants et à les signaler dans une table ou une vue temporaire. Une fois que tous les enregistrements entrants sont signalés, des actions peuvent être entreprises sur la table de dimension cible pour effectuer la mise à jour.

Maintenant, examinons de plus près l’implémentation des transformations SCD de type 2 à l’aide de Matillion, où votre cible est une table Delta Lake, et l’option de calcul sous-jacente utilisée est un Databricks SQL Warehouse.

Étape 1 : Préparation des modifications de dimension

Comme nous le voyons à l’étape 1 ci-dessous, le pipeline ETL lit les données de notre table de dimension Delta Lake existante et identifie uniquement les enregistrements les plus récents ou actifs (il s’agit du flux de données inférieur). En même temps, nous allons lire toutes nos nouvelles données, en nous assurant que la clé primaire prévue est unique afin de ne pas interrompre le processus de détection des modifications (il s’agit du flux de données supérieur). Ces deux chemins convergent ensuite vers le composant de détection des modifications.

Étape 1 : Détecter les modifications : ce pipeline compare les nouveaux enregistrements de données avec les enregistrements de données existants déjà dans une table de dimension de votre Lakehouse. À l’aide du composant de détection des modifications dans Matillion ETL, les enregistrements sont signalés comme nouveaux, modifiés ou supprimés et écrits dans une vue intermédiaire.
Étape 1 : Détecter les modifications - Ce pipeline compare les nouveaux enregistrements de données avec les enregistrements de données existants déjà dans une table de dimension de votre Lakehouse. À l’aide du composant de détection des modifications dans Matillion ETL, les enregistrements sont signalés comme nouveaux, modifiés ou supprimés et écrits dans une vue intermédiaire.

Dans Matillion ETL, le composant de détection des modifications est un mécanisme central pour déterminer les mises à jour et les insertions pour les enregistrements modifiés. Il compare un ensemble de données entrant à un ensemble de données cible et détermine si les enregistrements sont identiques, modifiés, nouveaux ou supprimés en utilisant une liste de colonnes de comparaison configurées dans le composant. Chaque enregistrement du nouvel ensemble de données est évalué et reçoit un champ d’indicateur dans la sortie du composant de détection des modifications : « I » pour identique, « C » pour modifié, « N » pour nouveau et « D » pour supprimé.

Table de préparation d’entrepôt de données : cette table représente une table de préparation typique dans un entrepôt de données qui remplit un champ « Code de modification » après avoir comparé les données entrantes avec une table cible et déterminé si les enregistrements sont identiques, modifiés, nouveaux ou supprimés.
Table de préparation d’entrepôt de données - Cette table représente une table de préparation typique dans un entrepôt de données qui remplit un champ « Code de modification » après avoir comparé les données entrantes avec une table cible et déterminé si les enregistrements sont identiques, modifiés, nouveaux ou supprimés.

L’action finale de l’étape 1 de cette approche en deux étapes consiste à ajouter une date de chargement à chaque enregistrement avant d’écrire chaque nouvel enregistrement, maintenant signalé avec son indicateur de modification, dans une table Delta Lake de dimension temporaire. Cela deviendra l’entrée de l’étape 2.

UN LEADER 5X

Gartner® : Databricks, leader des bases de données cloud

Étape 2 : Finalisation des modifications de dimension

Alors que nous passons à l’étape 2, nous commençons par lire la table de dimension intermédiaire ou temporaire dans notre lakehouse. Nous utiliserons le champ d’indicateur qui a été dérivé du composant de détection des modifications et créerons 3 chemins distincts à l’aide d’un simple composant de filtre. Nous ne ferons rien pour les enregistrements identiques (identifiés par un « I ») car aucune modification n’est nécessaire, de sorte que ces enregistrements sont filtrés. Pour être explicite dans notre explication dans ce blog, nous avons laissé ce chemin. Pourtant, il serait inutile à des fins pratiques, à moins que quelque chose de spécifique ne doive être fait avec ces enregistrements.

Étape 2 : Écrire dans la table de dimension : en lisant à partir de la table intermédiaire, Matillion filtre les enregistrements en fonction de leur indicateur de modification respectif et prend les mesures appropriées pour écrire les nouvelles données dans la table de dimension.
Étape 2 : Écrire dans la table de dimension - En lisant à partir de la table intermédiaire, Matillion filtre les enregistrements en fonction de leur indicateur de modification respectif et prend les mesures appropriées pour écrire les nouvelles données dans la table de dimension.

Le chemin suivant, pour les enregistrements nouveaux ou modifiés, générera un nouvel enregistrement actuel pour chaque enregistrement nouveau ou modifié identifié. Le composant de filtre traite uniquement les enregistrements avec un « N » (pour nouveau) ou un « C » (pour modifié) tel qu’identifié par le composant de détection des modifications. Le composant de renommage agit comme un mappeur de colonnes pour mapper les données modifiées des champs des nouveaux enregistrements (identifiés par le préfixe compare_) aux noms de colonnes réels tels que définis par la table de dimension cible Delta Lake. Enfin, le composant « Nouveaux champs » est un composant de calcul configuré pour définir l’horodatage d’expiration des enregistrements actifs sur « infini », les identifiant ainsi comme l’enregistrement le plus récent.

Composant de renommage : le composant de renommage agit comme un mappeur de colonnes pour mapper les données modifiées des champs des nouveaux enregistrements (identifiés par le préfixe compare_) aux noms de colonnes réels de la table de dimension cible dans le Lakehouse.
Composant de renommage - Le composant de renommage agit comme un mappeur de colonnes pour mapper les données modifiées des champs des nouveaux enregistrements (identifiés par le préfixe compare_) aux noms de colonnes réels de la table de dimension cible dans le Lakehouse.

Le chemin final consiste à fermer ou à faire expirer les enregistrements existants identifiés comme étant modifiés ou supprimés. N’oubliez pas que dans SCD2, les modifications sont ajoutées en tant que nouvel enregistrement (comme décrit dans le chemin Nouveau ou Modifié ci-dessus) et, par conséquent, chaque enregistrement précédent doit être marqué comme expiré ou inactif. De même, les enregistrements supprimés ont besoin d’une date d’expiration afin qu’ils ne soient plus identifiés comme étant actifs. Ici, le chemin Modifié ou Supprimé traite chaque « C » (pour Modifié) ou « D » (pour Supprimé) en mappant les colonnes appropriées qui identifient de manière unique l’enregistrement pour l’expiration. Une fois identifiée, la date d’expiration est définie sur l’horodatage actuel et la mise à jour est effectuée dans la table de dimension cible Delta Lake.

Table de dimension après les mises à jour SCD2 : cette table représente la table de dimension finale de l’entrepôt de données une fois que toutes les transactions de la table de préparation ont été appliquées.
Table de dimension après les mises à jour SCD2 - Cette table représente la table de dimension finale de l’entrepôt de données une fois que toutes les transactions de la table de préparation ont été appliquées.

Conclusion

Nous vous avons montré comment implémenter des dimensions à évolution lente sur la plateforme Databricks Lakehouse à l’aide de l’intégration de données à faible code/sans code de Matillion. Il s’agit d’une excellente option pour toutes les organisations qui préfèrent les outils ETL basés sur l’interface graphique, comme Matillion, pour implémenter et maintenir l’ingénierie des données, la science des données et les pipelines de machine learning sur le cloud. Il libère véritablement la puissance de Delta Lake sur Databricks et améliore la productivité des données, vous offrant les performances, la vitesse et l’évolutivité nécessaires pour alimenter votre analytique des données cloud.

Si vous souhaitez en savoir plus sur l’intégration de Matillion et Databricks, n’hésitez pas à consulter la documentation détaillée ici.

Essayez Databricks gratuitement pendant 14 jours.

(Cet article de blog a été traduit à l'aide d'outils basés sur l'intelligence artificielle) Article original

Ne manquez jamais un article Databricks

Abonnez-vous à notre blog et recevez les derniers articles dans votre boîte mail.