extração e transformação

Extração, Transformação e Carregamento de dados em BI.

A sigla ETL vem do inglês “Extract, Transform and Load”. Traduzindo para o português, significa a extração, transformação e o carregamento de dados. Trata-se de uma etapa importante nos processos de Business Intelligence (BI), cujo objetivo é atingir uma melhor qualidade dos dados, para serem confiáveis e possam fornecer informações importantes para a tomada de decisão. A seguir abordo como funciona esse processo e algumas das suas principais características.

Como acontece o processo de ETL.

Boa parte do trabalho de business intelligence são os processos de ETL, afinal, os dados são oriundos de sistemas transacionais, que permitem a operação de uma empresa. Eles precisam ser extraídos e depois tratados, antes de serem carregados em um sistema que possibilitará a realização de análises e cruzamentos de informações.

Se imaginarmos uma empresa e suas diversas áreas, em cada uma delas encontraremos sistemas transacionais, especialistas em funções diferentes, definidos para resolver algum tipo de processamento de dados em seus respectivos departamentos.

Em uma arquitetura para a utilização de um data warehouse, por exemplo, algumas fases são consideradas para o tratamento de dados oriundos dos sistemas transacionais.

Primeiro os dados são extraídos de sistemas, podem ser armazenados em um staging area, antes de serem transformados. Pode ser um banco de dados que servirá de ambiente pré-transformação e carga.

A fase de transformação, é necessária, uma vez que os dados podem vir em diversos formatos, padrões, estruturados ou não. Por exemplo, cada sistema pode ter um formato de data diferente, o que pode causar problemas na hora de realizar as análises. Sendo assim, os dados são higienizados (campos vazios, registros duplicados), padronizados (unidades numéricas, datas, etc) e contextualizados.

E por último os dados são carregados, disponibilizados em um banco de dados, para que possam ser estudados por um analista, que usará um programa como o Google Data Studio ou Power BI para montar seus dashboards. Em alguns casos poderá realizar análises mais profundas com programas desenvolvidos em R ou Python.

estrutura datawarehouse
Arquitetura de um Data Warehouse. Processos de ETL antes da entrada no banco de dados.

Depois dessas etapas, os dados ficam prontos e disponíveis para estudos e combinações que possibilitarão a transformação deles em informações úteis para a tomada de decisões.

Como agilizar o ETL.

Existem algumas boas práticas que podem facilitar e dar alguma celeridade para o processo de ETL.

Verifique quais são os horários mais adequados para obter uma maior disponibilidade dos dados na hora da extração. Isso é fundamental. Um vez tentei realizar a extração em um momento de operação plena de um sistema. Isso congestionou o fluxo dos dados, estressou o processamento de dados ativo, o que deixou tudo mais lento. Um caos!

Geralmente, para alguns sistemas, o processo de extração pode não causar nenhum problema de performance. Outros, talvez pela forma que foram desenvolvidos, podem ter esse problema. Sendo assim, procure realizar esse processo em horários de menor movimento. Algumas organizações fazem a extração e transformação de grande quantidade de dados, no período da noite, em horários de baixo fluxo de processamento de dados.

Projeto da padronização dos dados.

Pense seriamente em ajudar a projetar a coleta de dados para melhorar a qualidade deles, diminuindo o tempo de tratamento. Considere já padronizar o formatos dos dados imputados em um sistema, pelo usuário ou um sensor, logo no momento da coleta. Se o sistema que faz a captação, produz um dado com algum tipo de erro, ele precisará ser tratado, o que atrasará o processo. O fato é que esse trabalho pode muito bem ser mais veloz, quando os dados já vem com alguma padronização.

Eu já tive situações, em trabalhos com tabelas sem uma quantidade tão significativa de registros, onde fiquei um tempo considerável encontrando problemas e fazendo uma transformação para fazer a padronização de unidades, corrigir a grafia correta de dados, verificar padrões numéricos, de datas, entre outros. Agora, imagine isso em uma quantidade massiva de dados.

Em um trabalho frequente que eu tinha de ETL, para um sistema que enviava dados de eventos, para que eu fizesse relatórios, perdia muito tempo na fase de transformação dos dados. Em uma reunião com os envolvidos na coleta de dados, projetamos soluções que padronizaram a alimentação de dados no sistema, e assim, conseguimos agilizar todo o processo onde a fase de transformação, quase não era necessária.

Automatizando o processo.

Automatizar o processo de transformação também é uma solução muito inteligente. Vamos supor que sua origem de dados é uma planilha e eles precisam ser importados para um banco de dados que está recebendo informações de outras fontes também. Você pode criar um programa em Python ou em R que irá automatizar a coleta desses dados, a transformação deles e o carregamento no banco de dados.

No trecho de código a seguir, mostro um exemplo de transformação usando Python. Nele, é feito o tratamento de correção para o nome de estado, de modo que, o padrão seja sempre “São Paulo”. Dessa forma, não haverá uma tabela estado com registros considerando “SP”, “Sao Paulo” e “São Paulo”, como estados diferentes.

dados.loc[dados['Estado'].isin(['Sao Paulo','SP']), 'Estado'] = "São Paulo"
dados.groupby(['Estado']).size()

Eu consigo imaginar várias medidas para evitar esse tipo de erro na hora da inserção de dados pelo usuário, por isso, como mencionei anteriormente, é tão importante a participação do analista de BI no projeto do sistema.

É necessário usar todos os dados?

Pense que quanto maior o número de dados, maior o tempo de tratamento, possíveis problemas de compliance, performance do banco de dados, entre outros.

O que é realmente necessário tratar, a diferença que um dado fará em seu banco, são perguntas pertinentes.

Antes de extrair os dados, faça os questionamentos necessários, pois podem evitar que você tenha problemas no futuro, principalmente se você está usando um banco de dados na nuvem. Além de performance e espaço, dados desnecessários armazenados, podem aumentar o custo da ferramenta.

Por exemplo: para um projeto onde você fará análises preditivas de séries temporais, faz diferença dados como endereço, local de nascimento, CPF ou RG? Certamente que não.

Como posso planejar meu processo de ETL?

  1. Faça um planejamento do processo. Quem estará envolvido, tempo decorrido, periodicidade, etc;
  2. Considere os sistemas que serão as origens de dados, os formatos que os dados são extraídos e as limitações;
  3. Quais os dados são necessários na extração e as regras de governança de dados;
  4. Onde será o staging área dos dados extraídos;
  5. Como será o sistema de transformação, manual ou automatizado?
  6. Elabore um processo de controle de qualidade, um esquema de teste para validar o sucesso da transformação. Nomeie um responsável, ou um comitê (dependendo do tramanho do trabalho), quem será o responsável por fazer essa validação, com base em uma taxa amostral.

E você? Já participou de algum processo grande de ETL? Conte sua experiência!

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *