Qlik Community

Qlik Brasil

Announcements
Members are not receiving notifications from the community. A bug has been identified and a fix is coming soon.
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
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
Highlighted

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
Highlighted

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

Highlighted
Creator II
Creator II

Vlw Yuri, ajudou muito!

Highlighted

Show! 🙂