Pergunta

Eu sou a criação de tabelas de fatos e Dim e tentando descobrir a melhor maneira de configurar os meus valores de tempo. AdventureworksDW usa um timekey (UID) para cada entrada de tempo na tabela de DimTime. Eu estou querendo saber há alguma razão que eu não deve apenas usar um valor de tempo ao invés ou seja 0106090800 (My granularidade é hora)?

Foi útil?

Solução

"chaves inteligentes" (neste caso, uma data código e número de horas) pode levar a problemas quando você deseja alterar definições em sua dimensão. Por exemplo, os usuários podem insistir em uma mudança de hora local para UTC. Agora sua chave já não é realmente um número útil, é o valor antigo na dimensão.

Além disso, com uma questão roll-over da meia-noite, a parte da data de sua chave inteligente pode não coincidir com a data real da UTC vs. mudança da hora local.

Para evitar que a chave de se tornar um problema, você não pode usá-lo para qualquer cálculo de qualquer tipo. Nesse caso, é pouco melhor do que um GUID simples ou número de auto-incremento.

teclas

auto-incremento (ou GUIDS) são rápidos e simples. Mais importante, eles são trivialmente consistente em todas as dimensões.

Tempo acontece de ter um mapeamento numérico, mas ajuda a olhar para isto é uma coincidência estranha, não uma base para um bom design.

Outras dicas

A chave primária deve ser substituto, sem sentido - no entanto, usando AAAAMMDD para a chave dimensão de data é difícil resistir, e também permite a fácil particionamento de tabela. O truque é que ele ainda deve ser considerado como sem sentido - o fato de que ele se parece com uma data deve ser considerado como mera coincidência. Esta chave não deve ser exposto a usuários de negócios.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top