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

  • Membros
  • 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
  • Membros

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

 

 

 

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

  • 0
  • Membros

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
  • Gostei 2
  • Obrigado(a) 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Membros

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

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