Transforme o caos em lucro: entendendo o processo de ETL

Publicados: 2022-03-11

Um dos erros mais críticos que impedem as empresas de fornecer informações vitais para a tomada de decisões aos usuários de negócios é a ausência de dados confiáveis ​​de uma ou mais fontes de dados, reunidos em um único local, organizados e preparados para serem utilizados.

Imagine este cenário — você é o gerente de TI de uma empresa de capas de celular com lojas de varejo em todos os Estados Unidos. Seu conselho de administração está lutando para tomar decisões com base em vendas porque as informações estão disponíveis, mas estão em locais e formatos diferentes. Um dos diretores pede para você gerar um dashboard com informações de vendas de todos os pontos de venda para apresentar na próxima reunião da diretoria.

Você já sabe que é quase impossível consolidar as informações devido aos diferentes formatos e estruturas. Alguns dos quiosques de varejo ainda estão usando um sistema proprietário em um banco de dados Oracle. Lojas maiores estão usando um novo sistema Salesforce. Os quiosques mais novos que iniciaram as operações durante a transição do sistema compartilharam planilhas usadas para calcular as vendas.

Como você reunirá todos os dados de diferentes locais, formatos e estruturas em um banco de dados exclusivo pronto para ser acessado para geração de painéis?

Fundamentos de ETL

ETL significa Extrair, Transformar e Carregar . ETL é um conjunto de processos desenvolvido para transformar esse complexo armazenamento de dados em um processo organizado, confiável e replicável para ajudar sua empresa a gerar mais vendas com os dados que você já possui.

No nosso caso, receberemos dados de um banco de dados Oracle (a maioria dos quiosques), do Salesforce (lojas) e de planilhas (quiosques mais recentes), extrairemos os dados, transformaremos quando necessário e carregaremos em um único banco de dados de data warehouse para serem acessados ​​por ferramentas de relatórios e usados ​​para gerar painéis e scorecards.

Vamos mergulhar nas três etapas do ETL para elaborar o processo.

Extração

A extração é o processo de receber dados de uma ou várias fontes. As fontes podem ter diferentes formatos e estruturas, como documentos, planilhas, arquivos CSV, arquivos simples, bancos de dados relacionais como Oracle, MySQL, SQL Server, bancos de dados não relacionais e assim por diante.

Existem dois tipos principais de extração: total e parcial .

  • A extração completa é utilizada para extrações iniciais ou quando a quantidade de dados e consequentemente o tempo de extração são aceitáveis.
  • A extração parcial é recomendada quando não há necessidade de extrair todos os dados novamente ou a quantidade de dados é grande o suficiente para impossibilitar uma extração completa. Em uma extração parcial, apenas dados atualizados ou novos serão extraídos.

Além desses aspectos, algumas outras considerações são necessárias na hora de escolher entre extração total ou parcial, e quero descrever uma delas: disponibilidade e integridade dos dados .

Isso significa que apenas transações concluídas serão consideradas para extração, eliminando dados que possam causar uma falha de integridade. Por exemplo, um teste online para identificar o conhecimento de um engenheiro com 10 perguntas. Se um engenheiro estiver no meio do teste e tiver respondido algumas perguntas, mas ainda não tiver terminado, o processo de extração não poderá ler as perguntas de testes inacabados. Isso pode causar uma falha de integridade.

Transformação

Após extrair os dados, podemos iniciar o processo de transformação: limpar, manipular e transformar os dados de acordo com as regras de negócios e critérios técnicos para manter um nível aceitável de qualidade dos dados.

Dependendo de uma série de fatores, o uso de uma área de preparação pode ser necessário. Uma área de preparação é um espaço de armazenamento intermediário usado para armazenar temporariamente dados extraídos de fontes de dados a serem transformados.

Em alguns projetos, normalmente aqueles com uma pequena quantidade de dados, não há necessidade de usar áreas de teste, mas a maioria dos projetos a utiliza.

Há uma série de tarefas executadas durante a fase de transformação:

  • Seleção: critérios para selecionar os dados extraídos. A seleção pode ser feita durante a fase de extração, durante a fase de transformação ou em ambas as fases.
  • Integração: a combinação de dados da fase de extração para a área de preparo. Essa combinação significa adicionar, excluir e atualizar dados na área de teste com base nos dados extraídos.
  • Junções: usadas para unir dados extraídos, semelhantes às junções SQL (junção interna, junção esquerda, junção direita, junção completa, etc.)
  • Limpeza ou depuração: remove dados inconsistentes ou inválidos ou dados com erros para melhorar a qualidade dos dados. Trabalhar com várias fontes de dados aumenta as chances de ter problemas de dados que precisam de limpeza, como:
    • Integridade referencial (cliente com categoria inexistente)
    • Valores ausentes (cliente sem ID)
    • Singularidade (mais de uma pessoa com o mesmo SSN)
    • Erro ortográfico (Sun Diego, Canadá, L.Angeles)
    • Valores contraditórios (Alex dob 27.04.1974, Alex dob 14.04.2000)
    • e muitos outros
  • Resumos: resumir conjuntos de dados para uso posterior
  • Agregações: dados compilados e resumidos em grupos
  • Consolidações: dados de várias fontes ou estruturas consolidadas em um único conjunto de dados

Aqui estão alguns tipos comuns de transformação:

  • Excluir dados duplicados
  • Divisão e fusão
  • Conversões (data, hora, máscaras numéricas, medidas)
  • Codificação (Masculino para M)
  • Cálculos (item_value = unit_Price * quantidade)
  • Geração de chave

Carregando

Por último, mas não menos importante, o processo final no ETL é carregar os dados no destino. Carregar é o ato de inserir dados transformados (de uma área de teste ou não) no repositório, normalmente um banco de dados de data warehouse.

Existem três tipos principais de dados de carregamento: completo ou inicial, incremental e de atualização.

  • Completo ou inicial significa uma carga completa de dados extraídos e transformados. Todos os dados na área de teste serão carregados no destino final para serem preparados para os usuários corporativos.
  • A carga incremental é o processo de comparar os dados transformados com os dados no destino final e carregar apenas novos dados. A carga incremental pode ser usada em conjunto com a carga de atualização, explicada abaixo.
  • A carga de atualização é o processo de atualização dos dados no destino final para refletir as alterações feitas na fonte original. Uma atualização pode ser completa ou incremental.

Em resumo, toda empresa, independente do seu porte, pode utilizar processos de ETL para integrar informações já existentes e gerar uma riqueza ainda maior de informações para a tomada de decisões, transformando dados que antes não podiam ser utilizados em uma nova fonte de receita.

Teste

O teste é uma das fases mais importantes do ETL e, no entanto, uma das mais negligenciadas também.

Transformar dados de diferentes fontes e estruturas e carregá-los em um data warehouse é muito complexo e pode gerar erros. Os erros mais comuns foram descritos na fase de transformação acima.

A precisão dos dados é a chave para o sucesso, enquanto a imprecisão é uma receita para o desastre. Por isso, os profissionais de ETL têm a missão de garantir a integridade dos dados durante todo o processo. Após cada fase, um teste deve ser realizado. Seja extraindo dados de uma única fonte ou de várias fontes, os dados devem ser verificados para estabelecer que não há erros.

O mesmo deve ser feito após qualquer transformação. Por exemplo, ao resumir dados durante a fase de transformação, os dados devem ser verificados para garantir que nenhum dado foi perdido e as somas estão corretas.

Após carregar os dados transformados no data warehouse, o processo de teste deve ser aplicado novamente. Os dados carregados precisam ser comparados com os dados transformados e depois com os dados extraídos.

Em nosso exemplo de empresa de celular, estamos trabalhando com três fontes diferentes (banco de dados Oracle proprietário, Salesforce e planilhas) e formatos diferentes. A fase de teste pode usar dados de amostra das fontes originais e compará-los com os dados que estão na área de teste para garantir que a extração ocorreu sem erros.

Os dados de amostra – que neste caso podem ser informações de vendas de três locais diferentes (lojas, quiosques antigos, quiosques novos) – devem ser comparados com a fonte original. As diferenças, se houver, devem ser analisadas para ver se são aceitáveis ​​ou se são erros.

Se forem encontrados erros, eles devem ser corrigidos, e há algumas decisões a serem tomadas se você precisar corrigi-los: Os dados originais devem ser modificados? É possível fazê-lo? Se os erros não podem ser corrigidos na fonte original, eles podem ser corrigidos por alguma transformação?

Em alguns casos, os dados com erros devem ser eliminados e um alerta acionado para informar os responsáveis.

Alguns exemplos de testes:

  • Os dados requerem validação
  • Qualidade dos dados
  • atuação
  • Regras de dados
  • Modelagem de dados

Exploração madeireira

O registro de processos ETL é a principal garantia de que você possui sistemas fáceis de manter e de fácil manutenção.

Um ETL com o processo de logging correto é importante para manter toda a operação do ETL em constante aprimoramento, auxiliando a equipe a gerenciar bugs e problemas com fontes de dados, formatos de dados, transformações, destinos, etc.

Um processo de registro robusto ajuda as equipes a economizar tempo, permitindo que identifiquem problemas com mais rapidez e facilidade, e os engenheiros líderes precisam de menos tempo para identificar diretamente o problema. Às vezes, ocorrem erros no meio da extração de toneladas de dados e, sem um log, é difícil identificar o problema – às vezes quase impossível. Sem logs, todo o processo deve ser executado novamente. Usando logs, a equipe pode identificar rapidamente o arquivo e a linha que causou o problema e pode corrigir apenas esses dados.

O único caso que posso imaginar onde os logs não são tão importantes é com sistemas não automatizados muito pequenos, onde o processo é executado manualmente e há uma pequena quantidade de dados que podem ser monitorados manualmente.

Os logs melhoram a automação. Processos ETL com uma grande quantidade de dados executados automaticamente precisam de sistemas de log. Se eles forem bem planejados e executados, todo o esforço investido na construção de um sistema de registro renderá dividendos na forma de identificação de erros mais rápida, dados mais confiáveis ​​e pontos de melhoria encontrados nos arquivos de registro.

Existem três etapas principais na criação de um sistema de log: gerar, arquivar e analisar .

  • Gerar é o processo de documentar o que está acontecendo durante a execução de pipelines ETL: quando o processo foi iniciado, qual arquivo ou tabela está sendo extraída, os dados que estão sendo salvos na área de teste, as mensagens de erro e muito mais. Todas as informações importantes que podem ajudar os engenheiros devem ser registradas. Alerta : Preste atenção para não gerar tanta informação que apenas consumirá tempo e espaço e não será útil.
  • Arquivar dados de log significa manter um registro de execuções passadas para pesquisar cenários anteriores para identificar erros ou comparar com o cenário atual em busca de melhorias. É importante verificar a relevância de um ponto específico na história para salvar – dados de muito tempo atrás, onde a estrutura mudou muitas vezes, não vale a pena manter.
  • Analisar . A análise de log é de importância crucial. Armazenar toneladas de dados que não são analisados ​​não faz sentido. Custa apenas tempo e dinheiro para gerar e armazenar os dados. A análise de log é importante não apenas para ajudar a procurar erros, mas também para identificar pontos de melhoria e aumentar a qualidade geral dos dados.

atuação

Os processos de ETL podem trabalhar com toneladas de dados e podem custar muito, tanto em termos de tempo gasto para configurá-los quanto dos recursos computacionais necessários para processar os dados. Ao planejar uma integração, os engenheiros devem ter em mente a necessidade de todos os dados que estão sendo empregados. A melhor coisa a fazer é trabalhar com a quantidade mínima de dados para atingir os objetivos, em vez de gastar tempo e dinheiro apenas migrando dados inúteis. Além disso, lembre-se de que as quantidades de dados tendem a aumentar com o tempo, portanto, tente considerar suas necessidades futuras.

Quanto esforço deve ser dedicado ao projeto de um sistema de registro?

Depende de vários fatores diferentes, como a quantidade e a frequência dos dados a serem processados. Pequenos sistemas com poucos dados podem ser gerenciados manualmente, sem a necessidade de investir em sistemas avançados de registro.

Empresas com uma grande quantidade de dados, muitos processos diferentes, diferentes fontes e formatos de dados e pipelines complexos devem investir na criação de sistemas de registro. Como já mencionamos, um bom sistema de log pode economizar muito tempo e dinheiro.

Para uma abordagem mais óbvia, independentemente do tamanho da empresa, quantidade de dados e frequência de integração, um processo de ETL deve ser lucrativo . Um investimento em tempo, dinheiro e recursos técnicos deve gerar retornos – como disse o economista Milton Friedman: “Não existe almoço grátis”.

Em resumo, um processo de ETL pode ajudar as empresas a aumentar o lucro com dados que já possuem, mas que não estão sendo usados ​​da maneira correta. Os pipelines de ETL podem integrar diferentes sistemas, planilhas com informações importantes e outras partes de dados que estão espalhadas por diferentes departamentos e filiais, permitindo que as organizações aproveitem ao máximo seus dados.