Chamando a atenção dos Provedores de Ferramenta de ETL

Dica de projeto #122 – Warren Thornthwaite – Kimball Group –  Sugestão para aprimorar as ferramentas de ETL…

Deixe-me começar declarando que esta Dica de Projeto é uma observação no estado geral de ferramentas de ETL, e não sobre um produto de ETL específico, alguns dos quais são melhor ou pior que a média.

 Como eu estava recentemente caminhando na direção de  criar um tipo totalmente funcional de Slowly Change Dimension (SCD) tipo 2, usando  uma das mais importantes ferramentas de ETL do mercado,  me ocorreu que as ferramentas de ETL em geral pararam cedo com a tentativa de  alcançar seu potencial. Certamente elas continuam a acrescentar funcionalidade, como data profiling, gerenciamento de Metadados, real-time ETL, e gerenciamento de dados mestre (Master Data Management). Mas na maior parte, em seu núcleo, elas são fracas na funcionalidades  requeridas  para construir e administrar uma Base de Dados do tipo Data Warehouse.  Elas não acabaram com o trabalho.

Vamos olhar para o exemplo de SCD com o qual iniciei esse artigo. A ferramenta em questão tem um ‘mago’ (Wizard) que faz um trabalho razoável na configuração necessária para  administrar ambos os tipos  1 e 2, nas mudanças em atributos de uma ‘Tabela Dimensão’ de destino. Até oferece a escolha de atualizar só a linha atual ou todas as linhas históricas no caso de uma mudança  tipo 1. O que ela não faz é administrar a trilha de mudanças em colunas de um SCD tipo 2, da maneira como é recomendado. Quando uma linha sofre mudanças, precisamos fixar a ‘data efetiva’ da nova linha, e a data de expiração da antiga linha. Eu também gosto de atualizar um indicador de linha atual para limitar de forma fácil uma consulta apenas nas linhas atuais; Eu sei que é redundante com o valor usado como a data limite na linha atual (todas as linhas  com uma data futura de expiração, como 12/31/9999, são, por definição, linhas atuais), mas o indicador de linha atual é comumente usado para comodidade e objetividade. Infelizmente, este particular Wizard atualizará ou as datas ou o indicador de linha atual, mas não ambos. Assim sendo, eu tenho que adicionar um passo depois doWizard para atualizar as linhas atuais atuais.

Outro problema com este Wizard (mago) específico é que não fornece qualquer caminho para determinar quais colunas do tipo 2, ao serem mudadas, iniciarão o processo para criação de uma nova linha. Esta informação ou regra de mudança, pode ser útil para auditar o acompanhamento do processo de mudança; também pode ser útil para responder questões do negócios sobre a dinâmica da dimensão. Por exemplo, se eu estiver usando uma regra de mudança para a Dimensão Cliente, fica fácil responder a questão “quantas pessoas se mudaram no ano passado?” Sem a regra de mudança eu tenho que fazer um relacionamento da Dimensão Cliente com ela mesma (auto relacionamento), em um modo bastante complexo, e comparar a linha atual com a linha prévia e ver se a coluna de cep mudou. Isto é frustrante porque eu sei que o Wizard sabe que colunas mudaram, mas está mantendo isto em segredo.

Eu sei que outras ferramentas de ETL fazem um trabalho melhor de manipular automaticamente dimensões do tipo SCD. O que me deixa desapontado com as ferramentas atuais de ETL, de um modo geral, não é a negligência deste exemplo de processo SCD em particular, mas a falta de suporte efetivo para a maior parte dos outros 33 SUBSISTEMAS de ETL, muitos dos quais vemos em uso em quase todos os Data Warehouses.

Por exemplo, Junk Dimensions são comuns em modelagem dimensional. Combinando dimensões pequenas múltiplas em uma Tabela Física  única, nós simplificamos o modelo e removemos colunas  do tipo ‘chave estrangeiras’ (FKs) múltiplas da Tabela Fato. Criar e manter Junk Dimensions não é, conceitualmente difícil, mas é tedioso. Deve-se criar um relacionamento cruzado com cada uma das tabelas, se não existirem muitas combinações possíveis, ou adicionar combinações para a Junk Dimension da forma como elas deverão ocorrer na Tabela Fato. Um provedor de ferramenta de ETL que realmente queira ajudar os clientes desenvolvedores de ETL, deveria fornecer um Wizard ou uma transformação que automaticamente crie e administre Junk Dimensions, inclusive o mapeamento das chaves da Junk Dimension para as Tabelas Fato.

O mesmo assunto se aplica a mini dimensões que são subconjuntos de colunas extraídas de uma dimensão grande e colocadas em uma dimensão separada, que é associada diretamente com a Tabela Fato. Como as Junk Dimensions, as Mini Dimensions não são conceitualmente difíceis, mas é extremamente tedioso ter que cria-las todas as vezes em que precisarmos delas. Infelizmente, eu não conheço nenhuma ferramenta de ETL que ofereça a criação e manutenção de Mini Dimensions como um componente ou Wizard normal.

Os provedores de ETL são freqüentemente entusiásticos sobre demonstrar que suas ferramentas podem tratar os 34 subsistemas que nós descrevemos e ensinamos em nossas aulas de projeto. Infelizmente as respostas dos vendedores são tipicamente ou slides de PowerPoint ou uma demonstração implementada por um analista na sede, em lugar de por um desenvolvedor de ETL que trabalha em um ambiente de produção.

Eu podia continuar listando abaixo todos os subsistemas, mas eu acredito que você ‘pegou a idéia’. Faça a sua análise, e veja quanto tempo você gasta codificando estes componentes à mão em seu ambiente de ETL. Então pergunte a seu provedor de ETL, quais os seus planos para tornar o seu trabalho mais fácil.

Nota do Lito: Pessoal, vou pesquisar sobre esses 34 Subsistemas, e depois coloco aqui no Blog…

Até a Próxima!

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: