Wir beginnen mit dem Entwurf der Bausteine eines Data Mart / Warehouse und müssen in der Lage sein, alle Zeitzonen zu unterstützen (unsere Kunden kommen aus der ganzen Welt). Beim Lesen von Diskussionen online (und in Büchern) scheint eine gängige Lösung darin zu bestehen, eine separate Datums- und Zeitdimension sowie einen Zeitstempel in den Faktentabellen zu haben.
Die Frage, die ich nur schwer beantworten kann, ist jedoch, was die Datums- und Zeitdimensionen angesichts meiner dynamischen Zeitzonenanforderungen tatsächlich für mich tun. Eine Zeitdimension ist etwas sinnvoller, aber ich habe Schwierigkeiten mit der Datumsdimension. Ein allgemeiner Entwurfsansatz für eine Datumsdimension umfasst normalerweise Eigenschaften wie Tagesname, Wochentag, Monatsname usw. Das Problem, das ich mit all dem habe, ist, dass am Dienstag, dem 31. Dezember 2013, um 23:00 Uhr in UTC Mittwoch ist , 1. Januar 2014 in allen Zeitzonen nach UTC + 2.
Wenn ich also all diese Zeitzonen-Konvertierungen für jede einzelne Abfrage (und jeden Bericht) durchführen muss, wozu dann diese Eigenschaften haben und speichern, die ich wahrscheinlich nie verwenden werde (wie es scheint)? Einige Leute schlagen vor, Faktenzeilen für jede Zeitzone zu haben, aber das scheint mir lächerlich. Wir müssen in der Lage sein, jeden Monat Millionen von Datensätzen zu speichern.
Andere schlagen vor, eine Zeitzonen-Brückentabelle zu haben, die zwar sinnvoll ist, aber auch zusätzliche Komplexität und zusätzliche Verknüpfungen erfordert, um etwas zu erreichen, das meine Client-Apps und -Berichte ab einem Datum leicht herausfinden sollten (die Berichterstellung erfolgt hauptsächlich webbasiert) wo es eine Vielzahl von Bibliotheken gibt, die beim Konvertieren, Anzeigen und Formatieren von Daten helfen können).
Das einzige, woran ich denken kann, ist die Leichtigkeit und möglicherweise Leistung der Gruppierung nach Datum und Stunde, aber wie schlecht es ist, nach Datumsteilen zu gruppieren (wir verwenden MS SQL, aber wir werden Millionen von Zeilen abfragen) oder sollten wir dies berücksichtigen Nur extrem einfache Datums- und Zeitdimensionen mit nicht viel mehr als Stunden-, Tag-, Monats- und Jahreszahlen zum größten Teil, da die meisten Literale wie Montag nicht viel bedeuten würden, wenn Zeitzonen ins Spiel kommen?