2009-11-19 10 views
1

comment voulez-vous modéliser ce dans un entrepôt de données:conception de table de fait (s) pour l'entrepôt de données


  1. il y a des municipalités qui sont des zones géographiques, qui existent dans les hiérarchies géographiques, une telle province (par exemple l'état, par exemple Minnesota), région (par exemple MidWest). Une évaluation de la performance est effectuée sur ces municipalités, en calculant des indicateurs de performance tels que «% de l'arriéré de logement achevé», «% du budget dépensé», «% du budget alloué à l'infrastructure», «couverture du débiteur», etc.

  2. il existe environ 100 de ces indicateurs de performance.

  3. ces indicateurs sont regroupés en « groupes de performance », qui sont eux-mêmes regroupés en « domaines clés de performance »

  4. calculs sont appliqués aux indicateurs de performance (les calculs varient en fonction de certains facteurs tels que le type de municipalité, taille, région, etc.) pour produire des «scores de performance». Des pondérations sont ensuite appliquées aux scores pour créer des «scores pondérés finaux». (c'est-à-dire que certains indicateurs sont plus pondérés que d'autres lorsqu'ils sont agrégés dans les «domaines de performance clés»)

  5. Il y aura une dimension temporelle (évaluations effectuées annuellement), mais pour le moment, il n'y aura qu'un jeu de données.


NB: les utilisateurs doivent pouvoir facilement interroger les données à travers une combinaison d'indicateurs. quelqu'un pourrait vouloir voir: (i) le niveau de performance de (ii) "couverture du débiteur" contre (iii) "% budget dépensé" contre (iv) "jours débiteurs" à un niveau (v) provincial. J'ai essayé ceci en ayant "IndicatorType" comme dimension, et en ayant la hiérarchie [indicateur/groupe de performance/domaine de performance] dans cette table - mais alors je ne peux pas calculer comment obtenir facilement plusieurs indicateurs sur le même ligne, car il aurait besoin d'un alias de table de faits (?). J'ai donc pensé à mettre tous les 100 éléments en colonnes dans une table de faits (très large!) - mais alors je perdrais la hiérarchie [groupe/zone] sur les indicateurs ...?

Des idées?

Merci

Répondre

1

Ceci est très impliqué question, mais je pris le temps de passer par certains de vos points et est venu avec ce modèle (devrait être un bon point de départ pour vous).

Dimensions:

DIM_MUNICIPALITIES:

champs = {MUNICIPAL_KEY, pays, région, STATE_PROV, VILLE ?, SIZE_SCORE}

Hiérarchie = {PAYS < - REGION < - STATE_PROV < - - VILLE?}

DIM_INDICATORS:

champs = {INDICATOR_KEY, PERFORMANCE_AREA, PERFORMANCE_GROUP, PERFORMANCE_INDICATOR}

Hiérarchie = {PERFORMANCE_AREA < - PERFORMANCE_GROUP < - PERFORMANCE_INDICATOR}

DIM_DATE:

Les champs = {DATE_KEY, CALENDAR_DATE (SQL datetime), ANNÉE, MOIS, SEMAINE, JOUR ...}

Hiérarchie = {ANNÉE < - MOIS < - SEMAINE < - JOUR < - DATE_KEY}

Ensuite, dans votre table de fait (disons MYFACT) vous feriez quelque chose comme ce qui suit:

FACT_MYFACT:

Fields = {MYFACT_KEY, DATE_KEY, MUNICIPAL_KEY, INDICATOR_KEY, PERFORMANCE_SCORE, BUDGET, ETC ....}

Le tableau de fait pourrait avoir toutes ces colonnes de mesure (budget, ETC) ou vous pouvez les faire en Calculée membres, je Tout dépend de la façon dont vous voulez rendre l'accès.

J'espère que cela vous aidera à bien commencer!

+0

merci pour votre message. cependant, je suis confus: si la dimension au niveau de l'indicateur existe, alors il n'y a pas besoin de plusieurs colonnes de mesure dans la table de faits, car elles sont la même chose. Il s'agit en réalité des avantages de conception d'une table de faits de colonne de 100, par rapport à une seule colonne de mesure numérique et une dimension de «type de mesure» (dans ce cas, la dimension d'indicateur). avec une table large, je peux facilement sortir plusieurs colonnes côte à côte, mais je perds la hiérarchie PI/PG/KPA. avec la dimension d'indicateur, je perds la flexibilité de rapport. ou existe-t-il un autre moyen? – Sean

+0

plus: je penserais 3 tables de faits: - indicateur de performance - Score de performance - score final pondérée (les calculs sont faits dans la charge, à savoir les règles de notation et les pondérations sont appliquées alors, pas dans le d/w) donc: si j'ai 100 colonnes dans la table de faits "indicateur de performance", j'ai 100 mesures. Maintenant, il est facile de rapporter 15 mesures différentes. Si les mesures sont dans un DIM, alors j'ai seulement 1 objet de mesure, et ai besoin d'un filtre pour obtenir le bon, et les alias pour obtenir plusieurs? et quand signaler d'excel, ceci n'est pas possible? alors allez large et perdre la hiérarchie PI/PG/KPA? – Sean

+0

Je ne voulais pas dire mettre les mesures dans le DIM, je n'étais pas sûr de ce que vous entendez par score de taille (si c'est de quoi vous parlez). Je dois avoir mal interprété ce que vous entendiez par indicateur. Dans la dimension Indicateur, je stocke les champs qui décrivent et dénotent un certain indicateur, puis la mesure réelle de cette valeur dans le FAIT. – ajdams

3

Espérons que cela se passe d'explication.

regionperf_model_01

+0

Cela ressemble à peu près à cela: en plaçant la clé IndicatorKey dans la table de faits et en n'ayant qu'une seule valeur IndicatorValue générique, vous avez une approche paire-clé-valeur. Ce n'est pas très utile pour les rapports, mais c'est un moyen pratique de gérer l'inévitabilité de vos indicateurs qui changent avec le temps. Sur la base de ces données, vous pouvez ensuite publier ces données dans une table aplatie avec différentes mesures en tant que colonnes dédiées. Cette table secondaire serait plus facile à changer - et peut-être vous n'avez pas besoin de chaque mesure individuelle - peut-être juste la zone de performance et les numéros de groupe beaucoup plus statiques. – KenFar