quinta-feira, 5 de novembro de 2020

Extract, Transform and Load (ETL)

Staging Area

De acordo com Kimball e Caserta (2004, p. 65), a decisão de se armazenar os dados fisicamente em uma staging area ou processá-los em memória depende de dois objetivos conflitantes: obter os dados das fontes para o destino tão rápido quanto possível e manter a habilidade de se recuperar de falhas sem ter que reiniciar o processo. Os autores indicam que há vantagens em se usar staging area, como: ter pontos de recuperação de dados; utilizar este repositório como backup de dados; e possibilitar a auditoria do processo de ETL.

Quando o histórico dos dados é mantido, a staging area é persistente, e quando os dados são apagados em cada carga, esta área é considerada transitória. Mas é interessante que a staging area assume uma forma híbrida, sendo composta de tabelas persistentes e transitórias.

Extract (Extração)

A extração é a primeira etapa do processo de ETL para obtenção dos dados no ambiente do DW. Consiste basicamente em ler, entender e copiar os dados necessários dos sistemas-fontes para a área de transformação de dados para utilizá-los posteriormente. O principal objetivo é recuperar todos os dados requeridos das fontes utilizando tão poucos recursos quanto for possível, sem afetar os sistemas-fontes em seu desempenho, tempo de resposta e bloqueios (KIMBALL; CASERTA, 2004).

Os dados extraídos são originados de diversas fontes independentes, que podem ser sistemas transacionais (OLTP), planilhas Excel, sistemas legados de diversos fabricantes, dentre outras.

De acordo com Dataintegration.com (2015), há algumas diferentes formas de se realizar a extração:

  • Notificação de atualização: se o sistema fonte for capaz de fornecer uma notificação quando um registro for alterado e descrever esta alteração, esta é a forma mais fácil de obter dados.
  • Extração incremental: há sistemas fonte que não são capazes de fornecer notificação quando uma atualização ocorre, mas conseguem identificar quais registros foram modificados e fornecer a extração de tais registros. Isso será importante em passos posteriores do ETL, quando o sistema precisar identificar as mudanças e propagá-las. O cuidado a ser tomado neste caso é que, usando extração diária, pode-se não tratar registros excluídos adequadamente.
  • Extração completa: alguns sistemas fonte não conseguem identificar nenhuma mudança, desta forma a extração completa é a única maneira de obter dados destes sistemas. A extração completa requer que uma cópia da última extração seja mantida no mesmo formato e ordem para se que possa identificar as mudanças. Este processo também trata as exclusões.

Quando a extração incremental ou completa forem utilizadas, a frequência da extração é muito importante, notadamente na completa, na qual grandes volumes de itens são tratados.

Transformation (Transformação)

Após a extração dos dados, são aplicadas transformações de acordo com as regras de negócio da organização. São exemplos de transformações: geração de novas chaves; conversão de tipos; formatação de campos; definição de valores derivados; agregações; sumarizações; traduções; entre outras operações.

A integração das informações originadas de múltiplas e complexas fontes de dados também é realizada nesta fase. Grandes riscos ocorrem quando as regras de transformações e integrações não são definidas claramente, resultando em cargas de informações equivocadas, o que pode gerar consequências imprevisíveis nas próximas fases do projeto.

Para garantir a qualidade dos dados no DW, deve ocorrer, nesta fase, a limpeza dos dados que aplica regras para a unificação dos dados básicos, como:

  • Unificar identificadores, como nomes e categorias de sexo expressas de diversas formas em diferentes fontes, que devem ser expressas de uma única forma;
  • Converter valores nulos em padrões, como não disponível, por exemplo;
  • Converter números de telefone, CEP e datas em formatos únicos padronizados;
  • Validar campos de endereços e convertê-los para formatos padronizados, como ruas, avenidas, estado, cidade etc.

A figura ilustra este processo.

 Load (Carga)

Para iniciar a etapa de carga, os dados devem estar no formato apropriado, com as devidas limpeza e transformação aplicadas. Esta etapa possui grande complexidade, pois é necessário considerar os seguintes fatores:

  • Integridade dos dados: consiste em validar todas as chaves estrangeiras da tabela, analisando se os valores realmente existem nas tabelas de origem, que contêm a chave primária.
  • Tipo de carga (incremental ou total): na carga inicial do DW é usual fazer a carga total, que contempla todos os dados oriundos do sistema-fonte. Nos processos de carga realizados posteriormente é usual que seja feita somente a carga incremental, que contempla somente os registros novos e alterados desde a carga anterior, gerando, assim, menor tempo de processamento e menor tráfego na rede.

No processo de carga dos dados pode-se utilizar um mecanismo de defesa, chamado Quality Assurance, ou Garantia de Qualidade de Dados. Este mecanismo evita que sejam carregadas massas de “lixo” para dentro das bases, como dados nulos, brancos ou inconsistentes.

Durante a etapa de carga, é necessário garantir que sua execução seja realizada corretamente, com menos recursos quanto possível. O alvo do processo de carga é geralmente uma base de dados e, para tornar o processo eficiente, é útil desabilitar quaisquer restrições e índices antes da carga e habilitá-los após o processo completo. A integridade referencial precisa ser mantida pela ferramenta de ETL para garantir a consistência.

Por ser a última etapa do ETL, após o sucesso em sua execução, o DW ou o DM ficarão disponíveis com os dados íntegros e históricos para as análises realizadas nas fases posteriores do desenvolvimento do projeto.

Nenhum comentário:

Postar um comentário