Meigarom
4/6/2020

Como Fazer um Projeto de Modelagem de Dados para Data Engineering

Imagem Principal

Introdução

O que você é capaz de fazer, com aquilo que você sabe?

As empresas procuram a resposta para essa pergunta de forma discreta, através de cases técnicos e entrevistas aplicados aos candidatos, durante o processo seletivo. Portanto, é muito importante que você responda essa pergunta para você mesmo e descubra a resposta antes que o entrevistador o faça.

A maneira mais direta para construir essa resposta é criando um portfólio de projetos matador, que demonstre sua capacidade de resolver problemas reais com o conhecimento que você tem no momento. Essa tática é aplicada à todos os profissionais de Dados, inclusive ao Data Engineer.

Leia esse post até o final, que eu vou mostrar em detalhes como fazer um projeto de Data Engineering envolvendo modelagem de dados.

P.S. Se você quer saber mais sobre os outros tipos de projetos para um portfólio matador, assista esse vídeo do canal “Seja Um Data Scientist” https://youtu.be/LJrK4B7bNWA.

Os 2 Principais Trabalhos de Um Data Engineer.

O trabalho do Data Engineer pode ser resumido em 2 grandes áreas: Arquitetura de Dados e Modelagem de Dados.

Em Arquitetura de Dados, o Data Engineer é responsável por criar pipeline de dados, que ligam as fonte de dados até o consumidor final. As fontes de dados podem ser inúmeras: banco de dados, API’s, eventos no website, etc. Os consumidores final também podem ser dos mais variados, dentre eles, data analyst, data scientist, analistas de negócio, C-level, gerentes, heads, financeiro, suporte ao consumidor, ferramentas de visualização, website, dispositivos móveis, enfim, qualquer pessoa, ferramenta ou sistema.

Se você quiser saber mais sobre Arquitetura de Dados, assista esse vídeo no canal, https://youtu.be/nQu6s8FPhfA, onde falo mais detalhes.

Dentro do pipeline de Dados, existe uma etapa crucial chamada de modelagem de dados. Os dados não podem chegar ao consumidor final exatamente como foram coletados das fontes, é necessário aplicar técnicas de modelagem de dados para que os dados fiquem disponíveis de forma organizada e seu acesso seja rápido e confiável.

Para mais detalhes sobre Modelagem de Dados, assista esse outro vídeo no canal, https://youtu.be/hl_6VVj8A_U, onde eu falo sobre a modelagem mais famosa atualmente.

Faça esse Projeto de Modelagem de Dados!

Nesse artigo, eu vou sugerir um projeto de Modelagem de Dados para seu portfólio de Data Engineering.

E para direcionar seus estudos, é importante definir um problema que seja o mais próximo possível de um desafio real, a fim de que você se mantenha focado em resolver o problema e não se perca com ferramentas.

Disclaimer: O contexto e o problema a seguir, são completamente fictício, o desafio existe somente na minha imaginação.

O Contexto do Negócio.

A Olist é uma startup brasileira com headquarter em Curitiba. Seu modelo de negócio é do tipo e-commerce, com o grande objetivo de ajudar as pessoas que vendem algum produto a encontrar compradores em todos os e-commerce brasileiros.

A Olist vem crescendo muito nos últimos anos, devido ao aumento de novos usuários e também ao aumento das transações em sua plataforma. E as dores do crescimento de uma empresa são inevitáveis, principalmente com dados.

O sistema todo estende sua capacidade, tanto em termos de processamento, quanto em termos de armazenamento de dados e consequentemente o tempo de consulta aos bancos de dados aumenta, impactando a velocidade das análises e o tempo de atualização das métricas nos dashboards.

Um dos grandes objetivos do time de dados para esse trimestre é reduzir o tempo de query em 50%, a fim de tornar as análise mais rápidas e também diminuir o tempo de atualização das métricas nos dashboards.

Logo, seu objetivo como Data Engineering é criar uma solução que proporcione uma redução de 50% no tempo de consulta nos bancos de dados.

O Desafio.

Um das formas de reduzir o tempo das consultas no banco de dados é modelar os dados de modo que a busca fique organizada e otimizada para análises.

Essa organização de dados, damos o nome de Modelagem de Dados. Um dos métodos de modelagem mais utilizados foi proposta por Ralph Kimball em seu livro “The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling”. ( https://amzn.to/2XshlH3 )

Essa modelagem, sugere que você crie tabelas “Fato” e “Dimensão”. A tabela “Fato” descreve um fenômeno do modelo de negócio que possa ser medido através de uma métrica, como por exemplo, o número de vendas, a quantidade de devoluções, o número de novos clientes, etc e as tabelas “Dimensão” fornecem a dimensionalidade das análises, dia, mês, ano, região, produto, clientes, etc.

Minha sugestão é que você leia o livro “The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling”, domine a técnica e faça os exercícios para fixar o conhecimento.

Portanto, seu desafio é modelar os dados da fonte em tabelas “Fato” e “Dimensão”. E para medir o sucesso da sua solução, faça uma query nas tabelas da fonte e no novo modelo de dados, compare o tempo de cada query e mostre a melhoria.

Os Dados da Fonte.

A fonte de dados são tabelas do sistema de e-commerce da empresa, você pode checar o MER ( Modelo Entidade Relacionamento ) na figura abaixo.

Os dados estão disponíveis na página do Kaggle: https://bit.ly/2BgIELw. Você pode ler mais sobre a empresa e também baixar os dados para o seu projeto.

Como Solucionar Esse Desafio?

Não se preocupe se você não sabe nada sobre modelagem, respire fundo, mantenha a mente clara e limpa e então, comece a estudar sobre modelagem. Um bom começo é ler o livro do Ralph Kimball sugerido acima, é um ótimo livro com vários exemplos práticos.

Eu vou deixar aqui um roteiro para você se orientar, ele pode ser modificado da forma que você preferir ou simplesmente ignorado. Provavelmente, você já tem um roteiro de resolução melhor para abordar esse desafio.

Tenha paciência, criar uma solução leva tempo, as respostas não ficam prontas do dia pra noite, assuma uma postura resiliente e nunca desista, afinal você quer ser um Data Engineer e ganhar um ótimo salário, não quer?

Esse é o roteiro de resolução do desafio que eu sugiro:

1.0. Crie 2 tabelas “Fato”.

1.1. Fato de Pedidos.

1.2. Fato de Reviews ( Avaliações )

2.0 Crie 5 tabelas “Dimensão”:

2.1. Dimensão Tempo

2.2. Dimensão Localidade

2.3. Dimensão Pagamentos

2.4. Dimensão Produtos

2.5. Dimensão Cliente

3.0. Crie 5 dashboards, combinando “Fato” e “Dimensão”.

3.1. Número de Pedidos Por Dia.

3.2. Número de Reviews Por Produto.

3.3. Número de Pedidos por Localidade.

3.4. Número de Pedidos por Meio de Pagamento.

3.5. Número de Reviews Por Cliente.

4.0. Crie um ETL para atualizar a tabela “Fato” e as “Dimensão”

4.1. Faça uma simulação de Atualização da “Fato”

4.2. Faça uma simulação de Atualização da “Dimensão”

5.0. Mostre seus resultados

5.1. Faça uma query nas Tabelas Fonte e cronometre o tempo.

5.2. Faça a mesma query no Modelo de Dados e cronometre o tempo.

5.3. Compare os dois tempos de resposta.

O Ferramental da Solução.

Usa as ferramentas que você se sente mais confortável para desenvolver a solução. Eu sugiro que você use apenas SQL para a modelagem e o banco de dados Postgres, solução raíz!!!

Vá em Frente!

Não existe caminho fácil, de curto prazo em nenhum profissão, mas existe o caminho certo. E o caminho certo é adquirir experiência através do desenvolvimento de projetos para mostrar sua capacidade.

Volto a repetir, os projetos do seu portfólio precisam demonstrar que você é tão capaz de resolver desafios de dados quanto os Data Engineers que já atuam profissionalmente nas empresas.

Quando você conseguir solucionar esse desafio, escreva um artigo explicando como sua solução funciona, toda linha de raciocínio, as ferramentas utilizadas, os códigos criados e todas as considerações assumidas.

Se quiser publicar aqui no blog, me manda um msg no LinkedIn (@meigarom ) ou no Instagram ( @meigarom.datascience ). Publicarei seu trabalho com o maior prazer do mundo.

Conclusão:

Nesse post, você recebeu uma sugestão de projeto envolvendo modelagem de Dados, para um portfólio de Data Engineering.

Fique ligado nos próximos posts, eu vou trazer sugestões para os outros tipos de projetos. Assim você conseguirá criar um portfólio de projetos matador no final dessa séries e com certeza estará vários passos a frente em relação aos outros candidatos.

Não se esqueça de acompanhar o canal “Seja um Data Scientist” e o Instagram @meigarom.datascience para mais conteúdos. Caso você tenha LinkedIn, não se esqueça de conectar comigo, é só procurar por @Meigarom, está fácil de encontrar!! haha.

Bons estudos!!