ETL (Extração, Transformação e Carga)
Autor: Alessandro Gonzalez | Publicado: 2014-11-30T08:32:00-03:00




ETL do inglês Extract Transform Load (Extração Transformação Carga) são ferramentas de software cuja função é a extração de dados de diversos sistemas, transformação de dados conforme regras de negócios e por fim a carga dos dados em um DM ou um DW, segundo definição da Wikipédia (acesso em 29.abril.2010).

É comum que os sistemas OLTP das organizações tenham sido desenvolvidos por diferentes equipes de programadores, empresas de software, linguagem de programação diferente, que no seu desenvolvimento, tenham adotado diferentes convenções na codificação de variáveis, nomes dos atributos das tabelas, diferentes tipos de dados ou formatos de datas.
A etapa de ETL é considerada uma das fases mais críticas da elaboração de DW ou um DM pela grande variedade de fontes de dados possíveis para obtenção de dados para alimentar os mesmos.
Ao reunir dados dos diferentes sistemas deve ser definida uma norma única para o DW e realizar as transformações necessárias em cada caso. Basicamente devem ser realizadas as seguintes tarefas:


Estabelecer as regras que serão utilizadas para realizar a transformação.&nbsp;
Detectar as inconsistências que podem ocorrer ao extrair dados de diferentes fontes.&nbsp;
Planejar cuidadosamente e com detalhes a transformação dos dados, que ofereçam como resultado final conjuntos de dados consistentes.&nbsp;



O grande desafio por trás da alimentação de dados das fontes para o DW não é técnico, mas sim, gerencial, como afirma Gonçalves (2003). Muitos dos processos envolvidos no ETL são definidos no processo de analise e projeto como definições de mapeamento e integração de dados.
Gonçalves (2003) diz que as definições de regras de transformação e detecção de dados consomem cerca de 80% do tempo do projeto, sendo que a maioria das regras necessárias de mapeamento e transformação de dados existe apenas na cabeça dos analistas e usuários. Isso certamente é um indicador de influencia para justificar o tempo gasto para a definição dos mesmos.

Extração de dados&nbsp;
Várias alternativas para extração de dados permitem o balanceamento de desempenho. Por exemplo, se a fonte for um banco de dados online e aceitar a submissão de consultas diretas, pode ser criado arquivo de consulta apenas com instruções SQL, todavia, podem ocorrer quedas de desempenho no banco de dados online e as consultas para a extração de dados concorrem entre si. Uma solução alternativa para este caso seria a criação de um banco de dados cópia para a extração do pacote de dados. Processo este que geraria a necessidade maior de espaço em disco.

As rotinas de extração devem ser capazes de isolar somente os dados que foram inseridos e atualizados desde a última extração processo este conhecido como refresh. Conforme Gonçalves (2003) diz a melhor política de refresh só pode ser avaliada pelo administrador de DW, pois, neste processo vários fatores são determinantes para escolha do mesmo como as necessidades do usuário final, tráfego na rede e períodos de menor carga no sistema.

&nbsp;Transformação&nbsp;
Depois que os dados são extraídos é necessário o tratamento destes efetuando limpeza e a filtragem afim de, garantir a integridade dos dados através de programas ou rotinas especiais que tentam identificar anomalias e caso encontre é necessário resolve-las antes de ser inseridas do DW.
Correção de erros de digitação, a descoberta de violação de integridade, a substituição de caracteres desconhecidos, a padronização de abreviações podem ser exemplos de limpeza de dados.
Pode ser encontrados conflitos de semântica nos dados que são divididos de duas formas conflitos semânticos e conflitos estruturais.

Conflitos Semânticos - Os conflitos semânticos são todos aqueles que envolvem o nome ou a palavra associada às estruturas de modelagem, por exemplo, mesmo nome para diferentes entidades ou diferentes nomes para a mesma entidade (Gonçalves, 2003).

Conflitos Estruturais - Englobam os conflitos relativos às estruturas de modelagem escolhidas, tanto no nível de estrutura propriamente dita como no nível de domínios. Os principais tipos de conflitos estruturais são aqueles de domínio de atributo que se caracterizam pelo uso de diferentes tipos de dados para os mesmos campos (Gonçalves, 2003).
De acordo com Gonçalves (2003), os conflitos típicos de domínio de atributo são:


Diferenças de unidades: quando as unidades utilizadas diferem, embora forneçam a mesma informação (exemplo: distância em centímetros ou polegadas);&nbsp;
Diferenças de precisão: quando a precisão escolhida varia de um ambiente para outro (exemplo: o custo do produto é armazenado com duas posições ‘0,12’ ou com seis posições decimais ‘0,123456’);
Diferenças em códigos ou expressões: quando o código utilizado difere um do outro (exemplo: sexo representado por M ou F e por 0 ou 1);&nbsp;
Diferenças de granularidade: quando os critérios associados a uma informação, embora utilizando uma mesma unidade, são distintos (exemplo: quando horas trabalhadas correspondem às horas trabalhadas na semana ou às horas trabalhadas no mês);&nbsp;
Diferenças de abstração: quando a forma de estruturar uma mesma informação segue critérios diferentes (exemplo: endereço armazenado em um único atributo, ou subdividido em rua e complemento).&nbsp;


Finalizado este processo de identificação as regras de mapeamento devem ser criadas e o processo de conversão executado afim de, os padrões estabelecidos no DW deve ser respeitado.
Todo o processo de ETL pode ser feito com o uso de ferramentas, onde cada uma apresenta particularidades, seja apenas a empresa desenvolvedora ou mesmo funções que da mesma.

&nbsp;Algumas das ferramentas de ETL segundo Gonçalves 2003 são Acta Works, Amadea, DataMirror Constellar Hub, Date Propagator, Visual Warehouse, DataStage XE, DecisionBase, InfoRefiner, InfoTransport, InfoHub, InfoPump, Decision Stream, DTS, Oracle Warehouse Builder, PowerMart, PowerStage, WebFocus ETL Manager e Microsoft Integration Services.