Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
luizbezerra
Contributor

Acumular valor até o mês atual selecionado

Srs, Boa noite !

Estou fazendo um gráfico , onde tenho valores de meses anteriores, que devem ser acumulados até Mês (Atual Selecionado)

Exemplo : Caso eu seleciono Novembro de 2015, ele acumula desde Janeiro /2015 até o Nov/2015, respeitando o Max(Ano).

Para a seguinte solução eu tenho o SetAnalisys:

=  if(Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'}, TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas)  <999        ,

  Num(Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'}, TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas)              ,'##0,00 un'),

  if(Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'}, TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas)  >=1000    and  Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'}, TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas)  <=999999,

  Num(Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'}, TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas)  /1000      ,'##0,00 mm'),

  if(Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'}, TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas)  >=1000000 and Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'},  TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas) <=999999999 ,

  Num(Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'}, TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas)  /1000000    ,'##0,00 mi'),

  if(Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'}, TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas)  >=1000000000 ,

  Num(Sum({<Ano = {'$(=Max(Ano))'} ,Mes= {'<=$(=Max(Mes))'}, TipoVendFat = {'VENDAS'} , Portfolio = {'VME','AMEX'} , Cenario = {'REALIZADO'}>}QtdVendas)  /1000000000 ,'##0,00 bi')))))

Quando eu incluo  Mes= {'<=$(=Max(Mes))'}, na expressão, não me retorna valor nenhum, gostaria de saber se posso passar outro parâmetro para ele resolver esta questão ?

Já naveguei na Community, porém não encontrei algo que fosse o mesmo problema, porém o assunto tratava do mesmo cenário de acumulado.


Desde já agradeço.

Luiz Fernando Bezerra
Tags (1)
5 Replies
rvsilvestre
Contributor III

Re: Acumular valor até o mês atual selecionado

Esse seu campo Mes esta em que formato?  provavelmente o formato que esta retornando seu max(Mes) seja diferente do seu campo Mes.

luizbezerra
Contributor

Re: Acumular valor até o mês atual selecionado

Rodrigo, Bom dia !

Estou anexando uma app de exemplo.

Não retorna valor quando dou um Max(Mes).

Mas na minha lista eu tenho o mesmo campo Mes

Obrigado pela ajuda

Luiz Fernando Bezerra
rvsilvestre
Contributor III

Re: Acumular valor até o mês atual selecionado

não ta retornando porque esse campo é uma string , não ta reconhecendo como data, veja assim:

=max(month(date#(Mes,'MMM')))

ainda assim o max retorna um valor numérico , pra vc usar no set analysis , teria que ser assim:

=maxstring(month(date#(Mes,'MMM')))

Mas eu vi ali que vc ja tem um campo MesNum, use esse campo no set analysis, é muito mais fácil. Eu só uso campos numéricos pra trabalhar com data nas expressões.

luizbezerra
Contributor

Re: Acumular valor até o mês atual selecionado

Rodrigo,

Neste caso aqui não funcionou.

Pra você funcionou na app ?

Luiz Fernando Bezerra
rvsilvestre
Contributor III

Re: Acumular valor até o mês atual selecionado

Sim,

é preciso que essa variável esteja definida assim no script:

SET MonthNames='jan;fev;mar;abr;mai;jun;jul;ago;set;out;nov;dez';

para o date#(mes, 'MMM') funcionar.

Veja a aplicação , eu fiz a mudança no script direto e usei a mesma expressão que vc postou aqui.

O que eu falei do max e maxtring na verdade esquece rsrs, da pra usar os 2 .