Avaliando o comportamento da relação entre fato e dimensão quando temos um registro histórico.

Olá pessoal, tudo bem!?!

Há uns posts atrás, mais precisamente, aqui, mostrei como sincronizar e trocar as chaves entre fato e dimensão e talvez, alguns não tenham percebido mas, algumas dimensões eu mantive tanto coluna de ID (natural key do OLTP) quando a Sk(chave criada para o dw).

E qual o motivo de manter essas colunas?

A ação que sustenta esta ideia foi simplesmente manter o mais condizente possível com a minha dimensão, visto que ela possui colunas com o slowly  changing dimension II e nesta configuração, temos um registro histórico criado.

Para o exemplo, irei utilizar a dimensão vendedor por ser pequena e fácil de alterar.

ALTERANDO OS ARQUIVOS & CONSULTANDO A TABELA

Meu primeiro passo para esta demonstração é a alteração de dados do arquivo csv que vem da área de stage e é tratado no job. Esse arquivo é comparado com o csv gerado no banco após a carga final.

As colunas enquadradas de preto e vermelho são controladas pelo modelo scd II, logo irão gerar um histórico.

Consultando o banco, podemos ver que as mudanças foram processadas

Como já criei as constraints e primary keys  no meu modelo dimensional, basta realizar uma consulta qualquer utilizando o join entre tabelas.

A consulta abaixo foi criada com a chave ‘nova’, criada a partir do momento que o registro foi alterado e uma nova inserção foi realizada.

Mas se eu fizer uma query com a chave antiga, também funciona e o mesmo se aplica para a coluna SalesPersonID. 

Veja que é a mesma query, mudando apenas a surrogate  na consulta.

Se por um acaso realizar uma query utilizando a coluna SalesPersonID da tabela fato, veja como o banco retorna a consulta.

E como último teste para este exemplo, realizei uma nova substituição de chaves para averiguar qual chave o pipeline pegou e por incrível que pareça, o PDI utilizou a chave mais nova como valor para a criação dos relacionamentos.

Veja o resultado da query.

CONCLUSÃO

Neste post, quis mostrar apenas o comportamento da relação entre fato e dimensão quando temos dimensões que registram mudança criando um histórico.

Como percebemos, a sincronia e o funcionamento das queries em nada é alterado, podendo utilizar diversos parâmetros para a consulta.

Tenha cuidado caso utilize a coluna que contém a natural key, pois como podemos perceber, ela acaba ‘duplicando’ o resultado por ter mais de uma surrogate; quanto mais mudanças e surrogate criada, maior a quantidade de resultados.

No mais, espero que consigam aplicar em seus modelos e tenham boa sorte nos seus dados!

Se gostou deste post, compartilhe com os amigos!

Saúde, Deus os abençoe!