Ir para conteúdo
  • 0

Criação de Ranking


Ir para solução Solucionado por Erick Oliveira ,

Pergunta

  • Alunos
Postado (editado)

Pessoal, boa tarde. Preciso da ajuda de vocês.

Tenho uma base de dados com a eficiência da produção de um produto agrícola: geração de produto 1A, 3A e rendimento. Todos em percentuais.
No dashboard da página 2 a melhor média é a melhor média nas 3 medições: 1A = menor média, 3A e Rendimento = melhor média entre todos os produtores no período filtrado.
Na média (segunda linha) é a média do produtor selecionado no período filtrado.
e na terceira teria que ser o Ranking daquele produtor no período filtrado.

A base de dados está por dia de produção e a análise tem que ser por mês e ano. Estou usando a SUMMARIZE para consolidar a média do período e ADDCOLUMNS com RANKX para em cima dessa SUMMARIZE achar a posição do produtor.
Na média geral consegui fazer a SUMMARIZE que aceita os filtros externos. Mas no ranking estou apanhando na lógica. 

Alguém poderia fazer a caridade de me ajudar.? rssr

Produtividade Cópia.rar

Editado por Evaldo Ferreira Boaventura .
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
Postado (editado)

 

Ranking 1A = 

VAR GRUPO = SELECTEDVALUE(GRUPOS[NOME])

VAR TbResumida =
  CALCULATETABLE(
     SUMMARIZE(
         ('Base de Dados'), GRUPOS[NOME], "Média",average('Base de Dados'[1A])
        ),
     ALL(GRUPOS[NOME])
  )

VAR RankingCooperado =
     ADDCOLUMNS(
         TbResumida,"Ranking",RANKX(TbResumida,[Média],,DESC,Dense) 
        )


VAR PosicaoFinal = MAXX(FILTER(RankingCooperado,GRUPOS[NOME]=GRUPO),[Ranking])

RETURN
PosicaoFinal

 

Alterei apenas:

 

VAR TbResumida =
  CALCULATETABLE(
     SUMMARIZE(
         ('Base de Dados'), GRUPOS[NOME], "Média",average('Base de Dados'[1A])
        ),
     ALL(GRUPOS[NOME])
  )

 

Você está no caminho certo, fez a fórmula, fez o arquivo de exemplo, isso ajuda demais a ser ajudado.

Faltou apenas dizer o nome da medida que era para ser verificada. Tive que deduzir que seja a "Ranking 1A"

 

Editado por reinaldoc
  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos
12 horas atrás, reinaldoc disse:

 

Ranking 1A = 

VAR GRUPO = SELECTEDVALUE(GRUPOS[NOME])

VAR TbResumida =
  CALCULATETABLE(
     SUMMARIZE(
         ('Base de Dados'), GRUPOS[NOME], "Média",average('Base de Dados'[1A])
        ),
     ALL(GRUPOS[NOME])
  )

VAR RankingCooperado =
     ADDCOLUMNS(
         TbResumida,"Ranking",RANKX(TbResumida,[Média],,DESC,Dense) 
        )


VAR PosicaoFinal = MAXX(FILTER(RankingCooperado,GRUPOS[NOME]=GRUPO),[Ranking])

RETURN
PosicaoFinal

 

Alterei apenas:

 

VAR TbResumida =
  CALCULATETABLE(
     SUMMARIZE(
         ('Base de Dados'), GRUPOS[NOME], "Média",average('Base de Dados'[1A])
        ),
     ALL(GRUPOS[NOME])
  )

 

Você está no caminho certo, fez a fórmula, fez o arquivo de exemplo, isso ajuda demais a ser ajudado.

Faltou apenas dizer o nome da medida que era para ser verificada. Tive que deduzir que seja a "Ranking 1A"

 

Nossa, que experiência Incrível. vocês me ajudaram muito. Não tenho palavras para expressar minha gratidão.
o único problema que encontrei depois foi que o ALL do nome do Grupo leva para o filtro do Grupo todos os nomes e alguns não tiveram movimentação. 
Então entravam no ranking como os primeiros com valor zerado e não sei pq se vc selecionava no filtro ele aparecia com valor no final da medida.
 Daí mudei a fórmula para evitar isso para ele filtrar os movimentos <> de 0 e mandar verificar se o nome selecionado (sem movimento) estava na lista de nomes da tabela filtrada. A ajuda de vocês me ajudou a chegar nesse código. Não sei se pode ser 
Minha gratidão a vocês 

Ranking 1A =
 
VAR GrupoAtual = SELECTEDVALUE(GRUPOS[NOME])
 
VAR TabelaFiltrada =
    FILTER(
        ALL(GRUPOS[NOME]),
        CALCULATE(AVERAGE('Base de Dados'[1A])) <> 0
    )
 
RETURN
 
SWITCH(
    TRUE(),
    NOT CONTAINS(TabelaFiltrada, GRUPOS[NOME], GrupoAtual), 0,
    RANKX(
        TabelaFiltrada,
        CALCULATE(AVERAGE('Base de Dados'[1A])),
        ,
        ASC,
        DENSE
    )
)
 
Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...