Projetos
Power BI · Games · Desenvolvimento

Dashboard Game Sales — Como foi feito (explicado fácil)

Pensa que você tem 16 mil jogos de videogame e quer saber: "qual gênero vende mais? que plataforma manda? Japão joga diferente do mundo?". Aqui montei um painel no Power BI que responde isso em 1 tela, com 3 cliques.

Nível Intermediário Stack Power BI · DAX · Power Query · Figma Tipo Dashboard BI
Visão geral

O que é isso, em uma frase?

É um painel no Power BI que mostra, em formato visual, as vendas de 16.598 jogos publicados nas últimas 4 décadas. Filtros: gênero, plataforma, ano, região (NA/EU/JP/Outras).

Por que importa? Porque planilha de 16k linhas ninguém abre. Dashboard interativo, com filtro, com KPI no topo — isso é o que decisão executiva precisa. E o BI também serve pro candidato a job: mostra que sabe traduzir dado em narrativa.

Passo a passo

Do CSV ao dashboard

1 · Desenhar antes de codar — no Figma. Eu não abro o Power BI sem antes saber o layout. Cor, hierarquia, KPI no topo, gráficos abaixo. Decisão de design é mais barata em mockup do que na ferramenta.

2 · Power Query — limpar e tipar. Importo o CSV, promovo headers, e na mão tipo cada coluna. Inferência automática erra: Year vinha como texto, NA_Sales com vírgulas em vez de pontos.

let
    Fonte = Csv.Document(File.Contents("vgsales.csv"), [Encoding=65001]),
    Promoted = Table.PromoteHeaders(Fonte, [PromoteAllScalars=true]),
    Tipados = Table.TransformColumnTypes(Promoted, {
        {"Year",         Int64.Type},
        {"NA_Sales",     type number},
        {"Global_Sales", type number}
    }),
    SemNulls = Table.SelectRows(Tipados, each [Year] <> null)
in
    SemNulls

3 · Modelar em estrela (Kimball). 1 tabela de fatos (fato_vendas) + 3 dimensões (dim_jogo, dim_tempo, dim_regiao). Cada dimensão liga-se à fato por chave. Esse desenho é o que faz o BI rodar rápido.

4 · Escrever as medidas DAX. KPIs (Total Vendas Globais), comparações temporais (Vendas Ano Anterior usando SAMEPERIODLASTYEAR), e ranking dinâmico (RANKX).

Total Vendas Globais = SUM ( fato_vendas[Global_Sales] )

Vendas Ano Anterior =
    CALCULATE ( [Total Vendas Globais],
                SAMEPERIODLASTYEAR ( dim_tempo[Date] ) )

Var YoY % =
    DIVIDE ( [Total Vendas Globais] - [Vendas Ano Anterior],
             [Vendas Ano Anterior] )

Rank Genero =
    RANKX ( ALL ( dim_jogo[Genre] ), [Total Vendas Globais],, DESC, DENSE )

Detalhe: sempre DIVIDE em vez de /. Divisão por zero vira blank em vez de quebrar o dashboard.

5 · Montar visualizações respeitando hierarquia. Topo: 4 cards (KPIs). Centro: gráfico principal (vendas por ano). Lados: top gêneros, top plataformas. Rodapé: tabela detalhada com filtros cruzados.

Resultado

O painel final

O que dá pra levar daqui

Em uma linha: o que esse projeto ensina

Que BI bom começa fora do BI. Desenho do layout, modelo estrela e medidas DAX bem nomeadas — quando tudo isso já foi pensado, montar o dashboard demora 1 tarde. Sem isso, demora 1 semana e fica feio.

Coisas técnicas que apareceram aqui: Power Query M, modelagem dimensional (Kimball), DAX (medidas vs colunas calculadas), Time Intelligence (SAMEPERIODLASTYEAR), RANKX, DIVIDE seguro, design pré-implementação no Figma.