Stiamo iniziando a progettare gli elementi costitutivi di un data mart / magazzino e dobbiamo essere in grado di supportare tutti i fusi orari (i nostri clienti provengono da tutto il mondo). Dalla lettura delle discussioni online (e nei libri), una soluzione comune sembra essere quella di avere una dimensione data e ora separata, nonché un timestamp nelle tabelle dei fatti.
Tuttavia, la domanda a cui ho difficoltà a rispondere è: a cosa servono effettivamente le dimensioni di data e ora, considerando i miei requisiti di fuso orario dinamico? Una dimensione temporale ha un po 'più senso, ma sto avendo difficoltà con la dimensione data. Un approccio di progettazione generale per una dimensione data di solito include proprietà come il nome del giorno, il giorno della settimana, il nome del mese, ecc. , 1 gennaio 2014 in tutti i fusi orari successivi a UTC + 2.
Quindi, se dovrò fare tutte queste conversioni di fuso orario su ogni singola query (e report), qual è il punto di avere e archiviare queste proprietà che probabilmente non userò mai (sembra)? Alcune persone suggeriscono di avere file di fatti per ogni fuso orario, ma mi sembra ridicolo. Dobbiamo essere in grado di archiviare milioni di record ogni mese.
Altri suggeriscono di avere una tabella di bridge di fuso orario che, sebbene abbia un senso, sembra anche più complessità e unioni extra per realizzare qualcosa che le mie app e i miei report client dovrebbero essere facilmente in grado di capire da una data (il reporting sarà principalmente basato sul web dove ci sono una miriade di librerie per aiutare a convertire, visualizzare e formattare le date).
L'unica cosa che mi viene in mente è la facilità e possibilmente le prestazioni del raggruppamento per data e ora, ma quanto è brutta una pratica raggruppare per datapart (stiamo usando MS SQL ma interrogheremo milioni di righe) o dovremmo considerare solo dimensioni della data e dell'ora estremamente semplici con non più di ore, giorno, mese e anno per la maggior parte dato che la maggior parte dei letterali come il lunedì non significherebbe molto quando entrano in gioco i fusi orari?