Frank (nicht eingeloggt): Star-Schema-Modellierung - Zeitdimension

Beitrag lesen

Hallo,

du möchtest direkt in eine Fakt-Tabelle eines Star-Schemas Records einfügen. Der Klick wäre dann der Fakt selbst und besteht somit nur aus einer kombination der Dimension(swerte)? Wenn du dazu eine bestehende Tabelle für die Zeitdimension führen willst, hast du in der Tat ein paar kleines Probleme -> du müsstest sie vor-füllen. Sowas machst du aber insgesamt nur einmal und nicht jedes mal.
Wie hoch bzw. fein soll denn die Granularität der Zeitdimension sein. Tagweise, wie du bereits erwähnt hast? Dann könnte der PK dieser Tabelle einfach eine numerisch-serialisierte Variante des Datums sein. Bei MS SQL Server ergibt ein CONVERT(int, '1900-01-02') eine 1. Bei einem Insert könnte man so implizit einen korrekten Fremdschlüsselwert erhalten, ohne erst ein Lookup auf die Dimensionstabelle machen zu müssen.

Die Ausgestaltung der Dimensionstabelle mit persistierten Werten für "Label", Wochentag, Wochennummer, Monat, Jahr, Quartal usw. für die Zeit ist dann deiner Phantasie überlassen. Implizit lassen sich dann auch Dimensionshierarchien schnell aufbauen.

In meinem Data Warehouse :) ist die Grösse der Tabelle für die Dimension "Zeit" absolut unsignifikant (7500kb). Es sind da Daten drin von 1980 bis 2099 ...

Befüllen machst du mit einem Script (PHP Script, SQL Batch), welches zum Beispiel eine Schleife von x bis y hat und für jeden Schleifendurchlauf ein Insert in die Zeittabelle macht. Da sowas nur einmal alle paar zig Jahre gemacht wird, dürfte es nicht stören, wenn es 5 min dauert.

Eine ganz andere Alternative ohne explizite Tabelle für die Dimension Zeit wäre: Du speicherst das Klickdatum direkt als Datums-Datentyp in die Fakttabelle. Wannimmer du dann Auswertungen machst, benutzt du Datumsfunktionen und Aggregatsfunktionen. Indizieren dieser Datumsspalte sollte da die Performance verbessern.

Hoffe dir etwas geholfen zu haben.
Cheers, Frank