2009-06-15 15 views
0

Ich habe gerade angefangen, in Data Warehousing einzutauchen, und ich habe eine Frage, die ich einfach nicht herausfinden kann.Fragen zum Data Warehouse-Bericht

Ich habe ein Geschäft, das zehn Geschäfte hat, jedes mit bestimmten Angestellten. In meinem Data Warehouse habe ich eine Dimension, die das Geschäft repräsentiert. Die Mitarbeiterdimension ist ein SCD mit einer Spalte für Start/Ende und dem Geschäft, in dem der Mitarbeiter arbeitet.

Meine Faktentabelle basiert auf Vorschlägen, die die Mitarbeiter (anonym) den Filialleitern geben. Diese Tabelle enthält den Vorschlagstyp (Sauberkeit, Gehaltsproblem usw.), das Datum, an dem er eingereicht wurde (Fremdschlüssel, der an eine Zeitdimensionstabelle gebunden ist), und das Geschäft, in dem er eingereicht wurde.

Ich möchte einen Bericht erstellen, der das Verhältnis der Anzahl der Vorschläge zur Anzahl der Mitarbeiter in einem bestimmten Jahr zeigt. Da sich die Anzahl der Mitarbeiter regelmäßig ändert, kann ich keine einfache Abfrage für die Gesamtzahl der Mitarbeiter durchführen.

Leider habe ich im Web ziemlich viel versucht, eine Lösung zu finden, aber die Mehrheit der Beispiele sind Einzelhandelsverkäufe, die sich von dem unterscheiden, was ich versuche zu tun.

Jede Hilfe wäre willkommen. Ich habe das AdventureWorksDW auf meinem Computer installiert, so dass ich es als einen Bezugspunkt verwenden kann, wenn jemand einen Vorschlag dafür anbietet.

Vielen Dank im Voraus!

+0

Sie verwenden SQL dann? Und es würde helfen, wenn Sie Ihre grundlegenden Tabellenstrukturen gepostet haben. – Nick

Antwort

1

Die sich langsam ändernde Dimension sollte einen natürlichen Schlüssel haben, der die Quelle der Zeile identifiziert (andernfalls würde sie wissen, was verglichen werden muss, um Änderungen zu erkennen). Dies sollte unter allen Iterationen der Dimension konstant sein. Sie können die Anzahl der Mitarbeiter ermitteln, indem Sie eine eindeutige Anzahl des natürlichen Schlüssels berechnen.

Edit: Wenn Ihre Transaktionstabelle (Vorschlag) hat ein Datum darauf, eine deutliche Anzahl der Mitarbeiter durch eine berechnete Funktion des Vorschlags Datums (z datepart (yy, s.SuggestionDate)) und die Business Unit gruppierten sollte es tun. Sie müssen sich keine Gedanken über das Datum in der Mitarbeiterdimension machen, da die betreffende Zeile direkt mit der Transaktionstabelle verknüpft werden sollte.

+0

Ich habe einen natürlichen Schlüssel auf dem Mitarbeitertisch.Das größte Problem besteht darin, die Anzahl der Mitarbeiter für eine bestimmte Geschäftseinheit für einen bestimmten Zeitraum zu ermitteln, wenn mit dem Cube abgefragt wird. Wenn ein Schema benötigt wird, lass es mich wissen und ich poste etwas – bdowden

0

Fügen Sie für jeden Monat eine weitere Faktentabelle für die Anzahl der Mitarbeiter in jedem Geschäft hinzu - Sie können die maximale Anzahl für den Monat verwenden. Dann durchschnittliche Monate für das Jahr, verwenden Sie dies als "Anzahl der Mitarbeiter in einem Jahr".

Laden Sie Ihre neue Faktentabelle am Ende jedes Monats. Die neue Tabelle würde so aussehen:

Faktentabelle: EmployeeCount

KeyEmployeeCount int - Ersatzschlüssel

KEYDATE int - FK bisher Dimension, Punkt zum letzten Tag eines Monats

Keystor int - zu speichern Dimension FK

NumberOfEmployes int - (max) Anzahl der Mitarbeiter für den Monat in einem bestimmten Geschäft

Wenn Sie eine feinere Auflösung benötigen, verwenden Sie "pro Woche" oder sogar "pro Tag". Die Hauptidee besteht darin, die NumberOfEmployes-Kennzahl für ein bestimmtes Geschäft über das Jahr zu mitteln.