Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
mxell
Contributor III
Contributor III

Loop multiplicando valores de uma tabela

montei a tabela 

LOAD * INLINE [
cod_usuario, data, cod_evento
1, 01/01/2023, 50
1, 02/01/2023, 10
1, 03/01/2023, 10
1, 04/01/2023, 20
2, 01/01/2023, 10
2, 02/01/2023, 10
2, 03/01/2023, 10

]

 

 

Estou montando uma regra onde monto uma coluna contador, onde incrementa caso 'cod_usuario' e 'cod_evento' for igual ao anterior, seguindo em ordem a data.

Ou seja.

Precisa ficar assim:

cod_usuario, data, cod_evento, contador[

1, 01/01/2023, 50, 1
1, 02/01/2023, 10, 1
1, 03/01/2023, 10, 2
1, 04/01/2023, 20, 1
2, 01/01/2023, 10, 1
2, 02/01/2023, 10, 2
2, 03/01/2023, 10, 3

]

 

Meu script atualmente é:

 

let contador = 1;
FOR i = 1 to NoOfRows('dados_ord')-1
    LET evento_atual = Peek('cod_evento', i, 'dados_ord');
    LET data = peek('data', i, 'dados_ord');
    LET evento_anterior = Peek('cod_evento', i-1, 'dados_ord');
    LET usuario_atual = Peek('cod_usuario', i, 'dados_ord');
    LET usuario_anterior = Peek('cod_usuario', i-1, 'dados_ord');
    let linha = peek('lin', i, 'dados_ord');
    
    IF evento_atual = evento_anterior AND usuario_atual = usuario_anterior THEN
let contador = $(contador) + 1;
        
    ELSE
        LET contador = 1;
    ENDIF
    
    
    dados_ord_2:
    LOAD 
    $(usuario_atual) as usuario,
        $(evento_atual) as evento,
        $(contador) as contador,
        $(data) as dt
    Resident dados_ord    ;


NEXT

 
O que acontece é que está multiplicando todos os valores. No final leu 42 registros.
Vendo no debug, ele correu 7x, mas no load 42 registros.
 
Como resolver? Preciso salvar essa tabela resultante em um qvd.
 
Obrigado
 
 
 
 
Labels (1)
0 Replies