Olá, pessoal. Espero que eu esteja ajudando vocês nesse
início de aprendizado sobre o BI.
Já vimos definição de BI e um básico sobre OLAP e DW. Hoje
vou falar sobre ETL.
O ETL (Extract, Transform and Load) é um processo destinado à
extração transformação e carga de dados vindos de um banco transacional para um
DW.
Nesse processo são obrigatórias às fazes de extração e carga
já que se os dados estiverem no mesmo formato ou linguagem do destino não será
necessário a faze de transformação.
O que é ETL:
O processo de ETL é o mais longo e trabalhoso da faze de
construção de um BI, pois é a extração dos dados de uma base transacional de
origem, transformação, limpeza desses dados e carregamento no DW.
Extração:
Segundo Inmon é normal que aproximadamente 80% dos esforços
de um BI sejam concentrados neste processo, já que para o funcionamento correto
do BI proporcionando análises confiáveis os dados devem refletir a pura verdade
e nada mais, o que faz do ETL um processo que deve ser pensado e realizado com
cuidado.
Esta etapa do processo deve se basear na busca das
informações mais importantes em sistemas fontes ou externos e que estejam em
conformidade com a modelagem do DW. Essa busca, na maioria, é dificultada pelo
fato de as informações estarem armazenadas em fontes distintas de dados. Num
primeiro momento é normal que a carga inicial seja feita para que todos os
dados do sistema origem sejam transferidos para uma área do DW chamada de Stage
e posteriormente passada para a área chamada ODS, também no DW. Após isso as
demais cargas serão incrementais que segundo Kimball é a mais eficiente e
carrega somente os registros que foram alterados ou inseridos na base origem.
Transformação:
A etapa seguinte à extração é a transformação, nesta fase
faz-se também a limpeza dos dados. Verificam-se erros de digitação, restrições
de permissão dos bancos (quando o há alguma restrição do tipo o usuário não
pode inserir no DW), padronizam-se as abreviações, etc.
Para garantir a qualidade dos dados o devemos observar o
seguinte:
·
Unicidade: Evitar duplicações de informação.
·
Precisão: Os dados não devem perder suas
características originais assim que são carregados no DW.
·
Completude: Não deve gerar dados parciais dos
dados importantes para a análise.
·
Consistência: Os dados devem ser coerentes com
os dados das dimensões, devem ter forma homogênea para a carga no DW.
Enquanto busca-se a homogeneidade dos dados podem ocorrer
dois tipos de conflitos:
Semânticos: São aqueles que envolvem a palavra ou o nome
associado às estruturas de modelagem, como ter o mesmo nome para entidades
distintas.
Estruturais: São os que dizem respeito à própria estrutura
da modelagem e os mais típicos são:
·
Diferenças de unidades: Quando as unidades
utilizadas diferem, embora forneçam a mesma informação. Como uma distância em
metros ou em quilômetros.
·
Diferenças de precisão: Quando a precisão
escolhida varia de um ambiente para outro. Se um valor monetário é armazenado
(10,2) dez casas antes da vírgula e duas depois ou (10,6) dez casa antes da
vírgula e seis depois.
·
Diferenças em códigos ou expressões: Quando o
código utilizado difere um do outro. Por exemplo, quando o sexo é definido com
código M(masculino) e F(feminino) ou (1) masculino e (2) feminino.
·
Diferenças de abstração: quando a forma de
estruturar uma mesma informação segue critérios diferentes. Quando um endereço
está armazenado em uma coluna ou em várias separado em nome da rua, número,
complemento, etc.
Depois de termos identificado os conflitos
criamos regras de conversão que visam exatamente corrigi-los. Essas regras
podem ser criadas através de ferramentas de integração
Após essas observações pode-se
iniciar o processo de carga.
Carga:
Nesse momento são carregados os
dados das Dimensões e da Fato. Este processo pode ser bastante demorado e
requerer muito recurso de processamento, procura-se torná-lo mais curto, pois o
DW será utilizado constantemente. Por isso devemos tomar alguns cuidados. Como:
·
Desligamento de índices e referências de
integridade (isso pode prejudicar a validade dos dados, pois não são validados
no momento da inserção).
·
Utilização de comando tipo TRUNCATE ao invés de
DELETE já que nos sistemas atuais esse recurso não gera armazenamento de
informações em áreas de recuperação de dados.
·
Ter consciência de que alguns dados podem não
ser carregados no momento da carga e assim devemos verificar os motivos para
que possamos solucionar o problema.
Após as dimensões
estarem corretamente carregadas, já é possível iniciar a carga da fato, que
depois de modelados para conter apenas os dados de importância para a empresa,
direcionam quais regras serão utilizadas como, por exemplo, filtros do que
serão inserido ou somas a serem realizadas, provocando o aparecimento de regras
que passaram despercebidas no início da modelagem.
No entanto, a fato demanda cuidados na sua carga, como o uso
das chaves artificiais das dimensões para que se tenha uma integridade
referencial, controle de valores nulos obtidos no momento da transação para que
não gerem a falta de integridade referencial como datas que, estando nulas,
invalidarão o histórico do fato. Técnicas para amenizar o processo devido ao
grande volume de dados podem ser usadas, como a carga incremental da fato, que
irá carregar apenas dados novos ou alterados, execução do processo em paralelo
e em momentos de pouco ou nenhum uso do SGBD e a utilização de tabelas
auxiliares que serão renomeadas como definitivas ao fim da carga.
A figura abaixo mostra o ciclo do ETL em um DW
Para nós do BI o ETL aplica-se na construção do DW, porém
pode-se usa-lo em qualquer tipo de trabalho envolvendo importação,
transformação e carga de dados.
Este é o básico sobre ETL, este conceito é um pouco difícil
de digerir sem um exemplo real, mas como sempre a base também é importante para
identificarmos os passo em nosso dia-a-dia. Obrigado pela visita ao blog e até
o próximo post.
Bibliografia: