Skip to content

devpbleite/music-test-data

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎵 Music Test - Análise e Engenharia de Dados

📖 Sobre o Projeto

Este projeto foi desenvolvido como parte de um desafio técnico para tratar dados musicais. O objetivo central é demonstrar a ingestão, limpeza, modelagem e análise de uma base de dados musical contendo milhares de faixas, utilizando as melhores práticas de banco de dados relacional.

A solução projetada engloba todo o ciclo do dado: desde tratamento prévio de inconsistências do arquivo bruto, até a arquitetura de tabelas normalizadas e consultas analíticas avançadas no banco de dados.

🏗️ Arquitetura e Stack de Tecnologias

A pipeline de processamento e a modelagem utilizaram as seguintes tecnologias:

  • Python & Pandas: Extração, verificação e limpeza dos dados originais corrompidos/desformatados antes da carga.
  • PostgreSQL: Banco de dados relacional e escalável escolhido para a modelagem física e relacional dos dados.
  • SQL: Criação das estruturas tabulares e construção das queries de análise de resposta .

Modelagem Dimensional aplicada

Para evitar redundância de dados e otimizar as consultas analíticas, a base bruta foi separada e normalizada em um modelo padronizado:

  • Fato: fact_streams (Métricas de reprodução, referenciando diretamente os IDs dimensionais).
  • Dimensões: dim_artist (Cadastro único de artistas) e dim_genre (Cadastro único de gêneros).

🎯 Solução Analítica e Atendimento aos Requisitos

Todos os desafios propostos no Business Case foram técnica e perfeitamente solucionados dentro dos scripts SQL (04_queries.sql):

  1. Importe o arquivo para o SQL: Solucionado com a criação de uma tabela bruta (01_create_staging.sql) e ingestão otimizada nativa (03_import_data.sql).
  2. Crie tabelas dimensão a partir desse arquivo: Estrutura relacional baseada em chaves primárias e estrangeiras criadas com sucesso (02_create_dimensions.sql).
  3. Total de streams por gênero (Q3): Query de agregação gerando a listagem completa de volumetria.
  4. Média de streams por gênero (Q4): Query analítica apontando o desempenho médio dos ritmos.
  5. Total de streams por artista em cada ano (Q5): Agrupamento temporal multidimensional cruzando quem cantou e quando.
  6. Realize uma consulta anonimizando artista e gênero (Q6): Junção da base unificada mascarando informações sensíveis e expondo apenas as chaves identificadoras (IDs).

🚀 Como Executar o Projeto Localmente

1. Preparação e Limpeza da Base Bruta Antes de inserir no banco, execute a rotina de limpeza desenvolvida em Python para tratar e higienizar o documento original .csv:

python clean_data.py

(As inconsistências serão eliminadas, gerando o arquivo tratado Music_Test_clean.csv na estrutura de pastas local).

2. Fluxo Estrutural e Arquivos SQL Em uma IDE compatível (recomenda-se SQLTools nativo do VSCode) conectada ao banco isolado PostgreSQL (musicdb), execute obrigatoriamente nesta ordem:

  • 01_create_staging.sql
  • 02_create_dimensions.sql
  • 03_import_data.sql
  • 04_queries.sql

⚠️ IMPORTANTE: Antes de executar passo final de ingestão (03_import_data.sql), lembre-se de consultar e alterar a linha do comando COPY, apontando corretamente o caminho absouto de origem onde foi salvo o Music_Test_clean.csv na sua infraestrutura/máquina.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages