Integration Services: Melhorando sua performance com Slowly Changing Dimension no SSIS

Veja nesse artigo como melhorar a performance com o componente Slowly Changing Dimension do Integration Services 2012, que mantem o versionamento dos dados históricos, possibilitando às realidades de qualquer situação existente no mercado.

Fique por dentro
O artigo trata do conceito de gerenciamento de dados históricos em dimensões, dentro de um Data Warehouse, o Slowly Changing Dimension, bem como a implementação de um fluxo que realize essa gestão de forma mais performática do que a fornecida pelo componente da ferramenta de ETL Integration Services 2012.

O conteúdo desse artigo irá ajudar os desenvolvedores de ETL, que usam a ferramenta SSIS no seu dia a dia, a tornarem as suas cargas de dados históricos das dimensões mais rápidas, sem o uso de queries complexas dentro de seus fluxos, o que permite uma total abstração de SGBD.

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 apenas três desses são mais 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 (ver Figuras 1 e 2).

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 fazer updates em campos que possivelmente possam sofrer alterações devido um cadastro equivocado.

Figura 1. Registro original da dimensão de vendedores

Figura 2. Registro da dimensão de vendedores depois da alteração de localidade

Tipo 2 - Registro Atual e Registros Olds: Nesse tipo, usufruindo do mesmo exemplo utilizado para explicar o SCD anterior, teríamos que adicionar um novo campo de localidade na dimensão de vendedores para cada vez que houvesse um novo registro histórico. Um campo para guardar a localidade atual do vendedor e outros para guardar os dados anteriores.

Esse tipo não é muito utilizado visto que não seria possível prever a quantidade de registros históricos que haveria e se fosse determinada uma quantidade específica (como, por exemplo, um registro atual e um registro old), haveria perda de dados históricos com o tempo. Exemplificando: se o funcionário Arthur sair no mês seguinte do estado do Rio de Janeiro e passar a residir no estado de Minas Gerais, o campo localidade old passaria conter Rio de Janeiro, e o campo localidade passaria a guardar Minas Gerais (ver " [...] continue lendo...

Artigos relacionados