Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
brunoducatti
New Contributor III

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.

Tags (1)
1 Solution

Accepted Solutions
thiago_justen
Valued Contributor III

Re: Ajuda com Set Analysis

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
WhatsApp: 24 98152-1675
Skype: justen.thiago
11 Replies
MVP
MVP

Re: Ajuda com Set Analysis

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

thiago_justen
Valued Contributor III

Re: Ajuda com Set Analysis

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
WhatsApp: 24 98152-1675
Skype: justen.thiago
brunoducatti
New Contributor III

Re: Ajuda com Set Analysis

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
New Contributor III

Re: Ajuda com Set Analysis

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

Abs.

brunoducatti
New Contributor III

Re: Ajuda com Set Analysis

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
Valued Contributor III

Re: Ajuda com Set Analysis

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
WhatsApp: 24 98152-1675
Skype: justen.thiago
brunoducatti
New Contributor III

Re: Ajuda com Set Analysis

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
Valued Contributor III

Re: Ajuda com Set Analysis

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
WhatsApp: 24 98152-1675
Skype: justen.thiago
brunoducatti
New Contributor III

Re: Ajuda com Set Analysis

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