Ir para conteúdo
  • 1

Qual função utilizar para fazer um rank de artilheiro e outro rank de goleiro com menos gols sofridos


Dyego Soares da Silva
Ir para solução Solucionado por Nelson Kobayashi ,

Pergunta

  • Membros

Boa noite Pesso!!!

Estou criando um dashboard e gostaria de mostrar em uma tabela (superior direito - anexo imagem) os jogadores com mais gols (artilheiro) e em outra tabela (inferior direito - anexo imagem) os goleros com menos gols sofridos

Porém estou com dificultado ao utilizar a função RANKX, quais outras funções posso usar?
 

image.png.68a87928c17162b754cad3ae48b512bd.png

Estou compartilhando "minha base" que montei no excel e o arquivo pbix com todas as informações já trabalhadas até o momento.

Alguém poderia me ajudar por favor? 😉



 

Copinha_2021 - Rev01.pbix Tabela_Copinha_2021.xlsx

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 1
  • Membros
  • Solução

Olá @Dyego Soares da Silva!

 

Vamos ao passo a passo:

 

Vamos criar uma tabela para fazer os testes e jogar nela os mesmos dados do seu modelo: Jogadores, Quantidade de Gols e a URL para aparece o símbolo dos times de futebol.

E já vamos clicar no cabeçalho da coluna dos gols marcados por jogador, para já alinharmos desde os maiores goleadores no topo da tabela e os menores pro final da tabela:

Já podemos ver que o Jeeh fez 20 gols, sendo o artilheiro do campeonato.

image.png.196a779f880b901141cfc458a3924382.png

 

A partir dessa formatação de tabela já é possível criar uma tabela de TOP 10 goleadores do campeonato, basta ir no menu de filtro lateral do Power BI e criar um filtro tipo N Superior:

image.png.42ee353b7e3a95a7a38bdf9f6d22ab26.png

Repare que agora a tabela de jogadores tem menos jogadores, porém são 13 jogadores e não 10 como era esperado ...

Porque isso acontece ?

A resposta para isso é que no final da lista, quando ela chega no grupo dos últimos  goleadores dessa lista de TOP 10, repare que há quatro jogadores que fizeram o mesmo número de gols (12 gols).

Então o Power BI não tem como decidir um critério de qual jogadores deveriam ficar de fora dessa lista TOP 10 dentre esses cinco jogadores que fizeram 12 gols ... então ele traz pra dentro da tabela todo o grupo, mesmo que passe do filtro de 10 jogadores.

Se nesse mesmo exemplo a gente definisse para TOP 3, essa lista terá cinco jogadores, pois há quatro jogadores que empataram com 18 gols.

 

Agora vamos criar uma coluna nessa tabela com o RANKING numérico para indicar o primeiro, o segundo e assim por diante:

Primeiro, vamos criar uma MEDIDA para fazer uma soma simples da quantidade de gols marcados:

image.png.6c2a8e4c205f4f18268ae9a618d3f5e4.png

 

Agora vamos fazer uma MEDIDA para criar um RANKING usando a função RANKX:

image.png.b1864fe771f72fcfee17cc5e833a165a.png

Onde:

RANKX é a função que fará uma avaliação Linha a Linha do conjunto de dados e irá criar uma numeração a partir de 1 até o último registro.

ALLEXCEPT é uma função usada nesse contexto da tabela que possui contexto de filtro com (Jogador / Soma de Gols / URL do Time). Aqui essa função diz para fazer um ranking da expressão [Qtde de gols] sem considerar a influência da coluna URL. Se não tivesse essa ALLEXCEPT aqui, a coluna de URL causaria uma confusão no ranking.

[Qtde de gols] é a soma dos gols. No contexto da tabela, é soma dos gols marcados por cada jogador por cada URL de time.

DESC é aonde escolhemos se o ranking começa a numerar pelo maior número de gols ou pelo menor número de gols (ordem crescente ou decrescente).

DENSE é o critério de tratamento de empate: Quando dois ou mais jogadores empatam com o mesmo número de gols, o Power BI pode tratar todos os jogadores empatados como uma única classificação ou pode tratar cada um dos empatados como um ranqueado , que seria a opção a opção SKIP, alternativa a DENSE.

 

Entretanto, neste modelo enviado pelo Dyego Soares gera dois erros inesperados e que não descobri porquê isso acontece:

No final da tabela, aplicando essa MEDIDA de RANK artilheiro, notei que surgiu um registro em branco:

image.png.b226122415348568be78a53a5b825e42.png

Eu vasculhei em toda a tabela e nos relacionamentos para tentar achar o motivo de aparecer esse “Jogador Fantasma” ...

Num primeiro momento, nesse contexto de TOP 10 artilheiros algumas pessoas podem achar esse erro irrelevante, já que esse “Jogador Fantasma” vai sumir quando a gente aplicar o filtro de TOP 10.

Mas esse fantasma pode incomodar em alguns cálculos ou em outros contextos de gráficos e tabelas, portanto pensei em fazer uma MEDIDA para sumir com esse fantasma através do DAX:

Fiz uma MEDIDA usando variáveis

 

image.png.bc22a2a8b40a1c6c5a9b49526eab3f65.png

A Variável C1 é a mesma medida de antes, RANKX.

A Variável C2 usando SELECTEDVALUE resulta no nome do Jogador selecionado na tabela

Finalmente a variável C3 diz que :

- SE encontrar na tabela um jogador sem nome (BLANK), resulte um RANK em branco (BLANK).

- SE encontrar na tabela quando não for BLANK, traga o RANKING calculado em C1.

 

Em outras palavras, calcule o RANKX somente onde houver um jogador que não seja fantasma... kkk

 

Agora podemos ver que o jogador fantasma sumiu:

image.png.daaab62aeff06262193e3afc26968af3.png

Finalizando a tabela, podemos filtrar só o TOP 10 selecionando essa tabela e criando o filtro através do filtro lateral

 

Obs.: Dá pra fazer esse TOP 10 de artilheiros através de MEDIDAS em DAX, mas acho que teria que fazer uma MEDIDA TOPN para cada contexto (coluna) da tabela ... uma para os jogadores, outra pra URL, outra pra Gols marcados e outra para o RANKX.

 

 

Agora vamos para o Ranking de Goleiros menos frangueiros:

 

Primeiro vamos criar uma MEDIDA para somar os gols sofridos:

image.png.503378ac5d2c488cbc40e7483f0229ad.png

 

E agora vamos criar uma MEDIDA para um ranking dos goleiros menos vazados:

A diferença entre essa MEDIDA e a outra para ranking dos artilheiros é que o contexto mudou um pouco, agora temos uma tabela com os contextos (colunas) de Nome do Goleiro / Total de Gols Sofridos / Nome do Clube e URL do emblema do time.

Aqui usamos ALL para os nomes dos goleiros, URL do time e o nome do clube.

E também tem a diferença no ASC, pois essa classificação é inversa dos artilheiros...

Em Artilheiros, quanto mais gols, melhor e em Goleiro, quanto MENOS gols, melhor.

 

image.png.1e5e02e334ee7473b05c9fe2576a06b7.png

Repare que aqui também temos o problema do “Jogador Fantasma”, só que aqui é pior pois o fantasma é o primeiro da lista.

Então usaremos o truque do IF para sumir com o fantasma na lista:

image.png.2dffb670e856083c74fbcbe1bac225c6.png

 

Só que aqui podemos reparar que o fantasma sumiu, mas o que deveria ser o primeiro goleiro menos vazado começa com o número 2... Pois apesar do fantasma ter sumido, ele ainda ocupa em algum lugar na fonte de dados a posição de Zero gols sofridos.

 

Para corrigir isso, fazemos um “ajuste técnico”, subtraindo 1 do ranking:

image.png.72cdccb92c19b0c9df31d8b1925d488c.png

Subtraindo 1 do ranking, o número 2 passa a ser número 1 e assim por diante...

IMPORTANTE: vale lembrar que, se conseguirmos detectar aonde está o problema que gera esses fantasmas, não será mais necessário fazer esses “ajustes técnicos”.

Só fiz isso porque o projeto não é meu, foi enviado pelo colega Dyego Soares portanto não tenho como acessar a base de dados e tentar descobrir se o problema está lá...

 

Mas fica o aprendizado para alguns ajustes técnicos que podemos usar em casos onde não podemos editar a fonte de dados.

 

Se algum colega conseguir descobrir a razão de aparecer esses fantasmas, pode postar aqui que será mais um ótimo aprendizado pra todos nós.

 

É isso aí!

 

Espero ter ajudado.

 

Se a resposta foi adequada, marque ela como “Melhor Resposta” e se puder dar uma avaliação positiva, ficarei mais motivado a ajudar os colegas aqui no fórum.

 

Segue aqui no anexo o arquivo PBIX com as medidas e os filtros ativados, arrumei a tabela de goleiros, parece que não é TOP 10 nesse caso, né? Também deixei as MEDIDAS sem gambiarras, caso conserte o problema dos jogadores fantasmas.

 

Abç.

 

 

 

 

 

 

1007231773_Copinha_2021-Rev01.pbix

  • Gostei 1
  • Obrigado(a) 1
Link para o comentário
Compartilhar em outros sites

  • 1
  • Membros

Olá @Dyego Soares da Silva!

Seria algo assim ?

image.thumb.png.c11859a18c098534a86d199ade1772ec.png

 

Eu tive duas dificuldades que não achei explicação, a primeira é que em todas as formas que eu calculei o RANKX sempre aparecia uma linha fantasma, com se houvesse um jogador ou goleiro a mais, sem nome e que contava dentro do rankx ... resolvi isso com um ajuste técnico usando IF, para tratar esse "fantasma" como BLANK.

Um "ajuste técnico" para resolver o problema ... realmente não sei porque esse "fantasma" aparece, não importa quantos ALLEXCEPT ou ALLSELECTED eu usasse.

Se alguém descobrir de onde vem esse fantasma, eu quero saber também, estou curioso.

A outra dificuldade que tive na solução foi aplicar o TOPN no DAX... Então usei a solução mais fácil de usar os filtros do menu lateral de filtros.

Se depois eu descobrir uma função DAX que resolva com o TOPN eu volto aqui e posto outro arquivo.

Segue o seu arquivo com a solução em anexo.

Se tiver interesse, posso fazer um passo a passo da solução aqui depois.

 

É isso !

Espero ter ajudado,

 

1007231773_Copinha_2021-Rev01.pbix

  • Obrigado(a) 1
Link para o comentário
Compartilhar em outros sites

  • 1
  • Membros
48 minutos atrás, Dyego Soares da Silva disse:

Fiquei com dúvida na segunda tabela de goleiros menos "vazados".  Porque os valores estão iguais? 

Olá @Dyego Soares da Silva!

Não está certo ?

image.png.642e58cd2abef8536196d999cac04877.png

Alguns goleiro não aparecem nessa tabela porque achei que fosse o TOP 10 goleiros menos frangueiros, então fiz um filtro de TOP 10 nessa tabela.

Mas você pode mudar isso na barra de filtro lateral.

Vou montar bonitinho o passo a passo.

Abç.

 

  • Obrigado(a) 1
Link para o comentário
Compartilhar em outros sites

  • 1
  • Membros

Olá @Dyego Soares da Silva!

Deu certo no seu projeto ? Conseguiu descobrir na base de dados alguma explicação do "jogador fantasma" ?

Se a resposta do passo a passo foi satisfatória e resolveu o problema, marque-a como "Melhor Resposta" pra facilitar os colegas que tiverem problema parecido com o seu.

Boa sorte nos seus projetos !

Abç.

  • Gostei 1
Link para o comentário
Compartilhar em outros sites

  • 1
  • Membros
3 horas atrás, Dyego Soares da Silva disse:

Sobre os horários, existem alguma função a qual eu posso deixa-los em ordem?

Olá @Dyego Soares da Silva!

Dá pra deixar em ordem sim.

Por sorte, a sua base de dados está bem organizada e analisando a tabela “Jogos”, percebemos uma das colunas chamada “Jogoid” que “coincidentemente” ao classificarmos a tabela por essa coluna, verificamos que todos os dados ficam exatamente em ordem de rodada, data e horário perfeitamente alinhados.

Provavelmente quem registrou todas essas informações já tinha intenção de ter esse alinhamento.

Se não tivesse essa coluna de “Jogoid” teríamos que dar um jeito de criar algo similar no Power Query.

Truque para classificar a tabela:

 

Pegamos a tabela de partidas e acrescentamos uma coluna usando a coluna “Jogoid” da tabela “Jogos”. Deixe essa coluna à direita da tabela.

Clique no cabeçalho da tabela, na coluna de Jogoid, para classificar em ordem crescente:

image.png.78446a25252b5fa37b121de18e1b2c12.png

 

O “ajuste técnico” aqui pra esconder a coluna de Jogoid é clicar na beirada da tabela e arrastar a beirada até a coluna desaparecer.

Para que essa coluna fique totalmente oculta, alinhe toda ela à direita, inclusive o cabeçalho e aumente um pouco a largura da coluna, para ter um espaço em branco um pouco maior e facilitar a ocultação dessa coluna.

image.png.bbaaa65b746e02b49db878570de2df26.png

 

Tentei trocar a cor da fonte para “transparente”, mas não deu certo porque o cabeçalho da tabela não aceita esse tipo de formatação, então o jeito é esconder mesmo.

É isso aí !

Espero ter ajudado.

  • Gostei 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Olá @Nelson Kobayashi, como vai?

Primeiramente, agradeço pelo seu suporte.

Sobre a tabela com o rank dos artilheiros eu compreendi, mas se você puder enviar o passo a passo eu agradeço também 🙂


Fiquei com dúvida na segunda tabela de goleiros menos "vazados".  Porque os valores estão iguais? 

E nela constam apenas 10 times, sendo que o total são 14 times.
image.png.5029e4f0a76fc32d5287ec234362f378.png

.

image.png.a9a6cd2d3a0e3a92bece8e6dc6d73ee6.png

Grato,
 

 




 

image.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

Olá @Nelson Kobayashi, tudo bem?

Desculpe me pelo equivoco, mas sobre minha dúvida da segunda tabela você tem razão. Ela esta certa! 

Eu não "sabia" que podia usar o filtro lateral para alterar. Com sua orientação eu comecei a mexer e em todos os campos do filtro e encontrei muitas oportunidades as quais não sabia rs. Grato Nelson!!!

Com relação ao passo a passo que você compartilhou, confesso que fiquei embasbacado com sua resposta. Gratidão mais uma vez Nelson, pela paciência e dedicação em ajudar o próximo 🙏.

Obs: Caso queiram acessar "minha base de dados" rs, o arquivo excel encontra-se em anexo na minha primeira pergunta rs.  Eu fiz uma coisa simples, apenas para 
praticar algumas funções, relacionamentos e etc no PB.
 

Aproveitando, @Nelson Kobayashi você poderia me ajudar em mais um ponto?

Na tabela de Partidade, existem as rodadas, dia, mês e horário.
image.png.eb5aff60a99d063555e99dce537052f9.png

Sobre os horários, existem alguma função a qual eu posso deixa-los em ordem?

image.png.a93575f291f3c90791b44a288f7335db.png       

Conforme o usuario for consultando as rodadas os horários se mantem fixo.

Abraço.

 

  • Gostei 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros
12 minutos atrás, Nelson Kobayashi disse:

Olá @Dyego Soares da Silva!

Deu certo no seu projeto ? Conseguiu descobrir na base de dados alguma explicação do "jogador fantasma" ?

Se a resposta do passo a passo foi satisfatória e resolveu o problema, marque-a como "Melhor Resposta" pra facilitar os colegas que tiverem problema parecido com o seu.

Boa sorte nos seus projetos !

Abç.

Boa tarde @Nelson Kobayashi, ainda estou tentando descobrir o porque desse "jogador fantasma". Não descobri ainda 😢

Sobre o passo a passo eu respondi e marqquei!!! obriagdo 😊🙏

Abç.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...