Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Want to see what's currently in public preview? We've pulled it all together in one place. Check it out here
cancel
Showing results for 
Search instead for 
Did you mean: 
brunoducatti
Creator
Creator

Ajuda com Set Analysis

Pessoal, tenho uma tabela de vendas com um campo de data no formato: MM/YYYY.

Este campo está nomeado como "anomes" e tenho um campo "receita" na mesma tabela.

Eu preciso que conforme o filtro aplicado em "anomes", seja feito um comparativo da receita do período acumulado do ano até o "anomes" selecionado" e o mesmo período do ano anterior.

Ex: Se aplicar o filtro 11/2017, preciso que calcule o acumulado de 2017 até o mês 11 e outra coluna que compare o acumulado de 2016 até o mês 11.

Tentei algumas sintaxes com Set Analysis mas não consegui fazer.

Labels (2)
1 Solution

Accepted Solutions
Thiago_Justen_
MVP
MVP

Vamos lá Bruno.

Para fazer o somatório conforme o filtro realizado:

Sum({<ANOMES={">=$(=Date(Date#(YearStart(Date(Date#(GetFieldSelections(ANOMES),'mm/yyyy'),'mm/yyyy')),'dd/mm/yyyy'),'mm/yyyy'))<=$(=GetFieldSelections(ANOMES))"}>}RECEITA)

Comparativo do mesmo período no ano anterior:

Sum({<ANOMES={">=$(=Date(Date#(AddYears(YearStart(Date(Date#(GetFieldSelections(ANOMES),'mm/yyyy'),'dd/mm/yyyy')),-1),'dd/mm/yyyy'),'mm/yyyy'))<=$(=Date(Date#(AddMonths(Date(Date#(AddYears(Date(Date#(GetFieldSelections(ANOMES),'mm/yyyy'),'dd/mm/yyyy'),-1),'dd/mm/yyyy'),'mm/yyyy'),1),'dd/mm/yyyy'),'mm/yyyy'))"}>}RECEITA)


Por que tanta formatação??

R:Estou usando o GetFieldSelections, que retorna string. Daí a necessidade de formatar o campo.


Teste minhas fórmulas com o script abaixo:

TABELA:

LOAD

*,

    Date(Date#(DATA,'dd/mm/yyyy'),'mm/yyyy') as ANOMES;

LOAD * INLINE [

     DATA,RECEITA

    01/01/2018,100

    01/02/2018,80

    01/01/2017,85

    01/02/2017,99

    01/01/2016,123,

    01/02/2016,130

];

Abs e Sucesso!!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago

View solution in original post

11 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Bruno

Sum({<anomes={">=$(=date(floor(YearStart(Max(anomes)))))<=$(=date(floor(MonthEnd(Max(anomes))))"}>} Receita)

coloquei o date(floor())   pois nao sei o conteudo do seu campo data (se é datetime)

senao poderia ser

Sum({<anomes={">=$(=YearStart(Max(anomes)))<=$(=MonthEnd(Max(anomes))"}>} Receita)

do ano passado

Sum({<anomes={">=$(=YearStart(max(anomes),-1)<=$(=MonthEnd(max(anomes),-12)"}>} Receita)

*** Não coloquei em um editor de script portanto pode ter algum erro de parêntesis ou algo do gênero...

furtado@farolbi.com.br
Thiago_Justen_
MVP
MVP

Vamos lá Bruno.

Para fazer o somatório conforme o filtro realizado:

Sum({<ANOMES={">=$(=Date(Date#(YearStart(Date(Date#(GetFieldSelections(ANOMES),'mm/yyyy'),'mm/yyyy')),'dd/mm/yyyy'),'mm/yyyy'))<=$(=GetFieldSelections(ANOMES))"}>}RECEITA)

Comparativo do mesmo período no ano anterior:

Sum({<ANOMES={">=$(=Date(Date#(AddYears(YearStart(Date(Date#(GetFieldSelections(ANOMES),'mm/yyyy'),'dd/mm/yyyy')),-1),'dd/mm/yyyy'),'mm/yyyy'))<=$(=Date(Date#(AddMonths(Date(Date#(AddYears(Date(Date#(GetFieldSelections(ANOMES),'mm/yyyy'),'dd/mm/yyyy'),-1),'dd/mm/yyyy'),'mm/yyyy'),1),'dd/mm/yyyy'),'mm/yyyy'))"}>}RECEITA)


Por que tanta formatação??

R:Estou usando o GetFieldSelections, que retorna string. Daí a necessidade de formatar o campo.


Teste minhas fórmulas com o script abaixo:

TABELA:

LOAD

*,

    Date(Date#(DATA,'dd/mm/yyyy'),'mm/yyyy') as ANOMES;

LOAD * INLINE [

     DATA,RECEITA

    01/01/2018,100

    01/02/2018,80

    01/01/2017,85

    01/02/2017,99

    01/01/2016,123,

    01/02/2016,130

];

Abs e Sucesso!!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
brunoducatti
Creator
Creator
Author

Boa tarde, obrigado pela ajuda.

A primeira fórmula funcionou perfeitamente, mas a segunda não.

Do ano anterior está retornando um número bem inferior ao que seria o real.

brunoducatti
Creator
Creator
Author

Só para complementar, o ano anterior está somando apenas os 2 primeiros meses (janeiro e fevereiro).

Abs.

brunoducatti
Creator
Creator
Author

oi Thiago, deixa eu explicar melhor.

Eu filtrei 10-2017.

A primeira expressão somou corretamente o período de 01-2017 até 10-2017.

A segunda expressão somou apenas 01-2016 e 02-2016 (os 2 primeiros meses).

Abs e obrigado.

Thiago_Justen_
MVP
MVP

Bruno,

Verifica assim por favor:

Sum({<anomes={">=$(=YearStart(AddYears(anomes,-1))<=$(=MonthEnd(max(anomes),-12)"}>} Receita) //Aproveitando a fórmula do Furtado.


Ou ainda:


Sum({<anomes={">=$(=YearStart(AddYears(anomes,-1))<=$(=MakeDate(Year(anomes)-1,Month(anomes),MothEnd(anomes)))"}>} Receita)

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
brunoducatti
Creator
Creator
Author

oi Thiago, tentei com as formulas do Furtado mas fica zerado, estava faltando parenteses mas mesmo assim não funcionou.

Não sei se tem relacionamento com a formatação da data.

A sua primeira funcionou perfeitamente, só a segunda que não somou todo o acumulado.

Thiago_Justen_
MVP
MVP

Então vamos trabalhar a segunda:

Sum({<ANOMES={">=$(=Date(Date#(AddYears(YearStart(Date(Date#(GetFieldSelections(ANOMES),'mm/yyyy'),'dd/mm/yyyy')),-1),'dd/mm/yyyy'),'mm/yyyy'))<=$(=Date(Date#(AddYears(Date(Date#(GetFieldSelections(ANOMES),'mm/yyyy'),'dd/mm/yyyy')),-1),'dd/mm/yyyy'),'mm/yyyy'))"}>}RECEITA)

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
brunoducatti
Creator
Creator
Author

Agora ele somou o valor total como se não tivesse nenhum filtro aplicado. Ficou a soma de todos os valores de todo o período.

Chato isso hein rs