Skip to main content
Announcements
Qlik Community Office Hours, March 20th. Former Talend Community users, ask your questions live. SIGN UP
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Problema Mês Anterior + Mês Atual Default

Boa tarde Pessoal,

Eu fiz um painel para aparecer na televisão com abas rotativas automaticamente, mas estou com problema em uma das abas que contém um gráfico.

Preciso configurar o Set Analysis, para pegar o maior mês por default e também o mês anterior (claro considerando o ano, se for janeiro de 2016, deve pegar dezembro de 2015).

Eu fiz o seguinte.

Criei uma variável para v_mes_anteior com a sintaxe abaixo:

=if([Mes] = 'jan', 'dez', MONTH(DATE#(NUM([Mes]-1,'00'),'MM')))

A variável v_ano_anterior com a sintaxe:

=if([Mes] = 'jan', [Ano] - 1,[Ano])

Então na Expressão o seguinte:

=COUNT({$<[Ano] ={$(=v_ano_anterior)}, [Mes] ={$(=v_mes_anterior)}>} sup_aprovador)


Está funcionando quando eu seleciono o mês, mas não consigo fazer pegar o maior mês - 1 automaticamente.

Alguém poderia me ajudar?

Muito obrigado.

Abraços.

Labels (1)
1 Solution

Accepted Solutions
Not applicable
Author

Boa tarde Galera, consegui resolver aqui de uma forma aparentemente simples e que funcionou, compartilho com os amigos. Com uma gambiarra de adicionar 0 meses, mas quando tirei não funcionou. Desculpem as trapalhadas mas sou iniciante no mundo do QlikView,

Mês Anterior:

=COUNT({<Mes = {"$(=month(addmonths(Max(Dia),-1)))"},Ano={"$(=Year(addmonths(Max(Dia),-1)))"} ,Dia=>}sup_aprovador)

Mês Atual:

=COUNT({<Mes = {"$(=month(addmonths(Max(Dia),0)))"},Ano={"$(=Year(addmonths(Max(Dia),0)))"} ,Dia=>}sup_aprovador)

Porém não achei jeito de colocar o eixo de janeiro na frente do de dezembro, se alguém tiver uma dica.

Valeu abraços.

PS:Quem quiser o fonte, se for ajudar-los em algo, é só me pedir!

Sem título.png

View solution in original post

8 Replies
Anonymous
Not applicable
Author

Boa tarde,

Tentou utilizar o MIN(DATA) ou MAX(DATA)?

Not applicable
Author

Olá Jean,

Obrigado pela resposta.

Eu tentei usar assim COUNT({ $<Mes = {$(=Maxstring(Mes))}>} sup_aprovador), ele pega o ultimo mês mas não consigo fazer o mês anterior quando o maior mês é janeiro de 2016 por exemplo, já que o mês anterior tem que considerar o ano passado.

Atualmente está funcionando. Só não trás o último mês como default. Eu tenho que clicar no Ano.

Anonymous
Not applicable
Author

Tente colocar assim nas variáveis:

vAnoAnterior =Year(max(DATA))-1

vMêsAnterior =Month(max(DATA))-1

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Eduardo,

você poderia fazer


=COUNT({<DAT_EMISSAO={">=$(=vDtInicioAnt)<=$(=vDtFinalAnt)"} >} sup_aprovador)


sendo que as variaveis sao:


vDtInicioAnt = AddMonths( MakeDate(max(FNOT_DAT_ANO_EMISSAO) , max(FNOT_DAT_MES_EMISSAO)),-1)


vDtFinalAnt =MonthEnd( AddMonths( MakeDate(max(FNOT_DAT_ANO_EMISSAO) , max(FNOT_DAT_MES_EMISSAO)),-1))


2016-01-15 20_00_32.jpg

Mas ai teria que ter uma data para facilitar ao inves de usar ano e mes.....que da tambem....


vAnoAnt = year( AddMonths( MakeDate(max(FNOT_DAT_ANO_EMISSAO) , max(FNOT_DAT_MES_EMISSAO)),-1))


vMesant = month( AddMonths( MakeDate(max(FNOT_DAT_ANO_EMISSAO) , max(FNOT_DAT_MES_EMISSAO)),-1))


2016-01-15 20_03_18.jpg


=COUNT({$<[Ano] ={$(=vAnoAnt)}, [Mes] ={$(=vMesAnt)}>} sup_aprovador)



furtado@farolbi.com.br
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Coloquei a opção com datas, pois ai da para fazer trimestre, semestre, dois últimos meses, quinzena, etc.......

e como usa o addmonths() para somar ou diminuir os meses.

furtado@farolbi.com.br
Not applicable
Author

Sem título.pngPessoal,

Obrigado pela ajuda.

Alessandro entendi, mas não é sempre que quero fazer o ano e mês anterior, então creio que deva ter alguma condicional, não?

Pois se eu não seleciono um mês, por default ele traz o maior ano.

A sentença ficou conforme pode-se ver na imagem (01/11/2016), mas mesmo quando eu seleciono o mês desejado para comparação ele não conta os valores.. E o formato do meu campo "Dia" é DD/MM/YYYY, acho que estou fazendo algo errado. =/

Anonymous
Not applicable
Author

Bom dia, Eduardo

A variável pode ficar da seguinte maneira:

vMesAnterior:

=Date(AddMonths(Data, -1),'DD/MM/YYYY')

dessa forma o próprio QlikView se encarrega de editar as datas, por exemplo '18/01/2016',  vMesAnterior = '18/12/2015'

Not applicable
Author

Boa tarde Galera, consegui resolver aqui de uma forma aparentemente simples e que funcionou, compartilho com os amigos. Com uma gambiarra de adicionar 0 meses, mas quando tirei não funcionou. Desculpem as trapalhadas mas sou iniciante no mundo do QlikView,

Mês Anterior:

=COUNT({<Mes = {"$(=month(addmonths(Max(Dia),-1)))"},Ano={"$(=Year(addmonths(Max(Dia),-1)))"} ,Dia=>}sup_aprovador)

Mês Atual:

=COUNT({<Mes = {"$(=month(addmonths(Max(Dia),0)))"},Ano={"$(=Year(addmonths(Max(Dia),0)))"} ,Dia=>}sup_aprovador)

Porém não achei jeito de colocar o eixo de janeiro na frente do de dezembro, se alguém tiver uma dica.

Valeu abraços.

PS:Quem quiser o fonte, se for ajudar-los em algo, é só me pedir!

Sem título.png