Todos os projetos

Dotinha: BI de partidas de Dota 2 com a API do OpenDota

Relatório público que compara as últimas partidas com a carreira, abre o placar de cada jogo e traz heróis e itens com os textos oficiais em português, com atualização agendada sem gateway.

Contexto
Projeto pessoal, publicado na web
Meu papel
Integração de APIs, Power Query, DAX e front-end dentro do Power BI
Período
2026
Ferramentas
Power BI, Power Query (M), DAX, HTML Content, JavaScript, PBIP (TMDL e PBIR), Python

Como a solução funciona

  1. Fontes API do OpenDota e datafeed oficial da dota2.com
  2. Power Query funções com URL base fixa e RelativePath
  3. DAX 97 medidas entregam dados e HTML às páginas
  4. HTML Content Perfil, Partidas, Heróis, Itens, Aliados e Arena RPG
Página Perfil do relatório Dotinha com KPIs e as últimas partidas
Página Perfil do relatório Dotinha com KPIs e as últimas partidas

Por que este projeto

Dados de API que mudam todo dia são o cenário mais comum fora das planilhas: o desafio não é o gráfico, é fazer a atualização rodar sozinha no Power BI Service. O Dotinha resolve isso com duas APIs públicas e sem gateway.

O que ele faz

  • Perfil com medalha, MMR estimado e KPIs das últimas partidas comparados à carreira.
  • Placar completo de cada partida, com os dez jogadores, net worth, dano e itens.
  • Enciclopédia dos 127 heróis e dos itens em português, com o histórico pessoal em cada herói e item.
  • Aliados mais frequentes, com winrate em dupla.
  • Arena RPG por turnos usando atributos e habilidades oficiais.

Como foi feito

  • Funções em M com URL base fixa e RelativePath, o que permite a atualização agendada sem gateway.
  • Parâmetros AccountID e QtdPartidas tornam o relatório reutilizável para qualquer jogador.
  • Medidas DAX que entregam dados ao JavaScript, com um motor compartilhado entre as seis páginas.
  • PBIP no Git, com scripts em Python que regeneram modelo e páginas a partir do código-fonte.

As imagens de cada página e o passo a passo da atualização agendada estão no post do blog.