Entendendo o ETL

Conceito

As Dificuldades

Existem vários obstáculos que nós profissionais da área enfrentamos para execução dessa atividade. Já passei por diversos problemas na coleta das informações nas bases transacionais das empresas em que atuei, também devo frisar que a área de TI – principalmente em Empresas de Telecomunicações – não é a atividade fim da companhia, tornando o trabalho mais árduo. A equipe de TI enfrenta problemas com o baixo investimento em hardware, ou seja, estamos trabalhando sempre no gargalo e como é de hábito o problema de toda companhia é da TI.

Na construção de um Data Warehouse vamos buscar informações de diversos Sistemas ou fonte de Dados e essas informações não são modeladas para extração das informações necessárias, o profissional de ETL deve ter o domínio da linguagem SQL e um bom conhecimento técnico de banco de dados, isso será o diferencial na hora de buscar as informações. Haja vista que devemos sempre carregar para o DW informações resumidas (conforme o nível de granularidade exigido).

Um outro problema é o conceito sobre um determinado termo em algumas áreas da empresa, vou citar um exemplo: \r\nAtualmente qualquer banca de jornal ou comécio vende chip para celular. Daqui já poderíamos ter um problema na definição do conceito “o que é um celular ativo?” Quando o conceito já existe é algo simples entre a corporação, agora imagina a vivo comprando a TIM, será que os conceitos entre as empresas são iguais?

Por isso, devemos sempre consultar o metadados da Empresa ou se não existir o termo definir em atas e reuniões, adicionando o novo termo no documento. Pense no trabalho que dá definir um conceito na empresa, pois uma vez definido esse conceito deverá ser multiplicado para os demais funcionários da empresa, principalmente as pessoas envolvidas no âmbito de negócio. “Salientando que para execução do ETL, essa etapa já foi definida antes da execução”.

Um outro problema é a questão da volatilidade dos dados, como buscamos informações transacionais precisamos as vezes congelar a base de dados. O que é isso? Congelar a base de dados significa interromper qualquer tipo de atualização que possa interferir na validação dos dados, geralmente os DBA’s criam uma cópia da base (dump) quando isso não é possível devemos executar um script com o quantitativo em determinada hora e ao final executar o mesmo script para informar se houve alterações no decorrer da carga. Eu faço isso, pois existem níveis de acordo de qualidade dos dados carregados, geralmente a divergência aceitável fica entre 1% e 3% da base original, para que a equipe de negócio possa validar o script de carga.

Um outro detalhe é sempre mapear os dados “Não classificados”, são os registros que não se enquadraram em nenhum regra de negócio, se ficar acima de 8% do total de dados carregados, abra o olho que o seu script pode ter erros.

Mapeamento das Bases

Após as especificações definidas no metadados de negócio, devemos nos preocupar com a “janela de processamento” ou tempo definido para execução dos scripts sem prejudicar o andamento do negócio. Resumindo a carga vai processar geralmente nos finais de semana, feriados e na parte da madrugada.

Por isso, teste exaustivamente seu script, verifique o volume de dados que você vai carregar, verifique se existe espaço disponível na sua base de dados para comportar o Volume de Dados, pois um erro pode afetar todo o planejamento e cronograma do projeto. Um detalhe importante, antes de executar o seu script faça uma pequena extração na sua base e encaminhe para área de negócio responsável pela validação das informações, verifique se realmente é esse tipo de informação que eles desejam.

Já presenciei uma área de negócio mudar toda estratégia dos dados carregados no DW, simplesmente com esse resumo. Não preciso nem falar que uma mudança brusca no escopo, aumentou o custo e prazo do projeto. O colega que fez literalmente a “cagada” acabou saindo da empresa.

Num projeto que custa geralmente milhões, a pressão é o tempo todo e os executivos sempre acabam procurando culpados.”Time is money!!!” Sou adepto da técnica de “dividir para conquistar”, o meu ETL é realizado em várias etapas armazenando cada etapa numa tabela distinta, isso facilita um possível reprocessamento sem prejudicar a janela de processamento disponível, porém exige mais espaço no banco de dados.

Por que devo utilizar ferramenta de ETL?

Num projeto de Data Warehouse fica inviável administrar as cargas manualmente, mesmo quando tratamos de base de dados convergentes. Não preciso nem frisar que vai gastar mais tempo para o desenvolvimento dos scripts. É óbvio que os projetos antigos não utilizaram esse recurso, porém muitos foram fadados ao fracasso e custaram muito mais caro. A vantagem que eu destaco em utilizar uma ferramenta de ETL é a praticidade e manutenabilidade dos arquivos criados. Praticidade pois é muito fácil criar um procedimento, se o processo de carga for bem planejado a manutenção se torna algo bem simples. “Lembrando que a comparação é entre “Sql & ETL”.