Skip to main content
Woohoo! Qlik Community has won “Best in Class Community” in the 2024 Khoros Kudos awards!
Announcements
Nov. 20th, Qlik Insider - Lakehouses: Driving the Future of Data & AI - PICK A SESSION
cancel
Showing results for 
Search instead for 
Did you mean: 
RafaMartins
Creator II
Creator II

Calculo agrupado em script

Boa tarde amigos, alguém poderia me dizer uma forma de criar um campo no script que siga o mesmo intuito dessa expressão

=aggr(
if(Sum({<Data={">=$(=Date(Today()-150)) <= $(=Today())"}>} TotalLiquido) = '0','5M',
if(Sum({<Data={">=$(=Date(Today()-120)) <= $(=Today())"}>} TotalLiquido) = '0','4M',
if(Sum({<Data={">=$(=Date(Today()-90)) <= $(=Today())"}>} TotalLiquido) = '0','3M',
if(Sum({<Data={">=$(=Date(Today()-60)) <= $(=Today())"}>} TotalLiquido) = '0','2M',
if(Sum({<Data={">=$(=Date(Today()-30)) <= $(=Today())"}>} TotalLiquido) = '0','1M'))))),[Grupo-Cliente])

Seria uma curva de inatividade, se alguém souber uma forma de criar algo nesse sentido dentro do script eu agradeço. 

1 Solution

Accepted Solutions
nicolett_yuri

Opa, é possível sim. Você terá que fazer algumas substituições de função, pois AGGR e Set Analysis não funcionam no script.

 

No lugar do AGGR, você terá que usar o recurso de GROUP BY da tabela

No lugar do Set Analysis, você terá que usar IF

 

Basicamente você precisa ter uma tabela, no seu modelo, que possua as três colunas utilizadas no cálculo: Data, TotalLiquido e Grupo-Cliente

 

Primeiro passo é fazer um Somatório da coluna TotalLiquido por Grupo-Cliente, por exemplo:

 

[TabelaAgrupada]:

LOAD

Data,

Grupo-Cliente,

SUM( TotalLiquido) as TotalLiquido

RESIDENT Tabela

GROUP BY Data, Grupo-Cliente;

 

Depois, em outro passo de RESIDENT, faça o IF que precisa:

 

LOAD

Data,

Grupo-Cliente,

TotalLiquido,

if( Data >= Date(Today()-150)) and Data <= Today() and TotalLiquido = 0, '5M',

if( Data >= Date(Today()-120)) and Data <= Today() and TotalLiquido = 0, '4M',

if( Data >= Date(Today()-90)) and Data <= Today() and TotalLiquido = 0, '3M',

if( Data >= Date(Today()-60)) and Data <= Today() and TotalLiquido = 0, '2M',

if( Data >= Date(Today()-30)) and Data <= Today() and TotalLiquido = 0, '1M'

))))) as [NovoCampo]

RESIDENT TabelaAgrupada;

 

DROP TABLE TableAgrupada;

 

View solution in original post

3 Replies
nicolett_yuri

Opa, é possível sim. Você terá que fazer algumas substituições de função, pois AGGR e Set Analysis não funcionam no script.

 

No lugar do AGGR, você terá que usar o recurso de GROUP BY da tabela

No lugar do Set Analysis, você terá que usar IF

 

Basicamente você precisa ter uma tabela, no seu modelo, que possua as três colunas utilizadas no cálculo: Data, TotalLiquido e Grupo-Cliente

 

Primeiro passo é fazer um Somatório da coluna TotalLiquido por Grupo-Cliente, por exemplo:

 

[TabelaAgrupada]:

LOAD

Data,

Grupo-Cliente,

SUM( TotalLiquido) as TotalLiquido

RESIDENT Tabela

GROUP BY Data, Grupo-Cliente;

 

Depois, em outro passo de RESIDENT, faça o IF que precisa:

 

LOAD

Data,

Grupo-Cliente,

TotalLiquido,

if( Data >= Date(Today()-150)) and Data <= Today() and TotalLiquido = 0, '5M',

if( Data >= Date(Today()-120)) and Data <= Today() and TotalLiquido = 0, '4M',

if( Data >= Date(Today()-90)) and Data <= Today() and TotalLiquido = 0, '3M',

if( Data >= Date(Today()-60)) and Data <= Today() and TotalLiquido = 0, '2M',

if( Data >= Date(Today()-30)) and Data <= Today() and TotalLiquido = 0, '1M'

))))) as [NovoCampo]

RESIDENT TabelaAgrupada;

 

DROP TABLE TableAgrupada;

 

RafaMartins
Creator II
Creator II
Author

Vlw Yuri, ajudou muito!

nicolett_yuri

Show! 🙂