Ir para conteúdo
  • 0

Exibição dos últimos X meses em eixo x de acordo com parametrização.


Clóvis
Ir para solução Solucionado por Michele ,

Pergunta

  • Alunos

Bom dia incomparáveis, tudo bem?

Preciso de uma ajuda para exibir os últimos 3, 6, 9  ou 12  meses no eixo x de um gráfico de colunas mediante a escolha do usuário feita em um slicer, por exemplo através de parâmetros. O filtro de datas relativas não me ajuda porque tenho que ter no gráfico o mês atual e ao fazer isso o PBI reduz os dias analisados do primeiro mês plotado.

Obrigado!

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

22 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução

@Clóvis,

Fiz um teste rápido e não funcionou como eu esperava, não sei se eu que não soube fazer a medida. Aí fazendo esse teste me dei conta que daria para criar campos na Calendario que indiquem se aquele está nos último 3, 6, 9 ou 12 meses, então neste caso é possível fazer com a 1ª opção pensada.

Usei a contagem por dias, como você não quer ocultar o mês atual, mas neste caso são os últimos 3 meses mais o mês atual, é isso mesmo que você quer?

Segue arquivo com a simulação que fiz para 3 meses, se for algo neste sentido bastaria replicar para os demais meses que tu precisa.

image.thumb.png.15152672d5addaf6dc45455f4c78091b.png

Teste Eixo com apenas 3, 6, 9 e 12 últimos meses.pbix

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

  • 0
  • Alunos

Oi @Clóvis!

Infelizmente não consigo testar umas opções para ter ideias melhores, mas penso em duas formas, uma não tão "elegante" e outra melhor. Caso nenhuma te ajude se servir para dar alguma ideia já serve rs.

  • Opção com Tabela com as opções + Segmentador + Medida com resultado de outras medidas
    • Cria uma tabela com essas opções.
    • Inclui um Segmentador com o campo que possui essa opções.
    • Cria medidas que retornem dados apenas para esses períodos desejados.
    • Cria uma medida para usar no gráfico que teste qual opção está selecionada (SELECTDVALUE) e com base nisso traga a medida correspondente.
       
  • Opção Indicadores (menos "elegante" talvez):
    • Cria 4 gráficos, um com cada opção de tempo através da data relativa.
    • Cria os indicadores para mostrar cada visual e ocultar os demais.
    • Cria os botões para chamar cada indicador e o visual a ser mostrado.

Como disse não sei se são as melhores opções, mas foi o que me veio a mente agora.

Exemplo de algo parecido que precisei fazer essa semana, com o título também dinâmico, neste caso usei a 1ª opção que sugeri aqui:

image.png.3ada4a780ee2bd86e36d968a187c35ca.png

  • Like 2
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Oi @Michele

Primeiramente muito obrigado pela resposta. Sobre as soluções, a "menos elegante" não atende por conta do que mencionei sobre o filtro de data relativa. 

A outra opção é a que pretendo fazer, porém não faço ideia de como criar a tabela com a coluna do eixo contendo as opções de últimos 3,6,9 e 12 meses e se isso é realmente possível.

No teu print, pelo que percebi, você alterna as medidas e não o eixo.

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Oi @Clóvis!

Eu uso o eixo para pegar que valor a pessoa selecionou e com base nisso mostrar o resultado da medida que desejo. Vou colocar print do que fiz para ver se tá uma luz ok?

Na medida tu consegue tratar para ela trazer apenas dados para os últimos 3, 6, 9 e 12 meses não? É que to imaginando que sim, porque se a medida só tiver dados para essa faixa de período, então imagino que o eixo de data "entenderá" que deve mostrar apenas esses meses.

  • Tabela com uma única coluna com as opções:

image.png.85ef6f19c7864a9115fbd95c125600c7.png

  • Incluir o indicador no Segmentador

image.png.ec5690a94022e5d88ff7d3df59d2cf80.png

  • Medida
    • chamando outras medidas com base na opção selecionada no Segmentador;
    • OU joga os cálculos diretamente no resultado nessa mesma medida.

image.png.aaf6bfd198987c9fe09735cc6ae14df3.png

image.png

image.png

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

  • 0
  • Alunos

Olá @Michele boa tarde.
Usei a solução dada por você. Criei a coluna na tabela calendário. Isso me ajudou na plotagem de apenas uma categoria: Dos últimos 12 meses por exemplo, alternando com a utilização de indicadores. A questão, entretanto, de poder parametrizar entre 3, 6, 9 e 12 meses não é possível com esta solução ao meu ver.

Em todo caso, resolveu meu problema em grande parte. Muito obrigado novamente pela grande ajuda!

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Oi @Clóvis!

Então, no caso você precisaria criar uma coluna para cada faixa de período que deseja configurar, Ultimos 3 Meses, Ultimos 6 Meses, Ultimos 9 Meses e Ultimos 12 Meses.

Com isso você configura 4 visuais, cada um com a faixa desejada e configura os indicadores, apresentando cada visualização na ação de um botão, precisando de 4 botões neste caso.

Na minha cabeça funcionaria dessa forma, você tentou assim e não deu?

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Rodrigo R1

A Live responde exatamente minha necessidade com as medidas de contagem de chamados registrados e resolvidos, porém a medida de chamados em aberto (Backlog) não estou conseguindo êxito. Conseguirias ajudar neste ponto?

A medida basicamente é a seguinte:

Total Chamados em Aberto =
VAR vMaxDate = MAX(dCalendario[Date])
VAR vRegistradosALL = CALCULATE([Chamados Registrados CS-Cliente],ALL(dBranches[SQUAD]))
VAR vResolvidosALL = CALCULATE([Qtd Resolvidos USERELATIONSHIP],ALL(dBranches[SQUAD]))
VAR vEmAberto =
IF(vRegistradosALL > 0 || vResolvidosALL > 0,
    CALCULATE( [Chamados Registrados CS-Cliente] - [Qtd Resolvidos USERELATIONSHIP],
    FILTER(ALL(dCalendario),
    dCalendario[Date] <= vMaxDate
      )
    ),BLANK()
 )
 
RETURN vEmAberto
 
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa noite @Clóvis, tudo bem amigo?

Claro que te ajudo sim. Eu só preciso entender melhor o seu modelo e sua necessidade.

Pelo que eu entendi você está analisando chamados classificados em registrado, resolvido e em aberto.

Acredito que você deva ter uma coluna de data para os registrado (data do registro) e outra para data em que ele foi resolvido (data fim) - por isso deva precisar de um relacionamento inativo - para se chegar na quantidade dos resolvidos.

Penso que para encontrar os chamados em aberto, seriam aqueles chamados em que a data fim esteja "blank" ou em alguns casos, pode vir assim tbm: 31/12/9999.

E de fato para se encontrar os chamados em aberto é realizado dessa maneira que vc fez: o acumulado da diferença dessas 2 medidas.

Eu só não compreendi, por qual razão vc utilizou esse IF, no início da medida. Porque como é um acumulado, não existe a possibilidade de haver mais chamados resolvidos do que em aberto. O máximo que irá acontecer é "zerar" esse acumulado.

Sugiro retirar esse IF da sua medida e verificar o resultado.

Espero que tenha ajudado novamente.

Grande abraço, companheiro.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Opa amigo @Rodrigo R1.

Sim, já tenho todas as medidas (registrados, resolvidos e backlog(em aberto)) funcionando corretamente num contexto normal mas ao aplicar a solução da Live 72, apenas as medidas de registrados e resolvidos se comportam como esperado. A medida de backlog não bate com o backlog real(repito, ao aplicar a solução da live). Acredito que talvez isto deva-se ao fato desta medida já possuir um filter com all na dcalendario. Não sei como tratar isso.

Obrigado pela sua ajuda.

Editado por Clóvis
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Oi @Rodrigo R1

Usei as duas maneiras ensinadas por Léo mas não surtiu efeito desejado (Para esta medida específica). Quais foram as duas maneiras? Segue abaixo:

1. Calculando diretamente na medida como a seguir:

Backlog N meses =
 
VAR vNmeses = [NMeses Valor]
VAR vDataFiltro = MAX(dCalendario[Date])
 
VAR vUltimosNmeses =
DATESINPERIOD(dCalendarioAux[Date],
vDataFiltro,
-vNmeses,
MONTH
)
 
VAR vResultado =
CALCULATE( [Registrados N meses] - [Resolvidos N meses],
FILTER(
ALL(dCalendario),
dCalendario[Date] <= vDataFiltro
),
KEEPFILTERS(vUltimosNmeses),
USERELATIONSHIP(incidents[dataAbertura],dCalendarioAux[Date])
)
RETURN vResultado


2. Usando a medida original no visual do power bi e modificando-a através  do  Calculation groups criado no tabular Editor.
 



Medida Criada no Tabular Editor =
VAR vNmeses = 12
VAR vDataFiltro = MAX(dCalendario[Date])
 
VAR vUltimosNmeses =
DATESINPERIOD(dCalendarioAux[Date],
vDataFiltro,
-vNmeses,
MONTH
)
VAR vResultadoRegistrados =
CALCULATE(SELECTEDMEASURE(),
ALL(dCalendario),
KEEPFILTERS(vUltimosNmeses),
USERELATIONSHIP(incidents[dataAbertura],dCalendarioAux[Date])
)
 
VAR vResultadoResolvidos =
CALCULATE(SELECTEDMEASURE(),
ALL(dCalendario),
KEEPFILTERS(vUltimosNmeses),
USERELATIONSHIP(incidents[dataResolucao],dCalendarioAux[Date])
)
 
RETURN IF(
ISSELECTEDMEASURE ([Qtd Resolvidos USERELATIONSHIP]),
vResultadoResolvidos,
vResultadoRegistrados
)
 
RETURN IF(
ISSELECTEDMEASURE ([Qtd Resolvidos USERELATIONSHIP]),
vResultadoResolvidos,
vResultadoRegistrados
)
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Boa noite @Clóvis....

Ah sim, entendi como vc fez!

Mas veja que tem uma pequena diferença aí...rsrsrs

Sugiro vc não reescrever a medida original dentro da nova medida que vc irá utiliza-la no gráfico.

Parece que não faz sentido isso que estou dizendo, mas logo vc vai entender...rsrs....pq acho que ela acabou confundindo vc, quanto aos filtros que se fazem necessários na nova medida do gráfico.

Se vc perceber bem, vc reescreveu a medida original e esqueceu de incluir os novos filtros necessários para ela funcionar dentro do gráfico. Acho que isso pode ter confundido você, amigo. Por isso a minha sugestão de usar a medida criada anteriormente.

Portanto, a sua medida original está nomeada como: Total Chamados em Aberto - assim, coloque ela dentro da Calculate, conforme abaixo:

Backlog N meses =

 VAR vNmeses = [NMeses Valor]

VAR vDataFiltro = MAX(dCalendario[Date])

 VAR vUltimosNmeses =

DATESINPERIOD(dCalendarioAux[Date],

vDataFiltro,

-vNmeses,

MONTH

)

 VAR vResultado =

CALCULATE( [Total Chamados em Aberto],

ALL(dCalendario),

KEEPFILTERS(vUltimosNmeses),

USERELATIONSHIP(incidents[dataAbertura],dCalendarioAux[Date])

)

RETURN vResultado

 

Faça um teste por gentileza e veja se agora irá corrigir.

Grande abraço e sucesso meu amigo.

 

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Olá @Rodrigo R1, boa noite amigo!

Eu já tinha feito dessa forma que você sugeriu e também não dá certo , ou seja o backlog fica totalmente errado. Segue abaixo os resultados. Em verde são as medidas que deram certo e em vermelho, as que deram errado. Baklog N meses está fazendo os calculos novamente e Baklog N meses 2 está chamando diretamente a medida conforme sua última sugestão.

image.png.2af2f0817e90018890e018b02f9713f1.png

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Grande @Clóvis....

Está faltando um pequeno detalhe pra gente solucionar isso, meu amigo....rsrsrs...

Se puder compartilhar o PBIX ou uma base resumida ou fake pra eu testar aqui o comportamento dessa medida, talvez eu possa continuar tentando, amigo.

Aí vc manda tbm o resultado esperado pra eu ver se chego nele....rsrsrs

Abraço amigo.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Grande @Rodrigo R1 ...
Infelizmente o pbix é confidencial da empresa, mas a medida de "em aberto" é a padrão de muitos projetos. É o acumulado da diferença das entradas menos as saídas. Acho que para você replicar teria que repetir o cenário de criar nova tabela de calendário com as colunas de data e mês/ano conforme orientação de Léo na Live. 

Se não puder, amigo, sossega, já me ajudou demais e eu sou muito grato por isso.

Vejo que faltam apenas 2 para a sua placa dos 50. Estou na torcida!

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