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!