No post de hoje irei mostrar como estou estruturando a criação do meu primeiro portfólio como futuro Engenheiro de Dados.
A ideia é utilizar apenas ferramentas de código para desenvolver minhas habilidades e me tornar um profissional melhor.
Espero que possa agregar conhecimento para vocês e vamos ao projeto.
ÍNDICE DO ARTIGO:
- INTRODUÇÃO
- BANCO DE DADOS RELACIONAL & DATA WAREHOUSE
- FLUXO GERAL DE DADOS
- CONCLUSÃO
- OLÁ!
- SIGA NAS REDES SOCIAIS!
INTRODUÇÃO
Com as ferramentas de ELT instaladas (aqui e aqui), quero seguir adiante e agora, abordando um pouco mais a parte de modelagem e desenho da arquitetura do projeto.
O que vamos ver nesse post é o modelo dimensional e como o meu ambiente foi projetado, quero dizer, a fonte e o destino.
Para desenvolver esse projeto, irei utilizar dois bancos de dados, SQL Server e PostgreSQL com o Management Studio e o DBeaver (para gerenciar o PostgreSQL), um container Docker – onde ficará o PostgreSQL – e o DBT, para transformação de dados.
Explicado o ambiente, vamos para o post.
BANCO DE DADOS RELACIONAL & DATA WAREHOUSE
Para o meu primeiro projeto, utilizarei o banco AdventureWorks e outro banco chamado DB_CORP, que encontrei na internet. Para a segunda fase do projeto, irei utilizar fontes de dados da internet como o IBGE e a bolsa de valores B3; este último ainda não definido.
Em um momento futuro, irei modelar e utilizar outro banco para o projeto chamado WideWorldImporter. Pretendo ainda, utilizar fontes via API e unir esses pedaços em um projeto maior.
Para a minha primeira fonte, comecei modelando o processo de vendas. Se quiser saber mais sobre modelagem dimensional, veja esses posts aqui.
A ferramenta de modelo de dados foi a StarUML.
No modelo estão apenas as tabelas do Data Warehouse.
Exclui as colunas do desenho para não ficar poluído, mas se quiser saber sobre elas, basta acessar essa planilha no Google Drive.
As dimensões ficaram da seguinte forma.
Na tabela de Date utilizarei a ideia de roleplay dimension, criando VIEWS a partir de uma única tabela, poupando o modelo de relacionamentos que seriam “desnecessários”.
Repare que tentei utilizar ao máximo o método de Star-Schema, embora haja alguns relacionamentos. Poderia dizer que é um modelo híbrido, definiria muito bem a estrutura, embora eu, particularmente, acredite que está mais para um Star-Schema do que o Snowflake.
Como dito, essa é a primeira área de negócio que modelei para o projeto. Se vocês perceberem aqui, verão que ainda existem outras 4 para irem para o Data Warehouse. E tal ação foi proposital, foi uma espécie de simulação da área mais importante para a “empresa”.
As outras áreas são: Purchase e Production. Que devem vir após a conclusão da área de Sales.
FLUXO GERAL DE DADOS
Na imagem abaixo, trouxe o fluxo de dados que o projeto terá. Tentei deixar as etapas bem separadas e distintas umas das outras para facilitar o entendimento e a organização.
Devo deixar claro que esse fluxo será modificado na medida que o projeto for se encorpando.
Essa é a visão mais macro do meu portfólio.
Olhando com uma visão mais micro do projeto, na fonte de banco de dados, ele ficará desta forma:
Como o Power BI tem conexão nativa com SQL Server, achei melhor ‘devolver’ os dados para a fonte e conectar e analisar de lá.
A escolha do PostgreSQL como área de stage foi, além d’ele ter mais recursos com a linguagem SQL, meu desejo é me habituar e conhecer um pouco mais do ambiente Docker e de bancos Open-Source.
CONCLUSÃO
A intenção desse post é passar uma visão geral do meu projeto e como estou estruturando o meu workflow para o ELT-L.
Como quero melhorar minhas habilidades com SQL e Python, não utilizarei ferramentas gráficas para transformação de dados.
Pretendo também, utilizar o Spark para ETL, mesmo sabendo que não é o adequado. A ideia é adquirir conhecimento na mais importante e utilizada ferramenta de processamento de Big Data do mercado.
Como orquestrador, utilizarei o Airflow, pelos mesmos motivos citados acima: ferramenta de código.
Espero que gostem do projeto e os ajude a desenvolver os seus!
Obrigado!
OLÁ!
Se chegou até e gostou do meu conteúdo, deixe o like e compartilhe na sua rede! Ajude no crescimento do blog!
Muito Obrigado! Volte sempre!
Se inscreva na newsletter para receber as atualizações.