Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Conception/Modélisation Décisionnelle
Conception/Modélisation Décisionnelle Forum d'entraide sur la conception de datawarehouse, datamarts et la modélisation décisionnelle : Tables de faits et de dimension, Modèles en étoile ou en flocons, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/09/2008, 13h49   #1
Membre du Club
 
Inscription : août 2008
Messages : 223
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 223
Points : 67
Points : 67
Par défaut SCD / historisation / dim temps ?

Bon j'inonde un peu le forum de mes questions et met probablement a rude épreuve ceux qui me lisent et me répondent mais bon...faut bien que je comprenne.

Comme disait mon père, je comprends vite mais faut m'expliquer longtemps

ci dessous donc la reprise d'un de mes post qui a mieux a faire dans une nouvelle discussion.

Bon alors je vais essayé de faire simple (ce qui n'est pas gagné).
Je confonds plusieurs concepts ; je les mélange sans comprendre les interactions entre ces concepts (les utilise-t-on tous ensemble, l'utilisation de l'un exclu-t-il l'autre) et leur utilité.

Ces concepts sont :

1 : les SCD
2 : l'historisation
3 : la dimension temps
4 : l'existence de table de DIM et de fait historisée aux côtés de table de DIM et fait courante (donc non historisées)
5 : et a quoi servent alors et dans quel cadre (en dehors du point 4) on utilise des jointures de types DIM_HISTO.ID = FAIT_ID et DIM_HISTO.DATE_DEB_VALIDITE <= FAIT.DATE_REF et DIM_HISTO.DATE_FIN_VALIDITE > FAIT.DATE_REF

Pour résumer : quelqu'un peut il m'expliquer les relations entre ces 4 concepts, qui pris individuellement, j'arrive à comprendre plus ou moins (d'ailleurs plutot moins que plus) mais pour lequels je n'arrive pas à saisir dans quel contexte les utiliser. et a quoi exactement ils répondent comme problématique...

Merci d'avance.
mederik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2008, 14h21   #2
Membre du Club
 
Inscription : août 2008
Messages : 223
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 223
Points : 67
Points : 67
La nuit portant conseil, j'ai un grand service à demander à ceux qui auront le courage de parcourir avec attention ce long post qui suit.

Ce qui suit est un exposé de la manière dont je pense avoir compris comment fonctionne tout le "bouzin" des table de faits, des dim historisée, des SCD, de la dimension temps. Bref comment à mon sens tout cela s'imbrique et fonctionne ensemble.

Vous comprendrez donc que c'est important pour moi d'avoir une confirmation par une âme charitable que ce qui suit est correct, que je ne fais pas fausse route. Bref que j'aiu bien tout "comprité" et que je peux désormais travailler de manière sereine sur de bonnes bases de réflexion auprès de clients potentiels.

Donc un grand merci à cette (ou ces) âme(s) charitable(s) qui auront la gentillesse et prendront le temps de parcourir les points ci-dessous et de me les valider, si possible point par point pour me rassurer et être certain que, dans le tas, il n'y a pas d'erreurs. Si jamais j'ai dis une connerie ou que vous souhiateriez apporter une précision que vous jugeriez utile, alors surtout, n'hésitez pas.

En tous cas merci pour ceux qui voudront bien faire cet effort.

Alors :

1 - Les SCD sont bien une manière d'historiser les données dans les dimensions
2 - Si mon affirmation du dessus est vraie, alors choisir les SCD comme méthodo d'historisation implique :

2.1 - la construction de DIM dans lesquelles il y a une DATE_FIN_VALIDITE et une DATE_DEBUT_VALIDITE

2.2 - l'utilisation de dimension historisée séparée des dimensions courante

2.3 - les dimensions courantes sont celles où la date de fin n'est pas renseignée

2.4 - les dimensions historisées sont celles où les date de fin sont renseignées

2.5 - quelque soit le périmètre des DIM considéré (historisé ou courant) la table de FAIT dispose d'une date toujours renseignée : FAIT.DATE_REF

2.6 - Cette DATE_REF dans la table de fait est la date avec laquelle les jointures entre les DIM_HISTO et la table de fait seront faites

2.7 - Utiliser les SCD implique donc un requetage spécifique c'est à dire pour du requettage sur le courant on fait DIM_NON_HISTO.ID = FAIT.ID et si on veut requeter sur l'historique on fait DIM_HISTO.ID = FAIT.ID et DIM_HISTO.DAT_DEB_VALIDITE <= FAIT.DATE_REF et DIM_HISTO.DAT_FIN_VALIDITE > FAIT.DATE_REF

2.8 - identifier au préalable les attributs des dimensions dont on veut suivre le changement et donc garder un historique

2.9 - on ne peut pas suivre avec les SCD les changements de tous les attributs d'une dimension.

2.10 - si on veut suivre le changement de tous les attributs d'une dimension il faut alors passer par de l'historisation par "couches" ou snapshot. Toutes les fins de mois, on fait une photo de toutes les lignes des DIM que l'on stocke dans des tables dédiées qui empilent les couches. On aura ainsi toutes les lignes, celles dont aucun attribut aura changé et celles ou il y aura eu des changements

2.11 - cette méthodo par couches implique que la table de fait soit gérée de la même manière pour qu'elle puisse être mise en parallèle avec les DIM historisées par "couches" elles aussi.
3 - La DIM TEMPS peut être utilisée avec des SCD (là j'ai plus qu'un doute)

4 - Mais elle n'est pas, au même titre que les SCD une "technique" d'historisation (pareil : doute)

5 - La table de FAIT avec sa DATE_REF est en fait, implicitement, une table de fait historisée. C'est la DATE_REF qui justement donne la notion d'historique. Il n'y a qu'à mettre en place des règles de purge dans cette table pour éliminer les faits trop vieux. Genre suppression des lignes ou DATE_REF < date courante - 3 ans (par exemple)

6 - D'ailleurs on fait pareil sur les DIM avec suppression des lignes où DATE_DEB_VALIDITE < date courante - 3 ans (par exemple)

7 - Là où je suis "sec" c'est sur le choix de cette DATE_REF dans la table de fait dans le cadre des SCD.

7.1 - En DATE_REF qu'est-ce qu'on prend : une date d'enregistrement dans le DWH où une date fonctionnelle qui est couplée à l'indicateur ? Genre pour un CA sur un CONTRAT, on prends, dans le cade des SCD, la date de signature du contrat = DATE_REF où entrée dans le DWH = DATE_REF ?
8 - dernier point, que vient faire la dimension TEMPS dans un modèle en étoile intégrant les SCD ? Je suppose qu'une étoile avec les SCD et une DIM TEMPS ne sont pas incompatibles. Je veux dire, des DIM gérées en SCD et une DIM TEMPS ne s'auto excluent pas lors de la constitution d'un modèle en étoile. Je veux dire on est pas devant un choix cornélien du type : j'ai choisi les SCD donc je ne peux plus utiliser de DIM TEMPS ou j'ai choisi une DIM TEMPS donc je ne peux plus implémenter des SCD. Mais alors je n'arrive pas comprendre la distinction entre l'utilisation d'un requetage passant par les DIM_HISTO (tel que expliqué au point 2.7 plus haut) et un requetage passant par la DIM TEMPS...

9 - Ah si.... je crois je viens de comprendre :

9.1 - si la table de FAIT est une table historisée implicite, qui ne porte pas son nom, alors en utilisant les DIM_HISTO avec la gestion des SCD, cela permet de remettre dans son contexte historique l'évolution d'un fait avec les évolution des attributs des DIM, donc à périmètre hsitorique constant

9.2 - par contre en utilisant la DIM TEMPS on peut suivre l'evolution d'un fait dans le temps et l'agréger sur des périodes de temps (de granularités) différentes. Tout ça sous réserve que la table de fait soit bien une table historisée qui ne porte pas son nom
10- maintenant, bien que sur tous les points qui précedent, je ne suis pas certain si j'ai tout bon (a vous de me le dire si vous avez eu le courage et le temps), encore un point reste de manière certaine assez flou pour moi : c'est l'utilisation conjointe (en accord avec la manière dont je viens de décrire la façon je pense que cela fonctionne) de la DIM TEMPS et des DIM gérée en SCD


Voila un grand merci d'avance
mederik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/10/2008, 12h12   #3
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 819
Détails du profil
Informations personnelles :
Nom : Benoit Durand
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Consultant en Business Intelligence Freelance

Informations forums :
Inscription : mars 2005
Messages : 819
Points : 1 093
Points : 1 093
Salut,

Avec l'intro que tu as fait, j'ai l'impression de faire ma BA quotidienne.

Par contre est ce que tu dors bien la nuit ?

Bref !

2-9, 2-10, 2-11 aurais tu de la doc la dessus ? Si ta dim ne bouge pas beaucoup (principe du slowly changing dimension) je ne vois pas pourquoi tu ne peux pas tout historiser.

7 pourquoi pas prendre la date de l'alim, mais le problème est que tu seras bien a coté de la réalité, si ton contrat a été signé le 01/10/2008 a 14h, il ne l'a pas été le 05/10/2008 a 2h (heure de l'alim).

8,9,10 ouch pour moi ce sont 2 choses différentes et qui cohabitent très bien ensemble.
Toutes tes dim ne sont peut être pas des SCD.
De plus dans ta table de fait tu peux avoir des évènement qui ne renvoient pas à une dim, par exemple la date de livraison de ce que tu vends, tu n'as pas de dim livraison et pourtant tu veux avoir cette date dans ta table de faits. Soit tu mets la date au format date burt dans la table soit tu mets la SK de cette date pour faire la jointure sur la dim date. Tu auras une colonne SKDateLivraisonId qui sera une jointure sur ta dim date.

sinon le début n'est pas mal du tout.

bon courage
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/10/2008, 01h13   #4
Membre du Club
 
Inscription : août 2008
Messages : 223
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 223
Points : 67
Points : 67
Citation:
Envoyé par Hebus_Beer Voir le message
Salut,

Avec l'intro que tu as fait, j'ai l'impression de faire ma BA quotidienne.
C'est bien pour ca que je la tourne de cette maniere. Mais vu que tu es le seul a avoir pris la peine de répondre a ce post, j'imagines que c'était le minimum a faire pour avoir une réponse. Mais c'est aussi une simple question de politesse.

Citation:
Envoyé par Hebus_Beer Voir le message
Par contre est ce que tu dors bien la nuit ?
Oui je te rassure je dors bien du moins maintenant que c'est finit. Mais bon, quand un client te fout la pression pour pleins de raisons et que tu debarques sur ces problématiques, y'a de quoi passer de mauvaises nuits parfois, non ?

Merci pour tes réponses en tout cas.
mederik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/12/2008, 10h32   #5
Membre du Club
 
Inscription : juin 2005
Messages : 269
Détails du profil
Informations forums :
Inscription : juin 2005
Messages : 269
Points : 67
Points : 67
Citation:
Envoyé par Hebus_Beer Voir le message
De plus dans ta table de fait tu peux avoir des évènement qui ne renvoient pas à une dim, par exemple la date de livraison de ce que tu vends, tu n'as pas de dim livraison et pourtant tu veux avoir cette date dans ta table de faits. Soit tu mets la date au format date burt dans la table soit tu mets la SK de cette date pour faire la jointure sur la dim date. Tu auras une colonne SKDateLivraisonId qui sera une jointure sur ta dim date.
C'est ce qu'on appelle une "Degenerated Dimension", n'est ce pas ?
Dimension dégénérée en french.
tatayoyo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/12/2008, 12h45   #6
Modérateur
 
Avatar de doc malkovich
 
Homme
Consultant en Business Intelligence
Inscription : juillet 2008
Messages : 954
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : juillet 2008
Messages : 954
Points : 1 486
Points : 1 486
Citation:
Envoyé par mederik Voir le message
7.1 - En DATE_REF qu'est-ce qu'on prend : une date d'enregistrement dans le DWH où une date fonctionnelle qui est couplée à l'indicateur ? Genre pour un CA sur un CONTRAT, on prends, dans le cade des SCD, la date de signature du contrat = DATE_REF où entrée dans le DWH = DATE_REF ?
normalement tu prends les dates fonctionnelles, et tu peux en avoir plusieurs, ex: date de signature, date d'envoi, date de résiliation, date comptable, date de 1ère livraison ... là les SCD sont intéressantes, car on peut suivre le "dimensionnement" du contrat en fonction des différentes dates, et donc un peu du cycle de vie du contrat, et non avoir la dernière vision ( mais hum, je pense que je t'embrouille là )

je suis d'accord avec hebus_beer, la date d'alim ne sert pas à grand choses, elle ne signifie pas gd chose fonctionnellement
la date du jour est + intéressante ...
doc malkovich est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2008, 12h15   #7
Membre émérite
 
Avatar de patriceharel
 
Homme Patrice Harel
Consultant en Business Intelligence
Inscription : mai 2008
Messages : 460
Détails du profil
Informations personnelles :
Nom : Homme Patrice Harel
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 460
Points : 831
Points : 831
Bonjour,

J'ai pris une demie journée de congé pour pouvoir te lire et te répondre .
Bref je vais tenter d'apporter ma pierre à l'édifice (et s'il le faut, n'hésitez pas à me corriger... je viens de rentrer dans la vie active et mon expérience est pour le moment assez réduite).

Quand tu parles d'historisation, c'est bien pour le principe général du datawarehouse? Car il faut distinguer l'historisation (pour les faits) et les SCD. L'historisation (principe de base du datawarehouse) permet de conserver les informations (par exemple le nombre de ventes du commercial TOTO pour le mois 5 et l'année 99) qui seront ensuite utilisées dans les analyses pour faire des prévisions. Dans ce cas, c'est grâce à la DimTemps que l'on fera ces analyses sur le passé.
Les SCD sont là pour pallier au fait que les informations des DIMENSIONS évolues dans le temps. Imaginons que le commercial TOTO s'occupe de la Zone C entre 99 et 2001. Si après 2001, il change de Zone de prospection, il faudra bien conserver la "jointure" entre ses performances de ventes (dans les faits) et la région correspondante (dans une dimension). Les SCD sont utilisées pour garder un historique des données qui servent à qualifier les faits. Pour cela on peut effectivement utiliser une DateDebValidite et une DateFinValidite (mais il existe d'autre type de gestion des SCD voir ici)
Tout ça pour dire que DimTemps et SCD... c'est pas la même chose.
patriceharel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2009, 13h56   #8
Membre à l'essai
 
Inscription : décembre 2007
Messages : 89
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 89
Points : 20
Points : 20
bonjour à tous ,
donc si je comprend bien , en gros pour historiser ( garder une trace des changement s'il y en a que ça soit pour les faits ou pour les dimensions ) on met date début et date de fin et c'est tout ?
rrbenez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2009, 13h57   #9
Modérateur
 
Avatar de doc malkovich
 
Homme
Consultant en Business Intelligence
Inscription : juillet 2008
Messages : 954
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : juillet 2008
Messages : 954
Points : 1 486
Points : 1 486
non, pas pour les faits, enfin je te le déconseille ....
doc malkovich est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/03/2009, 11h04   #10
Membre émérite
 
Avatar de patriceharel
 
Homme Patrice Harel
Consultant en Business Intelligence
Inscription : mai 2008
Messages : 460
Détails du profil
Informations personnelles :
Nom : Homme Patrice Harel
Âge : 26
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Service public

Informations forums :
Inscription : mai 2008
Messages : 460
Points : 831
Points : 831
Les changements que l'on doit traiter et ceux dont on parle ici (supprimés, horodatés ou mise à jour) s'opèrent sur les dimensions. Les faits ne sont que des mouvements/ évènements/ instants (ou tout autre dénomination). Ils sont dûment établis et (logiquement) indiscutables. Ils n'ont pas besoin de date de début ou de fin de validité à mon sens.
__________________
Patrice Harel
http://http://patriceharel.blogspot.com/
patriceharel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h10.


 
 
 
 
Partenaires

Hébergement Web