O Primo’s Data Transformation Saga

network Era dezembro do ano passado e, enquanto todos achavam que a década estava acabando, eu me perguntava como iria fazer para ganhar dinheiro em janeiro, já que recebo por dia trabalhado e meu cliente brasiliense e governamental iria, obviamente, trabalhar a 10% de sua capacidade entre o Natal e o carnaval – o que significava “férias forçadas” pra mim.

Daí me toca o telefone. Era o consultor-líder de outro projeto, perguntando se eu podia ajudá-lo, em janeiro, a desdobrar umas metas de venda para o departamento comercial de uma empresa. Era uma semana de trabalho – mas trabalho chato, de micreiro. Só que iam me pagar como consultor-sênior e o trabalho era a exatamente dois quilômetros da minha casa, em São Paulo.

Então lá fui eu topar tudo por dinheiro no palco.

Acontece que esse negócio de “desdobrar meta” não é nada simples: é pegar uma meta de alguns BILHÕES de reais e dividí-la para cada um dos SESSENTA MIL clientes, o que obviamente envolve muitos dados. Tradicionalmente, meus colegas consultores – que raramente são profissionais de TI – sempre deram um jeito de fazer o trabalho com a única ferramenta que conhecem: “programando” com fórmulas de duas, três linhas de comprimento em planilhas de Excel enormes, facilmente propensas a erro e cuja manutenção é um pandemônio. E normalmente eles não conseguem porque esbarram nas limitações “físicas” das planilhas do Excel, que “só” aguentam um milhão e quarenta e oito mil linhas.

Aí você pensa: “Isso é muita gambiarra, é praticamente um data warehouse feito em Excel, vocês deviam arrumar alguém de TI pra construir um sistema pra isso”. Mas meus colegas consultores, ao invés de pensar nisso, dizem: “Não cabe no Excel? Então vamos fazer no Access, que aguenta mais linhas!”. E ao invés de abandonar a gambiarra eles vão para um software aonde cabem ainda mais gambiarras.

AccessError

O Microsoft Access é um enigma pra mim. Ele é marqueteado como um banco de dados para aplicações simples, como um sisteminha de vendas e estoque pra tia Neusa, dona da papelaria da esquina. Ou seja, o Access te entrega toda a funcionalidade complexa de um banco de dados (integridade referencial, consultas em SQL, etc.) para situações onde um caderninho de estoque ou uma planilha de Excel resolveriam. E quando você tenta usar o Access como um banco de dados de verdade, descobre que ele é absurdamente lento e armazena no máximo 2 gigabytes de dados.

E então você lembra dos bilhões de reais da meta divididos entre os milhares de clientes e pensa: “Ah, então é nessa hora que eles arrumam alguém de TI pra construir um sistema decente pra fazer o trabalho, né?”.

Não, meus caros. É nessa hora que eles me ligam.

E o meu trabalho ainda tinha mais alguns agravantes:

  • Eu tinha que entender um desdobramento antigo que havia sido feito por outro consultor pra poder descobrir como desdobrar a meta nova. Felizmente ele tinha deixado um “passo-a-passo” de como atualizar tudo… um passo-a-passo com sessenta e cinco passos do tipo “Execute a consulta X no arquivo Y”, “Importe os dados da tabela Z no banco de dados K”, “Copie os dados da coluna G da planilha XPTO do Excel para a coluna F da planilha Y”, e por aí vai. Era o equivalente digital da foto do começo deste post.
  • O último nível de desdobramento (o dos clientes) estava todo feito usando o CNPJ do cliente, e me pediram pra abandonar os CNPJs e fazer tudo com um tal “código de cliente”. E tem CNPJs que tem dois códigos de cliente vinculados. E tem clientes novos que não tinham meta no desdobramento velho e tinham que receber meta no novo.
  • Eu deveria desdobrar todas as metas para 2010. Os dados para um mês de metas ocupavam 2GB no Access. E o Access tem aquele limite de no máximo 2GB por arquivo, então eu normalmente trabalhava migrando dados de um arquivo Access para outro e esperando esse outro arquivo entupir e o Access dar pau. Aí eu migrava tudo de novo pra um terceiro arquivo, e assim por diante.
  • Eu tinha que trabalhar no Access evitando ao máximo consultas do tipo união (UNION ALL no SQL) e subconsultas (consultas dentro de consultas), porque qualquer um desses dois recursos colocava o Access no modo “velhinha de óculos com uma caneta marca-texto e uma régua comparando os dados de duas folhas de papel linha a linha”. Ou seja, era MUITO lento. E ainda assim, usando as consultas “rápidas” do Access, eu levava mais ou menos uma hora para desdobrar cada mês de dados de metas. Qualquer erro no desdobramento poderia implicar num retrabalho de, no mínimo, mais doze horas. E eu tinha apenas 40 delas disponíveis pra terminar tudo.

E foi assim que passei a semana perdido entre dezenas de Excéis e Acceses, empurrando dados de um arquivo pra outro. Tinha uma planilha que era tão complexa que, depois de qualquer mexidinha nela, o Excel travava por quinze minutos recalculando as fórmulas e referências cruzadas. Minha sequência de trabalho envolvia tantas coisas em paralelo que eu tinha que desenhar fluxogramas numa folha de papel, indicando aonde eu estava e como os dados iam de um arquivo pra outro, senão eu me perdia. Ontem foi o último dia de trabalho. Eu almocei um McDonalds em frente ao computador, sobrevivi o resto do dia à base de café e uma tortinha de maçã (também do McDonalds) e, lá pelas oito da noite, quando minha cabeça já doía e eu já apertava Enter pensando “ok, dê-me logo o próximo pau que vou ter que resolver”, eis que me aparece a tabela final, com as metas novas, certinhas e todas divididas por cliente.

Sabe, é um trabalho tão frustrante e gambiarrado que no fim você não tem exatamente aquela sensação de dever cumprido: é mais um misto de alívio por ter conseguido sair vivo do outro lado do buraco. Mas pelo menos fiquei menos falido nesse começo de ano…

Pra você, que achou o 3D de “Avatar” um espetáculo

 

The Third & The Seventh from Alex Roman on Vimeo.

Aí você pensa: “Tá, ok, um vídeo sobre arquitetura e câmeras antigas?”. Sim, meus amigos, um vídeo sobre arquitetura e câmeras antigas.

Totalmente feito por computador.

É simplesmente assustador o nível de fotorrealismo que esse cara conseguiu. Eu só acreditei que era CG depois que vi o vídeo do making of de uma das cenas.

Recomendo que você assista a versão em alta definição e em full screen.

(Link via @seufelipe)