Escolha entre tipos de dimensão que mudam lentamente

Concluído

A teoria do design de esquemas em estrela refere-se a tipos comuns de SCD. Os mais comuns são o Tipo 1 e o Tipo 2. Na prática, uma tabela de dimensões pode suportar uma combinação de métodos de rastreamento de histórico, incluindo Tipo 3 e Tipo 6. Vamos conhecer a diferença desses tipos de SCD.

SCD tipo 1

Um SCD Tipo 1 sempre reflete os valores mais recentes e, quando alterações nos dados de origem são detetadas, os dados da tabela de dimensões são substituídos. Essa abordagem de design é comum para colunas que armazenam valores suplementares, como o endereço de e-mail ou o número de telefone de um cliente. Quando um endereço de e-mail ou número de telefone do cliente é alterado, a tabela de dimensões atualiza a linha do cliente com os novos valores. É como se o cliente sempre tivesse essa informação de contato. O campo-chave, como CustomerID, permaneceria o mesmo para que os registros na tabela de fatos fossem automaticamente vinculados ao registro de cliente atualizado.

Um exemplo de linha SCD Tipo 1 que atualiza CompanyName e ModifiedDate.

SCD tipo 2

Um SCD Tipo 2 suporta versionamento de membros de dimensão. Muitas vezes, o sistema de origem não armazena versões, de modo que o processo de carga do data warehouse deteta e gerencia alterações em uma tabela de dimensão. Nesse caso, a tabela de dimensões deve usar uma chave substituta para fornecer uma referência exclusiva a uma versão do membro da dimensão. Ele também inclui colunas que definem a validade do intervalo de datas da versão (por exemplo, StartDate e EndDate) e possivelmente uma coluna de sinalizador (por exemplo, IsCurrent) para filtrar facilmente por membros da dimensão atual.

Por exemplo, a Adventure Works atribui vendedores a uma região de vendas. Quando um vendedor realoca uma região, uma nova versão do vendedor deve ser criada para garantir que os fatos históricos permaneçam associados à região anterior. Para dar suporte a uma análise histórica precisa das vendas por vendedor, a tabela de dimensões deve armazenar versões dos vendedores e sua(s) região(ões) associada(s). A tabela também deve incluir valores de data de início e término para definir a validade de tempo. As versões atuais podem definir uma data de término vazia (ou 31/12/9999), o que indica que a linha é a versão atual. A tabela também deve definir uma chave substituta porque a chave comercial (neste caso, ID do funcionário) não será exclusiva.

Um exemplo de linha SCD Tipo 2 que mostra um novo registro para alteração de região.

É importante entender que, quando os dados de origem não armazenam versões, você deve usar um sistema intermediário (como um data warehouse) para detetar e armazenar alterações. O processo de carregamento de tabela deve preservar os dados existentes e detetar alterações. Quando uma alteração é detetada, o processo de carregamento da tabela deve expirar a versão atual. Ele registra essas alterações atualizando o EndDate valor e inserindo uma nova versão com o StartDate valor começando a partir do valor anterior EndDate . Além disso, os fatos relacionados devem usar uma pesquisa baseada no tempo para recuperar o valor da chave da dimensão relevante para a data do fato.

SCD tipo 3

Um SCD Tipo 3 suporta o armazenamento de duas versões de um membro de dimensão como colunas separadas. A tabela inclui uma coluna para o valor atual de um membro mais o valor original ou anterior do membro. Assim, o Tipo 3 usa colunas adicionais para rastrear uma instância chave do histórico, em vez de armazenar linhas adicionais para controlar cada alteração, como em um SCD Tipo 2.

Esse tipo de rastreamento pode ser usado para uma ou duas colunas em uma tabela de dimensões. Não é comum usá-lo para muitos membros da mesma mesa. É frequentemente usado em combinação com membros do Tipo 1 ou Tipo 2.

Um exemplo de linha SCD Tipo 3 que mostra uma coluna CurrentEmail atualizada e uma coluna OriginalEmail inalterada.

SCD tipo 6

Um SCD Tipo 6 combina o Tipo 1, 2 e 3. Quando uma alteração acontece a um membro do Tipo 2, você cria uma nova linha com StartDate e EndDate apropriadas. No design Tipo 6, você também armazena o valor atual em todas as versões dessa entidade para que possa relatar facilmente o valor atual ou o valor histórico.

Usando o exemplo de região de vendas, você divide a coluna Região em CurrentRegion e HistoricalRegion. O CurrentRegion sempre mostra o valor mais recente e o mostra a HistoricalRegion região que foi válida entre o StartDate e EndDate. Assim, para o mesmo vendedor, cada registro teria a região mais recente preenchida CurrentRegion enquanto HistoricalRegion funciona exatamente como o campo de região no exemplo de SCD Tipo 2.

Um exemplo de linha SCD Tipo 6 que mostra um novo registro para alteração de região com CurrentRegion atualizado para linha antiga e nova.