SSIS – Criando seu próprio SCD 1

Essa série será dividida em 4 Partes. A primeira parte irá tratar de alguns conceitos relacionados a Business Intelligence. no Segundo post você terá os scripts para criação do ambiente de testes. Na terceira e quarta parte nos usaremos os componentes no SSIS para criar o Slowly Changing Dimension.


 O grande crescimento dos ambientes de negócios tem dado origem a uma quantidade de dados cada vez maior. Essas informações são à chave para que os lideres dessas empresas tenham a possibilidade de decidir de forma eficaz.

Um sistema de BI (Business Intelligence) é uma ferramenta poderosíssima de tomada de decisões. Através dela é possível obter análises dos dados da instituição, possibilitando assim a eficiência nas escolhas relativas à empresa.

Em sua constituição, uma ferramenta de BI é formada por um Data Warehouse (ou DW, também traduzido para Armazém de Dados) que é uma estrutura de armazenamento de dados cuja sua principal função é receber dados e organizá-los de maneira histórica para construção das análises do BI.

Os dados de um DW podem ser retirados de diversas fontes de dados (arquivos .txt, .csv, tabelas do excel, e bancos de dados relacionais). Essas informações são exportadas para o Data Warehouse usando um processo chamado ETL (Extract, Transformation and LoadExtração, Transformação e Carga). Através desse processo, é possível não somente retirar os dados das diversas fontes, mas também agregá-lo, tratá-lo ou até mesmo transformá-lo se necessário.


Todo o DW é permeado pelo conceito temporal. Todas as tabelas de Fato de todos os Data Marts são carregadas baseadas nas foreign keys, que têm como origem a dimensão de tempo. Porém, os efeitos de tempo não estão isolados somente para as atividades das tabelas de Fato. Todas as dimensões sejam elas de região, clientes, produtos, empregados ou quaisquer outras, também são afetadas pela passagem do tempo.

Muitas vezes o administrador de BI irá se deparar com uma mudança no agrupamento de dados de uma dimensão. Algumas vezes será apenas uma correção nos dados já gravados no DW, outras uma verdadeira alteração em um ponto do tempo de um membro de uma dimensão específica. Como essas alterações são aleatórias e não frequentes, elas são chamadas de Slowly Changing Dimensions (Mudanças Lentas de Dimensões), também abreviado para SCDs.


Existem vários tipos de Slowly Changing Dimensions, cada um indicado para algum tipo específico de situação, entretanto 2 deles são muito utilizados. Estes são:

Tipo 1 – Sobrescrição de Dados: Nesse primeiro tipo de SCD, supondo um exemplo onde temos uma dimensão de vendedores, com um campo que guarda os dados de localidade onde esses vendedores atuam, teríamos que apenas executar um update no dado de localidade dessa dimensão.

Por exemplo, se o colaborador Arthur Luz mudou de Brasília para o Rio de Janeiro, o campo que guarda a localidade deixaria de conter o registro Brasília e passaria a conter Rio de Janeiro.

figura 1
Primeiro momento no tempo: Arthur Luz em Brasília.
figura 2
Segundo momento no tempo: Arthur Luz no Rio de Janeiro.

Nesse caso de Slowly Changing Dimension, é necessário tomar cuidados, pois levando em consideração uma análise feita no mês em que esse colaborador mudou de localidade, em ambas as regiões, o dado dos relatórios que usufruíssem dos dados dos vendedores, apareceriam incorretos ou incompletos.

Esse tipo de SCD é mais utilizado para realizar updates em campos que possivelmente possam sofrer alterações devido um cadastro equivocado.

Tipo 6 – Adição de uma nova linha de registro: Essa técnica é a mais utilizada para guardar histórico em projetos de DW e é contemplada (assim como o tipo 1) pela ferramenta de ETL da Microsoft, o Integration Services.

Nesse tipo de SCD, cada alteração de localidade de colaboradores da dimensão de vendedores seria um novo registro com data de início e fim, sendo que o registro atual (no caso do exemplo disponível, a cidade do Rio de Janeiro), não possuiria data de fim e sua data de início seria igual à data de fim do registro anterior (no caso, a cidade de Brasília).

figura 3
Primeiro momento no tempo: Arthur Luz em Brasília.
figura 4
Segundo momento no tempo: Arthur Luz saiu de Brasília.
figura 6
Segundo momento no tempo: Arthur Luz foi movido para o Rio de Janeiro.

Observe que a Data de Início do Registro de ID 127 é a mesma Data de Fim do Registro de ID 56.


SSIS – Componente Slowly Changing Dimensions

O Integration Services (SSIS) é a ferramenta da Microsoft utilizada para efetuar cargas de ETL em Data Warehouses. Ela possui em sua barra de ferramentas um componente chamado Slowly Changing Dimension, que é utilizado para carregar os históricos das dimensões do DW.

Ela faz o que promete, todavia, quando usado em dimensões com um grande número de registros, com um agravante: a performance. Cada carga de ETL, de cada uma das dimensões, dura (dependendo da quantidade de registros e do servidor) de 2 a 4 horas.

Como modo de resolver o problema de performance do componente passa-se normalmente, a utilizar queries para efetuar as cargas de ETL (através da própria ferramenta de ETL, ou com o uso de stored procedures). Isso reduz o tempo de carga de algumas horas para poucos minutos.

Em situações onde não existe possibilidade de migração de SGBD, as queries para extrações, transformações e cargas funcionam muito bem. Mas, se existe um risco de mudança de banco de dados, as queries seriam um gargalo, pois todo ETL (ou parte dele, caso as queries tenham sido feitas, em sua maioria, em padrão ANSI) teria que ser refeito com a linguagem específica do novo banco.

Essa é uma característica fantástica das ferramentas de ETL: a abstração de banco. Quando você utiliza bem os componentes da ferramenta escolhida, independente do SGBD usado, o ETL continua intacto e em pleno funcionamento se alterado o banco de dados.

Dessa forma, utilizando o fluxo que será explicado nos próximos posts, você continua com uma boa performance nas cargas de ETL (sem a necessidade de queries), porém mantendo a abstração de banco de dados.

5 comentários sobre “SSIS – Criando seu próprio SCD 1

  1. Pingback: SSIS – Criando seu próprio SCD 1 | Alex Souza

  2. Pingback: SSIS – Criando seu próprio SCD – DBA Brasil

Deixe um comentário