Escalando a montanha de dados

9
 min de leitura

Soluções de Big Data incluem ferramentas e algoritmos para análise de dados, e mesmo que você não tenha terabytes de dados para analisar, é possível sim fazer uso dessas ferramentas para analisar uma quantidade de dados que já tomariam muito do seu tempo caso optasse por fazer manualmente.

Escalando a montanha de dados

Introdução

Imagine  abrir  sua  caixa  de  e-mail  todos  os  dias  e  encontrar  uma  média  500  mensagens  de  erros vindos de sistemas que sua equipe é responsável: o que fazer? Analisar uma a uma?

Com  tantas  mensagens  de  erro,  o  mais  salutar  seria  primeiro  priorizar  aquelas  mais  graves  e/ou com maior ocorrência, mas para fazer isso seria necessário ler todas as mensagens (se você tiver tempo  hábil)  ou  colocar  o  computador  para  trabalhar  para  você  e  dar  um  resultado  mais "mastigado".

Eu optei por começar devagar e o primeiro passo seria tentar copiar os dados das mensagens nos e-mails em uma planilha do Excel para tentar encontrar padrões. Como abomino fazer CRTL+C e CRTL+V mais de um punhado de vezes, seria necessário criar alguma automação.

Primeiro, era necessário separar as mensagens de erros das outras mensagens de e-mail, então criei filtros no Outlook para isolar as mensagens de erro em uma pasta separada. Essa foi fácil.

Depois foi questão de, a partir do Outlook, abrir uma planilha do Excel via VBA e copiar o conteúdo do e-mail, depois de realizado um parsing simples, em cada linha da planilha. Isso permitia pelo menos limpar a caixa postal e ainda ter as informações.

Depois  disso,  foi  um  trabalho  bastante  manual  tentar  categorizar  as  mensagens  de  erro  para conseguir identificar quais os tipos de problema que apresentavam maior ocorrências. Iniciei isso tentando  categorizar  manualmente  usando  palavras-chave  e  uma  mistura  de fórmulas  como"=SE(SEERRO(LOCALIZAR('error     types'!$B$2;C2);0)>0;1;0)"com "=SOMASE('EAI errors'!E2:E424;">0")"que  realmente  era  uma  dor  de  cabeça para acertar manualmente a cada nova extração do Outlook.

Antes  de  eu  continuar  massacrando  dados,  as  mensagens  de  erro  mudaram  de  lugar:  a  área  de infraestrutura  optou  por  parar  de  mandar  mensagens  de erro  (algo  inteligente,  pela  quantidade) e registrar as  mesmas  em  um  banco  de  dados  relacional. Confesso  que  fiquei um  pouco frustado pelo  tempo empregado com  Outlook  e  VBA,  mas  depois  a  vida  ficou  mais fácil  já  que  os  dados estavam mais bem estruturados e obtê-los era muito menos doloroso.

Facilitando a vida com Naive Bayes

Próximo  passo  era  tentar  categorizar  os  erros  automaticamente.  Eu  já  havia  lido  alguma  coisa sobre o algoritmo de Naive Bayesno Bogofilter, anos atrás, para lidar com SPAM e me pareceu uma boa escolha.

Criei então um programa em Perl utilizando o módulo AI::Categorizer(cujo nome bem sugestivo ajudou na decisão de escolha). O script gerava como saída era um arquivo XML que eu importava novamente no Excel para gerar os gráficos... pelos menos era mais fácil acertar as fórmulas e eu não tinha que categorizar coisa nenhuma.

Categorizar não é tão fácil quanto parece: tive que quebrar a cabeça para criar training corpus que não  se  intrometessem  um  na  vida  do  outro  e  categorizasse  mensagens  de  forma  errada,  mesmo considerando que as mensagens de erro de uma categoria qualquer não mudavam tanto assim entre uma e outra, mas com certeza valeu a pena.

Já importar XML no Excel pode ser bem lento também, principalmente se seu computador é lento e  o  arquivo  XML  grande.  Logo  passei  a  usar  MySQL  como back-end para  guardar  os  dados  em tabelas   normalizadas.   Depois  comecei   a   usar DBIx::Classpara   não   ter   que   fazer CRUD manualmente.

Finalmente, o trabalho restante seria criar gráficos para resumir os resultados e fornecer a gerência insumo  para  definir  quais  erros  precisavam  ter  maior prioridade. Segue  alguns  exemplos  de gráficos gerados com os dados categorizados abaixo:

Eque tal acompanhar se as correções estão sendo eficazes ou não?

Conclusões

Utilizar as ferramentas corretas para o trabalho é sempre o melhor, o problema é saber de antemão o que é mais adequado ou não. Mas com alguma experiência anterior, experimentação e paciência você pode promover o amadurecimento da sua aplicação aos poucos e ainda colher os resultados esperados durante o processo!

Espero  também  que  você  tenha  percebido  que  mesmo  que  não  tenha  terabytes  de  dados  para analisar, alguns megabytes são o suficiente para formar uma carga pesada demais para uma pessoa só analisar, e algumas ferramentas -também empregadas em Big Data-podem lhe ajudar.

Compartilhar esse conteúdo: