Dimensão e fato para as mesmas entidades?

8

Sou bastante novo no design de DW e estou trabalhando em um DW para modelar alguma infraestrutura de TI.

O principal problema / questão neste momento é como modelar informações da unidade.

Coletaremos dados agregados em arquivos e pastas e separaremos os dados em unidades físicas. As informações do Google Drive incluirão espaço total e livre no mínimo e serão atualizadas várias vezes por semana.

Uma das perguntas comerciais que precisam ser respondidas é como o uso da unidade está tendendo ao longo do tempo. As informações da unidade também serão usadas em uma hierarquia que desce até o nível do arquivo / pasta.

As opções que eu posso ver agora são:

  1. Implementar DRIVEcomo uma dimensão

    • Simplifica o design da hierarquia
    • Isso causará problemas nos relatórios? Parece-me contra-intuitivo relatar dados com limite de tempo apenas em uma dimensão
    • Também parece problemático ter uma dimensão que você sabe que mudará toda vez que atualizar seus dados
  2. Implementar DRIVEcomo uma tabela de fatos

    • Simplifica os relatórios
    • Hierarquia complicada (?) - usarei também Drivepara mapear dados para um servidor ou computador específico. É bom usar uma tabela de fatos como um nível intermediário em uma hierarquia? Eu não acho que é.
  3. Implementar DRIVEcomo fato e dimensão

    • O fato conterá apenas a chave, a data e os fatos no espaço
    • A dimensão incluirá outros dados não aditivos, como o computador em que está ligado etc.
    • Parece resolver os dois problemas, mas isso é um antipadrão?
JNK
fonte

Respostas:

6

Espero ter uma tabela de fatos drive_usage com um link para uma dimensão de tempo de instantâneo, uma dimensão de unidade, uma dimensão de computador e os vários fatos numéricos sobre a unidade naquele instante no tempo.

Provavelmente não deveria haver nada mudando regularmente na dimensão da unidade - acho que depende da sua definição de unidade - é uma unidade física ou uma unidade lógica ou o quê. Talvez sua unidade "C" tenha um número de série e ela seja substituída - a dimensão expirará e uma nova dimensão será adicionada. Essas coisas sobre uma dimensão não são realmente "fatos", são atributos. Isso não afetaria os relatórios porque os dados do computador X, unidade C têm continuidade. Da mesma forma, se o computador X for atualizado de núcleo duplo para núcleo quádruplo e ocorrer uma alteração na dimensão (assumindo que algo além do número de núcleos não seja rastreado em uma tabela de fatos, como uma revisão da placa-mãe). A capacidade de uma unidade estaria na tabela de fatos, portanto, mudanças nessa com o tempo são apenas fatos novos com novas datas. Às vezes, você pode até modelar mudanças na associação como fatos. ou seja, se as unidades físicas 1-5 estiverem na unidade lógica C um dia e as unidades físicas 1-6 estiverem na unidade lógica C no dia seguinte, isso pode ser apenas uma alteração de fato na tabela de fatos de associação à unidade física. É o que algumas pessoas chamam de tabelas de fatos sem fatos, já que o único fato é que a linha mostra a associação - não há muito a ser feito, exceto a totalização ou a contagem.

Quando você entra em pastas, modelar a hierarquia pode ser muito mais complicado, dependendo do que você está tentando alcançar com os rollups.

Há muita arte na modelagem DW em domínios que não são cenários comuns.

Cade Roux
fonte