O projeto tem como objetivo desenvolver uma solução para a extração de dados do acervo musical do Spotify utilizando sua API. Após a extração, os dados serão armazenados em um Datalake na plataforma Snowflake.
As extrações variam conforme o perfil de usuário especificado na API do Spotify. Abaixo, segue a lista de todos os endpoints utilizados neste projeto:
- GLOBAL_TOP_TRACKS_DAILY_STREAM
- GLOBAL_TOP_TRACKS_WEEKLY_STREAM
- GLOBAL_VIRAL_TRACKS_DAILY_STREAM
- USER_SAVED_TRACKS_STREAM
- USER_TOP_ARTISTS_LT_STREAM
- USER_TOP_ARTISTS_MT_STREAM
- USER_TOP_ARTISTS_ST_STREAM
- USER_TOP_TRACKS_LT_STREAM
- USER_TOP_TRACKS_MT_STREAM
- USER_TOP_TRACKS_ST_STREAM
- Crie um ambiente .venv
- Instale as bibliotecas do arquivo requirements.txt com o seguinte comando
pip install -r requirements.txt
.
Crie ou associe sua conta do Spotify na página de developer, siga os passos para criar um APP para obter as chaves de acesso.
Link: https://developer.spotify.com/documentation/web-api/concepts/apps
- Obtendo refresh token:
Para obter seu refresh token entre no arquivo
get_refreshtoken.py
. Altere as informações abaixo de acordo com suas chaves pessoais.
CLIENT_ID = 'YOU_CLIENT_ID'
CLIENT_SECRET = 'YOU_CLIENT_SECRET'
REDIRECT_URI = 'YOUR_REDIRECT_URI'
-
Na janela do navegador que será aberta copie os caracteres depois de:
code=
-
Cole o código na caixa de texto que aparecerá em seu terminal.
-
Anote o Refresh Token para as próximas etapas.
O Snowflake é uma plataforma de armazenamento de dados baseada na nuvem que oferece soluções eficientes para data warehousing e análise de dados. Sua arquitetura única separa armazenamento e computação, permitindo escalabilidade e flexibilidade. Compatível com AWS, Azure e Google Cloud, o Snowflake suporta uma ampla gama de formatos de dados e é conhecido por sua facilidade de uso e segurança robusta.
Crie uma conta free no snowflake: https://www.snowflake.com/pt_br/
- Crie um database com o nome de sua preferência (Ao criar selecione a Role ACCOUNTADMIN).
- Crie um schema com nome "raw".
OBS: A criação da conta requer um cartão de crétido, o projeto pode gerar custos, tenha atenção antes de prosseguir.
Meltano é uma ferramenta de integração de dados de código aberto que facilita o processo de ELT (Extract, Load, Transform) para engenheiros de dados. Permite automação completa de pipelines de dados, desde a extração até a transformação e suporta múltiplas fontes e ferramentas através de plugins.
Desta maneira iremos utilizá-lo no processo de Extract e Load.
-
Crie um database e um schema em seu Snowflake.
-
Alterando variáveis de ambiente Snowflake. Navegue até o arquivo
meltano-api-spotify>meltano.yml
e altere as variáveis de ambiente de acordo com os dados da sua conta do Snowflake.
account: 'YOUR_ACCOUNT'
add_record_metadata: false
database: YOUR_DATABASE
schema: YOUR_SCHEMA
load_method: overwrite
warehouse: COMPUTE_WH
user: YOUR_USER
role: ACCOUNTADMIN
- Build da imagem meltano.
- Certifique-se de estar na pasta meltano-api-spotify.
- Execute o seguinte comando:
docker build -t meltano .
- Espere o processo encerrar.
O Apache Airflow é uma plataforma de código aberto usada para orquestrar fluxos de trabalho complexos e automação de processos. Permite aos usuários programar, agendar e monitorar fluxos de trabalho como sequências de tarefas, usando uma interface gráfica ou código Python. Com uma arquitetura flexível e extensível, Airflow é amplamente utilizado para gerenciar pipelines de dados, garantindo que as tarefas sejam executadas na ordem e condições corretas.
- Navegue até a pasta
airflow
. - Execute o comando
docker compose up -d
. - Abra uma aba no navegador e entre em: localhost:8080
- Usuário e senha padrão: airflow
- Adicionado pool: Navegue no menu superior
Admin>Pools
. Adicone a poolmeltano_pool
e configure 2 slots. - Adicionando variáveis de ambiente:
Navegue
Admin>Variables
e adicone as seguintes variáveis de ambiente seguido dos seu valores.
SPOTIFY
CLIENT_ID
CLIENT_SECRET
REFRESH_TOKEN
SNOWFLAKE
TARGET_SNOWFLAKE_PASSWORD
Agora você está pronto para executar sua DAG, trigger ela e verifique se os dados estão sendo inseridos em seu Snowflake.
- Snowflake
- Meltano
- Airflow
- Python
Willian Ribeiro dos Santos