Skip to content

Commit

Permalink
Merge pull request #42 from VitorM3/feat/docs
Browse files Browse the repository at this point in the history
Feat/docs
  • Loading branch information
YuriLopesM authored Jun 28, 2024
2 parents a9f386d + b18afea commit 8ae8d07
Show file tree
Hide file tree
Showing 9 changed files with 134 additions and 15 deletions.
17 changes: 11 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ Um modelo genérico de E-commerce para validação de conhecimentos da matéria

Essas instruções permitirão que você obtenha uma cópia do projeto em operação na sua máquina local para fins de desenvolvimento e teste.

Consulte **[Implantação](#-implanta%C3%A7%C3%A3o)** para saber como implantar o projeto.

## Desenho de Arquitetura

Expand All @@ -16,31 +15,37 @@ Consulte **[Implantação](#-implanta%C3%A7%C3%A3o)** para saber como implantar
## Pré-requisitos

Para que o projeto funcione devidamente é necessário que seja instalado em um computador com as seguintes configurações:

```
Memoria Ram: 16gb
Processador: Intel core i5 6gh ou superior
Processador: Intel Core i5 6gh ou superior
Espaço em disco: 6gb
```

Além disto é necessário a previa instalação e configuração do docker:
Além disto é necessário a prévia instalação e configuração do Docker:
https://docs.docker.com/engine/install/

## Instalação

Para realizar a instalação é rode o comando
Para realizar a instalação, rode o comando

```bash
docker compose up
```
Este comando irá subir todos os containers que farão o processo funcionar devidamente

## Implantação

Após instalado, será necessário a configuração das conexões do apache spark e do banco base postreSql. Esta configuração poderá ser feita dentro da aba de conexões do apache airflow. Localizada em:
Após instalado, será necessário a configuração das conexões do Apache Spark e do banco base PostgreSql. Esta configuração poderá ser feita dentro da aba de conexões do Apache Airflow, localizada em:

> admin > Connections
## Ferramentas utilizadas

<div align="center">

# [![Postgres](https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge&logo=postgresql&logoColor=white)](https://www.postgresql.org/) [![Python](https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) [![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https://www.docker.com/) [![Spark](https://img.shields.io/badge/Apache%20Spark-E25A1C?style=for-the-badge&logo=apache-spark&logoColor=white)](https://spark.apache.org/) [![AirFlow](https://img.shields.io/badge/Airflow-017CEE?style=for-the-badge&logo=Apache%20Airflow&logoColor=white)](https://airflow.apache.org/) [![Visual Studio Code](https://img.shields.io/badge/Visual_Studio_Code-0078D4?style=for-the-badge&logo=visual%20studio%20code&logoColor=white)](https://code.visualstudio.com/) ![MiniO](https://img.shields.io/badge/MinIO--pink?style=for-the-badge&logo=MinIO)
# [![Postgres](https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge&logo=postgresql&logoColor=white)](https://www.postgresql.org/) [![Python](https://img.shields.io/badge/Python-3776AB?style=for-the-badge&logo=python&logoColor=white)](https://www.python.org/) [![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https://www.docker.com/) [![Spark](https://img.shields.io/badge/Apache%20Spark-E25A1C?style=for-the-badge&logo=apache-spark&logoColor=white)](https://spark.apache.org/) [![AirFlow](https://img.shields.io/badge/Airflow-017CEE?style=for-the-badge&logo=Apache%20Airflow&logoColor=white)](https://airflow.apache.org/) [![Visual Studio Code](https://img.shields.io/badge/Visual_Studio_Code-0078D4?style=for-the-badge&logo=visual%20studio%20code&logoColor=white)](https://code.visualstudio.com/) [![Astro CLI](https://img.shields.io/badge/Astro%20CLI---?style=for-the-badge&color=%235468ff)](https://www.astronomer.io/docs/astro/cli/overview) [![MinIO](https://img.shields.io/badge/MinIO---?style=for-the-badge&logo=MinIO&color=rgb(199%2044%2072))](https://min.io/)



</div>
Expand Down
32 changes: 32 additions & 0 deletions docs/arquitetura.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Arquitetura do Projeto

<br>

![System Architecture](./assets/architecture.png "Arquitetura do Sistema")

<br>

---

## Banco relacional

A ingestão de dados é feita a partir de um banco de dados relacional, onde são armazenados os dados brutos do sistema de E-commerce.

## ETL

Fluxo da pipeline explicado em [ETL](./etl.md)


## Ferramentas

Para saber mais sobre as ferramentas utilizadas no projeto, acesse [Ferramentas](./ferramentas.md)

## Banco dimensional

O banco dimensional é o responsável por armazenar os dados de forma otimizada para a realização de consultas analíticas. O mesmo possui as seguintes tabelas:

- **Dimensão de Categorias de Produtos**
- **Dimensão de Localização**
- **Dimensão de Vendedores**
- **Dimensão de Clientes**
- **Fato de Vendas**
Binary file added docs/assets/architecture.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 1 addition & 4 deletions docs/dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,4 @@ Artigos e Blogs:
- **"10 Tips for Creating Effective Power BI Dashboards" (Microsoft Power BI Blog)**: Dicas práticas para criar dashboards eficientes e informativos.
- **"Data Visualization Best Practices in Power BI" (SQLBI)**: Melhores práticas para visualização de dados utilizando Power BI.

<br>

## Conclusão
A criação de um dashboard no Power BI, suportada por uma pipeline de dados robusta, permite uma visualização clara e interativa das métricas e KPIs relevantes. A utilização de recursos adicionais, como vídeos e artigos, contribui para a entrega de um produto final de alta qualidade, alinhado às melhores práticas do mercado.
<br>
24 changes: 24 additions & 0 deletions docs/etl.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# ETL

## Introdução
O Processo de ETL consiste em enviar dados de uma base para outra (ou para um data lake) da forma mais otimizada possível e realizando as devidas formatações e transformações.

## Ferramentas

- Apache Airflow - Ferramenta de orquestração de pipelines
- Apache Spark - Ferramenta de processamento de dados
- PySpark - Biblioteca Python para processamento de dados
- MiniO - Object Storage
- PostgreSql - Banco de dados relacional

## Passos Executados

1. Através do Apache Airflow nós realizamos a chamada de uma Dag (processo de pipeline que neste caso será utilizado para realizar o envio de dados de uma base de dados de Ecommerce para uma base de dados dimensional), possibilitando assim, melhor análise dos dados. A Dag ETL (Dag configurada no Airflow para realizar esta operação) realizará a chamada do processo **etl_get_data** que tem como objetivo buscar os dados do banco PostgreSql e criar arquivos `.csv` contendo 1000 dados cada, facilitando assim a leitura destes.

2. Após o processo **etl_get_data** ser concluido, realizamos a chamada do processo **etl_leading**, que tem como objetivo ler os arquivos `.csv` contendo os dados do banco e enviar eles para o **MiniO** que neste contexto servirá como Object Storage. Estes arquivos são salvos no MiniO no formato `parquet`.

3. Sendo concluido o processo da camada leading, o Airflow realiza a chamada do processo **etl_bronze** que tem como objetivo ler os arquivos `parquet` e criar uma **Delta Table** destes, otimizando assim as consultas subsequentes.

4. Posteriormente, será chamado o processo **etl_silver** que será responsável pela transformação dos dados nos padrões necessários

5. Último processo dentro da arquitetura medalhão, o **etl_gold**, que enviará os dados que estão nas tabelas delta para o banco dimensional **PostgreSql**.
63 changes: 63 additions & 0 deletions docs/ferramentas.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Ferramentas

---

## Introdução

Este documento descreve as ferramentas utilizadas no projeto, incluindo as tecnologias de banco de dados, linguagens de programação, ferramentas de orquestração de pipelines e armazenamento de objetos.

Utilizamos as seguintes ferramentas:

- **PostgreSQL** - Banco de dados relacional
- **Python** - Linguagem de programação utilizada para criar os scripts de extração, transformação e carga de dados
- **Docker** - Containerização de aplicações
- **Apache Spark** - Processamento de dados em larga escala
- **Apache Airflow** - Orquestrador de tarefas
- **Visual Studio Code** - Editor de código
- **Astro CLI** - Ferramenta de linha de comando para gerenciamento de infraestrutura
- **Minio** - Armazenamento de objetos

## Descrição

<br>

**PostgreSQL**

O PostgreSQL é um sistema de gerenciamento de banco de dados relacional de código aberto e amplamente utilizado. Ele oferece suporte a recursos avançados de SQL e é conhecido por sua confiabilidade, escalabilidade e extensibilidade.

**Python**

Python é uma linguagem de programação de alto nível, interpretada e de propósito geral. É amplamente utilizada em ciência de dados, desenvolvimento web, automação de tarefas e muito mais. No projeto de Ecommerce, utilizamos Python para criar scripts de ETL e outras tarefas de processamento de dados.

**Docker**

Docker é uma plataforma de código aberto que facilita a criação, implantação e execução de aplicativos em contêineres. Ele permite que os desenvolvedores empacotem uma aplicação com todas as suas dependências em um contêiner, garantindo que ela funcione de forma consistente em qualquer ambiente.

**Apache Spark**

Apache Spark é um framework de processamento de dados em larga escala, conhecido por sua velocidade e facilidade de uso. Ele oferece suporte a várias linguagens de programação, incluindo Python, e é amplamente utilizado para análise de dados, machine learning e processamento de streaming.

**Apache Airflow**

Apache Airflow é uma plataforma de orquestração de pipelines de dados, que permite agendar, monitorar e executar tarefas de forma automatizada. Ele oferece suporte a fluxos de trabalho complexos e é altamente configurável, tornando-o uma escolha popular para a automação de processos de ETL e análise de dados.

**Visual Studio Code**

Visual Studio Code é um editor de código leve, poderoso e altamente personalizável, desenvolvido pela Microsoft. Ele oferece suporte a várias linguagens de programação e possui uma ampla variedade de extensões que facilitam o desenvolvimento de aplicativos e scripts.

**Astro CLI**

Astro CLI é uma ferramenta de linha de comando para gerenciamento de infraestrutura, desenvolvida pela Astronomer. Ela simplifica a implantação e o gerenciamento de pipelines de dados baseados em Apache Airflow, permitindo que os usuários criem, execute e monitorem tarefas de forma eficiente.

**Minio**

Minio é um serviço de armazenamento de objetos de código aberto, compatível com o Amazon S3. Ele oferece escalabilidade, alta disponibilidade e segurança para o armazenamento de dados não estruturados, como imagens, vídeos e arquivos de log.


## Instalação

Para instalar as ferramentas utilizadas no projeto, basta ir na raiz do projeto e executar o comando:

```bash
docker compose up
```
7 changes: 2 additions & 5 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@ site_name: Eccomerce-ED
nav:
- Home: index.md
- Padrões do Projeto: padroes.md
- Ferramentas: ferramentas.md
- Arquitetura: arquitetura.md
- Ferramentas:
- Apache Spark: componentes/apache_spark.md
- Apache Airflow: componentes/apache_airflow.md
- MinIO: componentes/minio.md
- Pipeline de Dados: pipeline.md
- ETL: etl.md
- Dashboard: dashboard.md
theme:
name: dracula
Binary file added presentation/Engenharia de Dados.pdf
Binary file not shown.
1 change: 1 addition & 0 deletions presentation/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[Link da apresentação no Canva](https://www.canva.com/design/DAGJdL3BhgE/kQi-wUCPOrfQJElrjXXcVg/edit?utm_content=DAGJdL3BhgE&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton)

0 comments on commit 8ae8d07

Please sign in to comment.