Extract, transform, load

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

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 desses dados conforme regras de negócios e por fim a carga dos dados geralmente em um Data Mart e um Data Warehouse, porém nada impede que também seja para enviar os dados para um determinado sistema da organização. A extração e carga são obrigatórias para o processo, sendo a transformação/limpeza opcional, mas que são boas práticas, tendo em vista que os dados já foram encaminhados para o sistema de destino. É considerada uma das fases mais críticas do Data Warehouse e/ou Data Mart.

Os projetos de data warehouse consolidam dados de diferentes fontes. A maioria dessas fontes tendem a ser bancos de dados relacionais ou arquivo de texto (texto plano), mas podem existir outras fontes. Um sistema ETL tem que ser capaz de se comunicar com as bases de dados e ler diversos formatos de arquivos utilizados por toda a organização. Essa pode ser uma tarefa não trivial, e muitas fontes de dados podem não ser acessadas com facilidade.

Algumas das ferramentas conhecidas de ETL são IBM InfoSphere DataStage , Informática Power Center, Business Objects Data Integrator , Data Transformation Services,

Pentaho Data Integration, Oracle Data Integrator, entre outras.

Extração, Transformação e Carga[editar | editar código-fonte]

O processo de Extração, Transformação e Carga (Extract, Transform, Load – ETL) é um processo que envolve:

  • Extração de dados de fontes externas
  • Transformação dos mesmos para atender às necessidades de negócios
  • Carga dos mesmos

O ETL é importante, pois é a forma pela qual os dados são efetivamente carregados no DW. Este artigo assume que os dados são sempre carregados no DW, contudo, ETL pode ser aplicado a um processo de carga de qualquer base de dados.

Extração[editar | editar código-fonte]

A primeira parte do processo de ETL é a extração de dados dos sistemas de origem. A maioria dos projetos de data warehouse consolidam dados extraídos de diferentes sistemas de origem. Cada sistema pode também utilizar um formato ou organização de dados diferente. Formatos de dados comuns são bases de dados relacionais e flat files (também conhecidos como arquivos planos), mas podem incluir estruturas de bases de dados não relacionais, como o IMS ou outras estruturas de dados, como VSAM ou ISAM. A extração converte para um determinado formato para a entrada no processamento da transformação.

Transformação[editar | editar código-fonte]

O estágio de transformação aplica um série de regras ou funções aos dados extraídos para derivar os dados a serem carregados. Algumas fontes de dados necessitarão de muito pouca manipulação de dados. Em outros casos, podem ser necessários um ou mais de um dos seguintes tipos de transformação:

  • Seleção de apenas determinadas colunas para carregar (ou a seleção de nenhuma coluna para não carregar)
  • Tradução de valores codificados (se o sistema de origem armazena 1 para sexo masculino e 2 para feminino, mas o data warehouse armazena M para masculino e F para feminino, por exemplo), o que é conhecido como limpeza de dados.
  • Codificação de valores de forma livre (mapeando “Masculino”,“1” e “Sr.” para M, por exemplo)
  • Derivação de um novo valor calculado (montante_vendas = qtde * preço_unitário, por exemplo)
  • Junção de dados provenientes de diversas fontes
  • Resumo de várias linhas de dados (total de vendas para cada loja e para cada região, por exemplo)
  • Geração de valores de chaves substitutas (surrogate keys)
  • Transposição ou rotação (transformando múltiplas colunas em múltiplas linhas ou vice-versa)
  • Quebra de uma coluna em diversas colunas (como por exemplo, colocando uma lista separada por vírgulas e especificada como uma cadeia em uma coluna com valores individuais em diferentes colunas).

Carga[editar | editar código-fonte]

A fase de carga carrega os dados no Data Warehouse (DW). Dependendo das necessidades da organização, este processo varia amplamente. Alguns data warehouses podem substituir as informações existentes semanalmente, com dados cumulativos e atualizados, ao passo que outro DW (ou até mesmo outras partes do mesmo DW, conhecidos como Data Mart) podem adicionar dados a cada hora. A temporização e o alcance de reposição ou acréscimo constituem opções de projeto estratégicas que dependem do tempo disponível e das necessidades de negócios. Sistemas mais complexos podem manter um histórico e uma pista de auditoria de todas as mudanças sofridas pelos dados.

Desafios[editar | editar código-fonte]

Os processos de ETL podem ser bastante complexos e problemas operacionais significativos podem ocorrer com sistemas de ETL desenvolvidos inapropriadamente.

A gama de valores e a qualidade dos dados em um sistema operacional podem ficar fora das expectativas dos desenvolvedores quando as regras de validação e transformação são especificadas. O perfil dos dados de uma fonte durante a análise dos dados é altamente recomendável para identificar as condições dos dados que precisarão ser gerenciados pelas especificações de regras de transformação.

A escalabilidade de um sistema de ETL durante o seu ciclo de vida de uso precisa ser estabelecido durante a análise. Isto inclui o conhecimento dos volumes de dados que terão que ser processados no âmbito dos Acordos de Nível de Serviço ( Service Level Agreements – SLA). O tempo disponível para extrair dados dos sistemas de origem pode variar, o que pode significar que a mesma quantidade de dados pode ter que ser processada em menos tempo. Alguns sistemas de ETL têm que ser escalados para processar terabytes de dados para atualizar data warehouses com dezenas de terabytes de dados. Volumes crescentes de dados podem requerer um desenho que possa escalar de processamento diário de lotes para processamento intra-diário de microlotes para a integração com filas de mensagens para garantir a continuidade da transformação e da atualização.

Processamento em Paralelo[editar | editar código-fonte]

Um desenvolvimento recente dos softwares de ETL foi a implementação de processamento em paralelo. Isto permitiu o desenvolvimento de vários métodos para melhorar a performance geral dos processos de ETL no tratamento de grandes volumes de dados.

Existem três tipos primários de paralelismos implementados em aplicações de ETL:

Dados[editar | editar código-fonte]

Pela divisão de um único arquivo sequencial em arquivos de dados menores para permitir acesso em paralelo.

Pipeline[editar | editar código-fonte]

Permitindo a execução simultânea de diversos componentes no mesmo fluxo de dados. Um exemplo seria a leitura de um valor no registro 1 e ao mesmo tempo juntar dois campos no registro 2.

Componente[editar | editar código-fonte]

A execução simultânea de múltiplos processos em diferentes fluxos de dados no mesmo job. A classificação de um arquivo de entrada concomitantemente com a de duplicação de outro arquivo seria um exemplo de um paralelismo de componentes.

Os três tipos de paralelismo estão normalmente combinados em um único job.

Uma dificuldade adicional é assegurar que os dados que estão sendo carregados sejam relativamente consistentes. Uma vez que múltiplas bases de dados de origem apresentam diferentes ciclos de atualização (algumas podem ser atualizados em espaços de alguns minutos, ao passo que outras podem levar dias ou semanas), um sistema de ETL pode precisar reter determinados dados até que todas as fontes sejam sincronizadas. Analogamente, quando um warehouse tem que ser reconciliado com o conteúdo de um sistema de origem ou com o livro razão, faz-se necessária a implementação de pontos de sincronização e reconciliação.

Ícone de esboço Este artigo sobre Software é um esboço. Você pode ajudar a Wikipédia expandindo-o.