Zaczynamy projektować elementy składowe hurtowni danych i musimy być w stanie obsługiwać wszystkie strefy czasowe (nasi klienci pochodzą z całego świata). Po przeczytaniu dyskusji online (i książek) powszechnym rozwiązaniem wydaje się mieć osobny wymiar daty i godziny oraz znacznik czasu w tabelach faktów.
Jednak pytanie, na które trudno mi odpowiedzieć, brzmi: co właściwie ma dla mnie wymiar daty i godziny, biorąc pod uwagę moje wymagania dotyczące dynamicznej strefy czasowej? Wymiar czasu ma trochę więcej sensu, ale mam trudności z wymiarem daty. Ogólne podejście do projektowania wymiaru daty zwykle obejmuje takie właściwości, jak nazwa dnia, dzień tygodnia, nazwa miesiąca itp. Problem, który mam ze wszystkim, to jest o 23:00 we wtorek, 31 grudnia 2013 r. W UTC jest środa , 1 stycznia 2014 r. We wszystkich strefach czasowych po UTC + 2.
Więc jeśli będę musiał wykonać wszystkie te konwersje stref czasowych dla każdego zapytania (i raportu), jaki jest sens posiadania i przechowywania tych właściwości, których prawdopodobnie nigdy nie użyję (wydaje się)? Niektóre osoby sugerują tworzenie wierszy faktów dla każdej strefy czasowej, ale wydaje mi się to śmieszne. Musimy być w stanie przechowywać miliony rekordów każdego miesiąca.
Inni sugerują posiadanie tabeli mostu strefy czasowej, co choć ma sens, wydaje się również dodatkową złożonością i dodatkowymi połączeniami, aby osiągnąć coś, co moje aplikacje klienckie i raporty powinny z łatwością ustalić na podstawie daty (raportowanie będzie przede wszystkim oparte na Internecie gdzie istnieje niezliczona ilość bibliotek pomocnych w konwertowaniu, wyświetlaniu i formatowaniu dat).
Jedyne, co mogę wymyślić, to łatwość i być może wydajność grupowania według daty i godziny, ale jak kiepska jest praktyka grupowania według dat (korzystamy z MS SQL, ale będziemy sprawdzać miliony wierszy) lub powinniśmy rozważyć po prostu niezwykle proste wymiary daty i godziny, w większości z nie więcej niż godzinami, dniami, miesiącami i rokami, ponieważ większość literałów, takich jak poniedziałek, nie miałaby większego znaczenia, kiedy w grę wchodzą strefy czasowe?