Slowly Changing Dimensions (SCD): Quando os dados mudam, o modelo acompanha?

Se você já teve que responder perguntas do tipo “qual era o cargo do João em 2022?” ou “onde esse cliente estava localizado quando fez aquela compra?”, então você está na situação perfeita pra entender por que manter o histórico de dimensões é fundamental.

INGESTÃO DE DADOSFABRICSCD

Henrique Bueno

7/1/20252 min read

O que é uma dimensão que muda devagar?

No mundo dos dados, a gente chama de “dimensão” qualquer tabela que descreva entidades — como clientes, produtos, funcionários. O problema é que essas informações mudam com o tempo, e a gente precisa decidir o que fazer quando isso acontece.

Exemplo clássico: um funcionário muda de cargo. Você sobrescreve o valor na tabela? Cria um novo registro? Guarda o valor antigo?

É aí que entram os tipos de SCD, cada um com uma estratégia diferente pra lidar com mudanças nos dados.

Os Tipos de SCD e quando usar cada um

Se você quer rastrear quem era o gerente da loja na época da venda, você vai precisar do Type 2.

Como implementar SCD com ferramentas Microsoft

Power BI + Microsoft Fabric

No Power Query ou Dataflow Gen2, dá pra montar uma lógica de SCD Type 1 ou 2 facilmente. A própria Microsoft traz um guia super completo:

  • Para SCD Type 1: basta fazer um merge entre os dados atuais e os antigos, comparar as colunas e atualizar quando houver mudança.

  • Para SCD Type 2: você cria colunas de controle (ValidFrom, ValidTo, IsCurrent) e insere um novo registro sempre que houver alteração.

SSIS (SQL Server Integration Services)

Se você ainda está no mundo on-premises ou usa Azure Data Factory com pipelines semelhantes, o componente Slowly Changing Dimension Transformation do SSIS é um clássico.

Ele já traz suporte a Type 1 e Type 2 nativamente e permite configurar os atributos que vão manter histórico, os que são fixos e os que só devem ser atualizados.

Hands-on: Implementando Type 2 no Power Query

Aqui vai um passo a passo prático para montar uma lógica de SCD Type 2:

  1. Carregue sua dimensão antiga e os dados novos.

  2. Crie uma chave de comparação (ex: código do cliente).

  3. Identifique quais registros mudaram (comparando colunas relevantes).

  4. Para os que mudaram:

    • Atualize o registro antigo (IsCurrent = false, ValidTo = hoje - 1).

    • Insira um novo registro (IsCurrent = true, ValidFrom = hoje, ValidTo = 9999-12-31).

  5. Combine tudo em uma nova tabela de dimensão.

Essa abordagem te dá controle total sobre o histórico e é 100% compatível com modelagem em estrela no Power BI.

Dicas que eu aplico nos projetos

  • Sempre tenha uma chave natural bem definida. Nada de depender só de surrogate keys.

  • Evite Type 2 para colunas que mudam o tempo todo, ou sua tabela vai crescer desnecessariamente.

  • Se tiver muitas mudanças, pense em usar Type 4 e guardar o histórico em uma tabela separada.

  • No Fabric, aproveite a automação com pipelines e os Dataflows Gen2 para escalar sua lógica.

Conclusão

Tratar mudanças em dimensões é mais do que uma questão técnica — é sobre manter a confiabilidade das suas análises ao longo do tempo. O SCD te dá as ferramentas pra isso.

Na prática, entender quando e como aplicar cada tipo pode ser o diferencial entre um relatório “bonitinho” e uma análise robusta, que responde às perguntas certas.

E aí, pronto pra aplicar SCD no seu próximo projeto?

O que vem por aí?

No próximo post, eu vou mostrar como montar um fluxo completo de SCD Type 2 usando apenas Dataflows no Microsoft Fabric sem código, só com lógica.

Se quiser ser avisado quando sair, já deixa seu email aqui ou me chama no LinkedIn