1
resposta

E como lidar com SCD type 2

Estamos em um projeto onde todos do time fizeram essa formação da Alura, mas estamos esbarrando nesse exemplo....

Aqui, na tabela pai e filho, se uma vinculação mudar você vai sobrescrever tudo...

Mas e se eu não puder sobrescrever... se eu precisar manter o histórico.

Senti falta de exemplo de Slow Changing Dimension tipo 2, porque se em janeiro eu estava vinculado a são paulo e em fevereiro eu mudar minha vinculação para o rio de janeiro, um relatório que mostra as vendas do rio de janeiro por vendedor não pode "herdar" meu resultado de são paulo.

Para outros tipo de tabela, conseguimos adaptar relativamente fácil esse cenário, mas para tabelas do tipo pai e filho, gostaríamos da sua opinião de como lidar com isso.

1 resposta

Duany

Vamos primeiro como tratar dimensões PARENT-CHILDREN como SCD Type 2.

Vamos supor o exemplo abaixo.

FILHOPAIDATA INICIALDATA FINAL
SP01/01/100131/12/2999
RJ01/01/100131/12/2999
VEND1SP01/01/100131/12/2999
VEND2SP01/01/100131/12/2999
VEND3RJ01/01/100131/12/2999

Aplicando a mudaça ( VEND1 passa de SP ára o RIO DE JANEIRO)

FILHOPAIDATA INICIALDATA FINAL
SP01/01/100131/12/2999
RJ01/01/100131/12/2999
VEND1SP01/01/100131/01/2020
VEND1RJ31/01/202031/12/2999
VEND2SP01/01/100131/12/2999
VEND3RJ01/01/100131/12/2999

Como Vendedor é folha, a mudança é simples.

Mas quando o NÓ que muda tem descendentes, todos os seus descendentes devem mudar sua data de validade inicial e final.

Agora, vamso supor que tivéssemos:

CLI1, CLI2, CLI3, CLI4, CLI5, CLI6, CLI7 deste jeito:

FILHOPAIDATA INICIALDATA FINAL
SP01/01/100131/12/2999
RJ01/01/100131/12/2999
VEND1SP01/01/100131/12/2999
VEND2SP01/01/100131/12/2999
VEND3RJ01/01/100131/12/2999
CLI1VEND101/01/100131/12/2999
CLI2VEND101/01/100131/12/2999
CLI3VEND201/01/100131/12/2999
CLI4VEND201/01/100131/12/2999
CLI5VEND301/01/100131/12/2999
CLI6VEND301/01/100131/12/2999
CLI7VEND301/01/100131/12/2999

Se o vendedor VEND1 foi pro RIO, ele tem que deixar seus clientes com algum vendedor de SP cuidar e ele vai assumir alguns clientes do Rio, que eram do outro vendedor carioca.

FILHOPAIDATA INICIALDATA FINAL
SP01/01/100131/12/2999
RJ01/01/100131/12/2999
VEND1SP01/01/100131/01/2020
VEND1RJ31/01/202031/12/2999
VEND2SP01/01/100131/12/2999
VEND3RJ01/01/100131/12/2999
CLI1VEND101/01/100131/01/2020
CLI2VEND101/01/100131/01/2020
CLI1VEND231/01/202031/12/2999
CLI2VEND231/01/202031/12/2999
CLI3VEND201/01/100131/12/2999
CLI4VEND201/01/100131/12/2999
CLI5VEND301/01/100131/12/2999
CLI6VEND301/01/100131/01/2020
CLI7VEND301/01/100131/01/2020
CLI6VEND231/01/202031/12/2999
CLI7VEND231/01/202031/12/2999

Acima, quando o vendedor VEND1 foi pro Rio ele passou os clientes CLI1 e CLI2 para o VEND2, que continua em SP e assumiu os clientes CLI6 e CLI7 que eram do vendedor VEND3.

Se você notar a chave do NÓ passa a ser o código original + DATAS VALIDADES.

Teria que pensar como implementar esta lógica no SSIS. Mas é assim que as dimensões PARENT-CHILD devem ser tratadas quando possuem SCD TYPE 2.

Att

Victorino.