Estamos começando a projetar os blocos de construção de um data mart / armazém e precisamos oferecer suporte a todos os fusos horários (nossos clientes são de todo o mundo). Ao ler as discussões on-line (e nos livros), uma solução comum parece ter uma dimensão separada de data e hora, além de um registro de data e hora nas tabelas de fatos.
No entanto, a pergunta que estou tendo dificuldade em responder é qual é a utilidade das dimensões de data e hora para mim, considerando meus requisitos dinâmicos de fuso horário? Uma dimensão de tempo faz um pouco mais de sentido, mas estou tendo dificuldades com a dimensão de data. Uma abordagem geral de design para uma dimensão de data geralmente inclui propriedades como nome do dia, dia da semana, nome do mês etc. O problema que estou tendo com tudo isso é 23h na terça-feira, 31 de dezembro de 2013 no UTC, na quarta-feira. , 1º de janeiro de 2014 em todos os fusos horários após o UTC + 2.
Portanto, se tiver que fazer todas essas conversões de fuso horário em todas as consultas (e relatórios), qual é o sentido de armazenar e armazenar essas propriedades que provavelmente nunca irei usar (parece)? Algumas pessoas sugerem ter linhas de fatos para cada fuso horário, mas isso me parece ridículo. Precisamos ser capazes de armazenar milhões de registros por mês.
Outros sugerem ter uma tabela de ponte de fuso horário que, embora faça algum sentido, também pareça uma complexidade extra e junções extras para realizar algo que meus aplicativos e relatórios de clientes possam descobrir facilmente a partir de uma data (os relatórios serão principalmente baseados na Web onde existem inúmeras bibliotecas para auxiliar na conversão, exibição e formatação de datas).
A única coisa em que consigo pensar é na facilidade e, possivelmente, no desempenho do agrupamento por data e hora, mas quão ruim é uma prática de agrupar por parte da data (estamos usando o MS SQL, mas estaremos consultando milhões de linhas) ou devemos considerar apenas dimensões extremamente simples de data e hora com, no máximo, números de horas, dias, meses e anos, pois a maioria dos literais, como segunda-feira, não significaria muito quando os fusos horários entrariam em jogo?