Ir para conteúdo
  • 0

MOSTRAR POCIÇÃO NO RANKING DA CATEGORIA FILTRADA EM UM CARTÃO


Bruunotoleedo
Ir para solução Solucionado por Bruunotoleedo ,

Pergunta

  • Alunos
  • Solução

Boa noite Pessoal,

Gostaria de um help.

Queria mostrar em uma cartão qual o ranking do município que eu estou filtrando.

Teria 2 ranking's uma para mostrar a posição do município em relação ao estado e outro em relação ao brasil.

Ex: quando eu filtrar o estado ACRE e o município RIO BRANCO o cartão me mostraria a posição 2

image.thumb.png.dcc1f3813f85622367a37a6c83bd2080.png

Mas quando eu filtrasse apenas o município RIO BRANCO o cartão me mostraria a posição 1247

image.thumb.png.8aa785e66b161108d1e34e4a215b584d.png

Editado por Bruunotoleedo
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

Boa Noite @Bruunotoleedo

Veja se é isso que precisa

RANK CIDADES (faz o rank entre todas as cidades do Brasil)

Rank Cidade =
RANKX(
ALL(Tabela),[Valor Cidade],,ASC,Dense)


RANK PARA ESTADO (Faz o rank da cidade em relação ao estado)
 

RANK ESTADO =
 
Var UF= MAX(Tabela[UF])
 
Return
 
RANKX(
FILTER(
ALL(Tabela),Tabela[UF]=UF), [Valor Cidade],,DESC,Dense)

image.png.5dbbaf52a43b52d1ec63600703c50b7d.png

 

 

 

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

  • 0
  • Alunos

Seria isso mas em um card...

A função RANKX respeita o contexto de filtro como vc fez aí em sua solução, mas quando vc coloca isso em um card ele perde o contexto e a função te mostra sempre o número 1 por exemplo...

Eu conseguir resolver e irei postar a solução aqui nesse mesmo post para contribuir com a comunidade e ajudar os próximos com o mesmo contexto.

Usei a função CROSSJOIN, SUMMARIZE, RANKX e VALUES

Nível Estado:

Ranking Estado  =
 
VAR CROSS = CROSSJOIN(ALL(dEstado[Municipio]), ALLSELECTED(dCalendario))  --- JUNÇÃO DAS TABELAS PARA A REALIZAÇÃO DO RANKING ENTRE 2 OU MAIS TABELAS. CRIO ESSA JUNÇÃO PQ NECESSITO DO FILTRO DE QUADRIMESTRE  PARA SELECIONAR OS INDICADORES.
VAR TABELA_RANK = SUMMARIZE(dEstado, [Uf], [Municipio], "Nota", [ISF Desempenho], "Ranking", RANKX(CROSS, [ISF Desempenho])) --- CRIA UMA TABELA VIRTUAL COM O RANKING DOS ESTADOS
VAR SELECAO = VALUES(dEstado[Municipio]--- CRIA A SELEÇÃO DOS MUNICÍPIOS
 
RETURN
 
CALCULATE(SUMX(TABELA_RANK, [Ranking]), FILTER(CROSS, [Municipio] = SELECAO))

Nível Brasil:

Ranking Brasil =
VAR CROSS = CROSSJOIN(ALL(dEstado), ALLSELECTED(dCalendario)) --- JUNÇÃO DAS TABELAS PARA A REALIZAÇÃO DO RANKING ENTRE 2 OU MAIS TABELAS. CRIO ESSA JUNÇÃO PQ NECESSITO DO FILTRO DE QUADRIMESTRE  PARA SELECIONAR OS INDICADORES.
VAR TABELA_RANK = SUMMARIZE(dEstado, [Uf], [Municipio], "Nota", [ISF Desempenho], "Ranking", RANKX(CROSS, [ISF Desempenho])) --- CRIA UMA TABELA VIRTUAL COM O RANKING DOS ESTADOS
VAR SELECAO = VALUES(dEstado[Municipio]--- CRIA A SELEÇÃO DOS MUNICÍPIOS
 
RETURN
 
CALCULATE(SUMX(TABELA_RANK, [Ranking]), FILTER(CROSS, [Municipio] = SELECAO))

Essas funções me possibilitam mostrar o ranking de cada município ao filtra-lo como na imagem abaixo.

image.thumb.png.ef5acb0f85a0f0f32bb87e29400ddec8.png

Desenvolvi essa função com referencias do Power BI Experience do mestre @Leonardo Karpinski 

 

Editado por Bruunotoleedo
  • Like 2
  • Thanks 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

ALLSELECTED Nesse caso não funcionaria.

Para a encontrar a posição em relação a um estado ou ao Brasil nesse caso a função tem que percorrer a tabela inteira, se colocássemos o ALLSELECTED, a função respeitaria o contexto em que ela esta inserida.

Veja abaixo:

USANDO A FUNÇÃO ALLSELECTED:

Ranking Estado =
 
VAR CROSS = CROSSJOIN(ALLSELECTED(dEstado[Municipio]), ALLSELECTED(dCalendario))
VAR TABELA_RANK = SUMMARIZE(dEstado, [Uf], [Municipio], "Nota", [ISF Desempenho], "Ranking", RANKX(CROSS, [ISF Desempenho]))
VAR SELECAO = VALUES(dEstado[Municipio])
 
RETURN
 
IF(
AND(
SELECTEDVALUE(dEstado[Municipio]) = BLANK(),
SELECTEDVALUE(dEstado[Uf]) = BLANK()),
0,
IF(AND(
SELECTEDVALUE(dEstado[Municipio]) = BLANK(),
SELECTEDVALUE(dEstado[Uf]) <> BLANK()),
0,
CALCULATE(SUMX(TABELA_RANK, [Ranking]), FILTER(CROSS, [Municipio] = SELECAO))))

RESULTADO:

image.thumb.png.62a1e06268f2b1a263c00da0a0910044.png

USANDO A FUNÇÃO ALL:

Ranking Estado - IF Pagamento =
 
VAR CROSS = CROSSJOIN(ALL(dEstado[Municipio]), ALLSELECTED(dCalendario))
VAR TABELA_RANK = SUMMARIZE(dEstado, [Uf], [Municipio], "Nota", [ISF Desempenho], "Ranking", RANKX(CROSS, [ISF Desempenho]))
VAR SELECAO = VALUES(dEstado[Municipio])
 
RETURN
 
IF(
AND(
SELECTEDVALUE(dEstado[Municipio]) = BLANK(),
SELECTEDVALUE(dEstado[Uf]) = BLANK()),
0,
IF(AND(
SELECTEDVALUE(dEstado[Municipio]) = BLANK(),
SELECTEDVALUE(dEstado[Uf]) <> BLANK()),
0,
CALCULATE(SUMX(TABELA_RANK, [Ranking]), FILTER(CROSS, [Municipio] = SELECAO))))

RESULTADO:

image.thumb.png.9eaabbaacfc527e315021ce1104d6064.png

Usando a função ALL  será possível obter o ranking correto do município a nível estado e Brasil. Caso a gente use a função ALLSELECTED o ranking será sempre 1 pois a função respeitará o contexto aplicado.

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...