Temporalité DWH Pt.4 : Dimensions SCD Type 2
Dimensions de style Kimball — sortie SCD Type 2. Si vous ne les avez pas lues, je recommande de lire d'abord les 3 premières parties.
Dimensions de style Kimball — sortie SCD Type 2 Si vous ne les avez pas lues, je recommande de lire d’abord les 3 premières parties.
Pour commencer
Après avoir écrit une histoire de neuf pages sur le sujet incluant l’historique, la modélisation et les considérations de performance, j’en suis arrivé à la conclusion que c’est trop pour en parler. J’ai donc essayé de réduire cela au minimum avec quelques bullet points. Si vous voulez omettre toute cette complexité décrite dans cet article, vous pourriez envisager d’utiliser l’outil d’automatisation DWH Datavault Builder qui fait tout cela pour vous. Si j’écris ci-dessous PIT tables : vous pouvez utiliser des vues à la place — même résultat avec juste de moins bonnes performances de requête mais sans la nécessité de charger les tables. Si j’écris dimension ci-dessous, la même idée peut être appliquée également aux faits.
Création de PIT et PIT+
Si vous voulez quand même implémenter cela vous-même, voici nos conclusions en bref :
-
Vérifiez les 3 premières parties de cette série pour vous assurer que vous avez besoin d’une sortie SCD type 2. Cela rend les rapports plus compliqués qu’ils ne le devraient s’il n’y a pas de réelle valeur métier à le faire.
-
Les PIT tables ne sont pas une fin en soi. La dimension SCD type 2 l’est. Cela signifie que vous ne devriez pas demander si quelqu’un ou un outil est capable de générer des PIT tables, mais s’il peut créer la dimension SCD type 2 dont vous avez besoin.
-
Les PIT tables peuvent être un moyen de rendre la sortie SCD type 2 plus performante.
-
Si vous créez des PIT tables, faites-le seulement pour les grains (hubs) dont vous avez besoin pour la sortie SCD type 2.
-
Si vous créez des PIT tables, n’incluez que les tranches de temps pour les éléments (c’est-à-dire les satellites et links) impliqués dans la sortie de votre dimension SCD type 2. Cela signifie que vous devez d’abord collecter les exigences métier.
-
Certains préconisent de créer des PIT tables comme snapshots. Cela peut être une option utile si vous ne voulez accéder qu’aux données de fin de mois ou à d’autres tranches de temps définies. Comme nous voulons être plus flexibles, nous créons des PIT tables SCD type 2 continues, puisque les snapshots peuvent être facilement extraits des continues mais pas l’inverse.
Sélection visuelle des attributs dans Datavault Builder
-
Si vous ne savez pas quelles colonnes vous devez sortir dans la dimension SCD type 2 et ne pouvez donc pas déterminer quels satellites inclure dans la PIT table, retournez au point où vous voulez omettre la complexité.
-
Si vous créez des PIT tables, incluez aussi les hashes cibles et l’historique des links plusieurs-à-un et un-à-un. Vous en aurez besoin pour joindre les PIT tables ensemble. J’appelle cela PIT+.
Inclure les satellites et le hash lié dans la PIT pour les relations plusieurs-à-un et un-à-un
Joindre les PITs
-
Si vous ne savez rien de la cardinalité attendue de vos links dans votre modèle, vous avez un problème. Retournez à la section où vous voulez omettre ce genre de complexité.
-
Si, sur la base de la timeline DWH (3d : Load Time), vous pouvez charger les PIT tables en delta en ajoutant juste de nouvelles lignes puisque la timeline Load Time avance toujours.
-
Ajouter des Ghost records aux satellites pour améliorer les performances des requêtes PIT n’a montré aucun bénéfice par rapport à un simple left join sur les satellites sur les plateformes de bases de données que nous avons testées (votre expérience peut varier — nous avons testé Snowflake, Exasol, Oracle, MSSQL).
-
Si une dimension SCD type 2 a besoin de colonnes de plus d’un grain (satellites connectés à des hubs différents), utilisez un join temporel pour croiser toujours une paire de hubs résultant en une timeline combinée.
-
Si vous voulez savoir comment joindre des PIT tables ensemble, écrivez-moi un email ou un message LinkedIn.
-
À la fin, joignez tous les satellites nécessaires à cette table d’historique combinée pour obtenir les attributs nécessaires.
-
Si vous le souhaitez, vous pouvez supprimer les tranches de temps inutiles. Cela rend le nombre de lignes à transférer à l’outil de reporting plus petit, mais sans supprimer les tranches inutiles, la sortie est parfaitement correcte.
Et c’est tout. Si vous avez réussi à le faire : félicitations.
La question suivante est de savoir comment combiner des faits SCD type 1 ou 2 avec des dimensions SCD type 2. Mais je pense que je laisse ce sujet pour un autre article de blog après que vous ayez digéré le contenu de celui-ci.
Voir Datavault Builder en action
Démo de 20 minutes. Réponses honnêtes sur l'adéquation avec votre équipe.
Réserver une démo gratuite