Slowly changing dimensions descrevem como você lida com mudanças de atributos em tabelas de dimensão. O tipo 1 sobrescreve e perde o histórico. O tipo 2 insere uma nova linha por mudança, com chave substituta, timestamps valid_from e valid_to e uma flag de registro atual, para que os fatos façam join com a versão do atributo que era verdadeira na época. O tipo 3 mantém uma coluna de valor anterior para um único estado passado.
Por que os entrevistadores perguntam isso
Essa é a pergunta central de modelagem dimensional, e separa quem já construiu um warehouse de quem apenas consultou um. Os entrevistadores querem a chave substituta, porque chaves naturais quebram assim que você tem várias linhas por entidade, e querem ouvir como os fatos fazem join com a versão histórica correta, e não com o que estiver atual.
Como estruturar sua resposta
- Defina os tipos 1, 2 e 3 em uma linha cada.
- Detalhe as colunas do tipo 2: chave substituta, valid_from, valid_to, is_current.
- Explique como os fatos fazem join com a versão correta na data do evento.
- Cubra a lógica de carga: feche a linha antiga, insira a nova.
- Mencione o custo: crescimento da tabela e complexidade das consultas.
Exemplo de resposta
O tipo 1 simplesmente sobrescreve o valor, então você perde o histórico. O tipo 2 preserva o histórico adicionando uma linha toda vez que um atributo muda. Na prática, isso significa uma chave substituta como chave primária, a chave natural de negócio ao lado dela, timestamps valid_from e valid_to e um booleano is_current por conveniência. A tabela fato guarda a chave substituta que estava vigente quando o evento aconteceu, então um fato de vendas de março ainda faz join com o território do vendedor em março, e não com o atual. Essa distinção é o objetivo inteiro, e é o que o financeiro vai notar se você errar. A carga é um merge: encontre as linhas em que as colunas rastreadas mudaram, preencha valid_to na linha existente e insira uma nova linha com valid_from preenchido e valid_to nulo ou em uma data bem no futuro. Eu costumo gerar um hash das colunas rastreadas em uma única chave de mudança, para que a comparação seja uma checagem de igualdade em vez de vinte.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você lida com um registro de dimensão que chega atrasado?
- O que acontece com a sua tabela fato se você usar a chave natural?
- Como você implementaria o tipo 2 no dbt?
Mais perguntas para Engenheiro de Dados
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas