Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
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_

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_

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_

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_

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