Pular para o conteúdo

// setlists & discografia · em produção

Encore

Pipeline de dados que mede como sete bandas usam a própria discografia em shows ao vivo, a partir de setlists e de dados de discografia.

Problema

Como uma banda usa o próprio catálogo ao vivo ao longo da carreira? O Encore analisa Arctic Monkeys, Oasis, Linkin Park, Twenty One Pilots, Muse, Metallica e Avenged Sevenfold em três métricas: idade do repertório, rotação entre shows e sobrevivência de músicas (Kaplan-Meier).

Dados

Setlists vêm do setlist.fm e a discografia vem do MusicBrainz. Na fase de escopo, o setlist.fm tinha 9.499 shows mapeados para as sete bandas (a cobertura de setlist varia de 75% a 97% entre elas), e o recorte tem 59 álbuns de estúdio.

Os dados brutos do setlist.fm são apagados ao fim de cada execução do pipeline. Só resultados agregados são guardados e publicados.

Decisões técnicas e trade-offs

  • Um DAG no Airflow, executado sob demanda, orquestra extração, validação, transformação com dbt Core e a análise de sobrevivência em Python.
  • Um teste de guarda falha o build se surgir uma coluna setlist_id no schema analytics, para que nenhum dado por show vaze para a camada publicada.
  • O build do site (Jinja2 e SVG) falha se faltar uma tradução ou se houver um link quebrado.
  • O pipeline roda na VM, e o site é estático no Cloudflare Pages, sem custo de infraestrutura ligada 24 horas.
  • O site publicado é estático: não há API nem backend em execução.

Resultado

O site publica as três métricas por banda. Um exemplo é o padrão do Metallica: a cada álbum novo, o repertório rejuvenesce temporariamente e volta a envelhecer até o próximo lançamento. A suíte de testes tem 318 testes passando (14 são ignorados quando o banco de testes não está no ar).

Limitações

  • O site não é reconstruído automaticamente depois de cada execução do pipeline. A publicação é um passo manual.
  • São sete bandas, escolhidas por história interessante e boa cobertura de dados, e não uma amostra do universo de bandas.

Stack e links

Python PostgreSQL Apache Airflow dbt Core pandas lifelines FastAPI Docker Compose Cloudflare Pages