Implementar uma solução de ponta a ponta de um fluxo de dados.
A ideia foi executar um ETL com boas práticas de arquitetura de software, programação orientada à objetos, testes unitários e design patterns. O banco utilizado para armazenar os dados foi o SQLite.
De forma mais especifica, o projeto consiste em extrair de informações sobre o filmes da API do TMDB, armazenar e modelar 2 kpis e montar uma visualização para os mesmos.
API: https://developers.themoviedb.org/3/movies/get-movie-details
- Construir um fluxo de ETL, com a separação de suas responsabilidades
- Armazenar num banco de dados SQLite
- Criar uma visualização como um dashboard do plotly
- Clone esse repositório na sua máquina.
- Crie um ambiente virtual.
- Instale o arquivo
requirements.txt
python3 -m pip install -r requirements.txt
- Rode o arquivo
run.py
python3 run.py
oupython run.py
.
- Após isso, é esperado que:
-
- Um arquivo
myDb.db
seja criado.
- Um arquivo
-
- Uma mensagem
Dados carregados com sucesso!
apareça no seu terminal
- Uma mensagem
-
- Apareça uma url do Flask como essa
http://127.0.0.1:8000/
. Basta copiar esse link e colocar no seu navegador.
- Apareça uma url do Flask como essa
-
-
Caso Queira rodar com DOCKER rode os seguintes comandos:
docker build -t python-data-viz:v01 .
docker run --name container-dataviz -p 8000:8000 -d python-data-viz:v01
Então depois de 1 minuto mais ou menos (tempo que dura o processo) podes acessar seu localhost na porta 8000 e terá acesso ao mesmo dashboard.
- "title" - Título do filme
- "genres" - generos do filme
- "budget" - Orçamento do filme
- "original_language" - lingua original do filme
- "original_title" - titulo original do filme
- "vote_average" - A média de votos atribuídos ao filme pelos usuários do TMDb.
- "vote_count" - O número total de votos recebidos pelo filme.
- "popularity" - A popularidade do filme no TMDb em porcentagem
- "revenue" - A receita gerada pelo filme em dólares
- "release_date" - data de lancamento
- "status" - O status de produção do filme (por exemplo, "Lançado", "Previsto", etc.).
- "runtime" - duração do filme em minutos
Distribuição de Gêneros Mais Populares: Esse KPI analisa a distribuição dos gêneros mais populares na base de dados do TMDB. Ele pode ajudar a identificar quais gêneros têm maior demanda e popularidade entre os usuários.
Lucro: o Lucro é uma métrica importante para saber se o filme de fato valeu a pena ser feito. Sendo ele a diferença entre a receita e o orçamento.
- src: Pasta principal
- drivers: Repositório relacionado as requisições e sua interface.
- Infra: Repositório relacionado a conecção e operação com o banco de dados
- main: Repositório responsável por implementar o pipeline principal
- stages: Relacionado aos estágio de extração, transformação, carregamento dos dados e visualização dos dados.
- tests: Testes unitários.
├── app.py
├── install.sh
├── main.py
├── raw.py
├── README.md
├── requirements.txt
├── run.py
├── src
│ ├── drivers
│ ├── infra
│ ├── __init__.py
│ ├── main
│ ├── stages
│ └── tests