|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité de passage
![]() Inscription : février 2007 Messages : 14 ![]() |
Bonjour,
J’aurai besoin d’aide pour la conception d’un univers. N’ayant pas BO d’installé sur mon poste je peux pas tester par moi-même. Voici ma problématique et la solution que je compte mettre en place : Dans mon DTM, j’ai une table de dimension cliente C, une table de dimension Semaine S et une table de fait F. J’ai un indicateur I qui va se décliner sur 5 semaines (semaines S-2 à S+2) par client => dans l'univers j'aurai un objet client, un objet semaine et 5 objets indicateurs IS, IS-2 ..... 2 Solutions : Mettre en place 1 Table de faits avec 1 id semaine, 1 Id client et la valeur de l’indicateur pour les différentes semaines. J’aurai donc ce type d’enregistrements dans ma base (5 colonnes pour 1 Indicateur avec des valeurs souvent égales à 0 ou 1 car niveau fin) Client 1 ID S (numéro de la semaine) : 16 I1 S-2 : 0 I1 S-1 : 0 I1 S : 0 I1 S+1 : 1 I1 S+2 : 0 La création de mes 5 objets indicateurs se fera tel quel : I1 S : select sum(I1 S) from F, C, S where F.ID S = S.id_semaine and F.id_client = C.id_client I2 S : select sum(I2 S) from F, C, S where F.ID S = S.id_semaine and F.id_client = C.id_client Cette solution pose un problème en terme de volumétrie sachant que dans cette table de niveau fin, les valeurs renseignées seront dans la pratique très souvent 0 ou 1 . Pour obtenir une volumétrie plus faible l’autre solution serait de : Mettre en place 1 Table de fait avec 5 id semaines (S-2 ….S+2), 1 Id client et l'indicateur I1. Exemple d’enregistrements dans le DTM (plus qu’une colonne pour mon indicateur) : Client 1 (PK) ID S-2 : 15 (FK) ID S-1 : 16 (FK) ID S : 17 (PK) ID S+1 : 18 (FK) ID S+2 : 19 (FK) I1 : 1 Client 1 ID S-2 : 16 ID S-1 : 17 ID S : 18 ID S+1 : 19 ID S+2 : 20 I1 : 0 Client 1 ID S-2 : 17 ID S-1 : 18 ID S : 19 ID S+1 : 20 ID S+2 : 21 I1 : 1 Client 1 ID S-2 : 18 ID S-1 : 19 ID S : 20 ID S+1 : 21 ID S+2 : 22 I1 : 1 Exemple de restitution désirée : Code :
Dois je créer 5 tables d’alias + contextes (1 Pour S-2, 1 pour S-1 … 1 Pour S+2) et je créer mes 5 objets sur des tables différentes ou dois je garder une seule table de fait et créer uniquement 5 contextes ? ID S-2 -> ID semaine (Contexte S+2) => permet de calculer I1 S+2 ID S-1 -> ID semaine (Contexte S+1) ID S -> ID semaine (Contexte S) ID S+1 -> ID semaine (Contexte S-1) ID S+2 -> ID semaine (Contexte S-2) Si j’utilise les alias je pourrais bien utiliser mes 5 objets dans une même requête sans problème de sorte que le SQL généré soit de ce type : Select S.id_semaine, C.id_client, sum(I1 S-2), sum(I1 S-1), sum(I1 S), sum(I1 S+1), sum(I1 S+2) From FS-2.ID_S = S.id_semaine, FS-1.ID_S = S.id_semaine, FS.ID_S = S.id_semaine, FS+2.ID_S = S.id_semaine, FS+1.ID_S = S.id_semaine, FS-2.id_client = c.id_client, FS-1.id_client = c.id_client, FS.id_client = c.id_client, FS+1.id_client = c.id_client, FS+2.id_client = c.id_client Group by S.id_semaine, C.id_client Les tables d’alias ne sont pas des tables physique mais logiques ? Créer 5 tables d’alias ne va pas multiplier ma volumétrie par 5 ? Merci à vous pour toute réponse pouvant m'éclairer |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com