Lorsque nous développons un modèle dimensionnel, nous rencontrons souvent divers indicateurs et flags qui ne sont pas liés logiquement avec les principales dimensions. Ces attributs disparates sont généralement trop précieux pour les ignorer ou les exclure. Les concepteurs veulent parfois les traiter comme des faits ou déformer le schéma avec plusieurs dimensions de petites tailles. Une troisième solution, moins évidente mais préférable, est d'inclure une dimension fourre-tout pour stocker ces champs.
Une dimension fourre-tout est un groupe pratique de flags et d'indicateurs. C'est utile, mais pas absolument indispensable, si il y a une corrélation entre les valeurs. Les bénéfices de ce genre de dimension sont:
- Fournir un lieu reconnaissable et intuitif pour les codes correspondants, les indicateurs et leurs descripteurs dans un cadre dimensionnel.
- Nettoyer une conception encombrée qui a déjà trop de dimensions. Il pourrait y avoir cinq ou plusieurs indicateurs qui pourraient être regroupés sous une seule clé de substitution dans la table de faits.
- Fournir un point d'entré plus rapide et plus petit pour les requêtes par rapport à la performance d'un filtre directement sur ces attributs dans la table de faits. Si votre base de données supporte les indices bitmap, ce bénéfice potentiel est peut-être hors de propos, même si les autres sont toujours valables.
Une utilisation intéressante pour une dimension fourre-tout est de capturer le contexte d'une transaction spécifique. Alors que nos dimensions conformes communes contiennent les principaux attributs dimensionnels, il y a probablement des attributs qui ne sont pas connus jusqu'à ce que la transaction soit traitée.
Par exemple, une assurance santé peut avoir besoin de saisir le contexte entourant leurs opérations d'indemnisations. Le grain de ce processus clé est une ligne pour chaque ligne de la réclamation. En raison de la complexité du secteur de la santé, des demandes similaires peuvent être traitées très différemment. Ils peuvent concevoir des dimensions fourre-tout séparées pour capturer le contexte sur la façon dont la demande a été traitée, comment elle a été payée, et la relation contractuelle entre les professionnels de la santé au moment de la demande.
Il existe deux approches pour créer des dimensions fourre-tout. La première consiste à créer la dimension fourre-tout à l'avance. Chaque combinaison unique possible génère une ligne dans la dimension fourre-tout. La deuxième approche consiste à créer les lignes de la dimension fourre-tout à la volée pendant le processus d'extraction, de transformation et de chargement (ETL). Lorsque de nouvelles combinaisons uniques apparaissent, une nouvelle ligne avec sa clé de substitution est créée et chargée dans la dimension fourre-tout.
Si le nombre total de lignes possibles dans la dimension fourre-tout est relativement faible, il est préférable de créer les lignes à l'avance. D'autre part, si le nombre total de lignes possibles dans la dimension fourre-tout est important, il peut être plus avantageux de créer la dimension lorsque les lignes uniques sont rencontrées. Une des dimensions fourre-tout rencontrée dans une conception récente avait plus d'un milliard de lignes théoriques, tandis que le nombre réel de lignes observées était d'une dizaine de milliers. De toute évidence, il n'a pas de sens de créer toutes les lignes théoriquement possibles à l'avance. Si le nombre de lignes dans la dimension fourre-tout approche ou dépasse le nombre de lignes dans la table de faits, la conception doit être clairement réévaluée.
Puisqu'une dimension fourre-tout comprend toutes les combinaisons valides d'attributs, elle permet de suivre automatiquement les modifications dans les attributs de la dimension. Par conséquent les stratégies de dimensions à évolution lente n'ont pas d'intérêt pour les dimensions fourre-tout.
Source originale: www.kimballgroup.com
Article original "Kimball Design Tip #48: De-clutter with junk (dimensions)", publié le 7 août 2003.
Aucun commentaire:
Enregistrer un commentaire