Qlik Community

Qlik Brasil

Welcome to the group for Brazil users. .All discussions will be in Portuguese.

Highlighted
talesdejesus
New Contributor III

Registros da Linha Anterior

Boa Tarde,

Estou com uma dificuldade de pegar registros anteriores ou entre períodos de dados.

Ex :

Tenho uma Tabela com

Data                    Evidencia

01/01/2017          1

01/02/2017          0

01/03/2017          1

01/04/2017          0

01/05/2017          0

01/06/2017          0

Preciso fazer que depois que a coluna evidencia completa 2 registros 1 a partir de mês seguinte conte como 1 tbm

ficaria assim

Data                    Evidencia

01/01/2017          1

01/02/2017          0

01/03/2017          1

01/04/2017          1

01/05/2017          1

01/06/2017          1

.

.

.

01/12/2017          1

Podem me ajudar?

Muito Obrigado!

Tags (1)
1 Solution

Accepted Solutions
Partner
Partner

Re: Registros da Linha Anterior

Amigo, segue;

Tab_Dados: //Dados de Exemplo (Alterar para a sua fonte de dados)

Load * Inline [

Data,Evidencia

01/01/2017,1

01/02/2017,0

01/03/2017,1

01/04/2017,0

01/05/2017,0

01/06/2017,0

];

Tab_Temp:   

Load

    Data,

    RangeSum(Evidencia,Peek(QtdEvidencia)) As 'QtdEvidencia' //Acumula valor de Evidencia

Resident Tab_Dados;

Tab_Temp2:

Load

     FirstSortedValue(Data,If(QtdEvidencia=2,Data)) As 'UltDtEvidencia' //Posição da Data para Evidencia=2

Resident Tab_Temp;

LET vUltDtEvidencia = Peek('UltDtEvidencia');

Tab_Resultado:

NoConcatenate

Load

     Data,

     If(Data>='$(vUltDtEvidencia)',1,Evidencia) As 'Evidencia'

Resident Tab_Dados;

Drop Tables Tab_Dados,Tab_Temp,Tab_Temp2;

7 Replies
Partner
Partner

Re: Registros da Linha Anterior

Amigo, segue;

Tab_Dados: //Dados de Exemplo (Alterar para a sua fonte de dados)

Load * Inline [

Data,Evidencia

01/01/2017,1

01/02/2017,0

01/03/2017,1

01/04/2017,0

01/05/2017,0

01/06/2017,0

];

Tab_Temp:   

Load

    Data,

    RangeSum(Evidencia,Peek(QtdEvidencia)) As 'QtdEvidencia' //Acumula valor de Evidencia

Resident Tab_Dados;

Tab_Temp2:

Load

     FirstSortedValue(Data,If(QtdEvidencia=2,Data)) As 'UltDtEvidencia' //Posição da Data para Evidencia=2

Resident Tab_Temp;

LET vUltDtEvidencia = Peek('UltDtEvidencia');

Tab_Resultado:

NoConcatenate

Load

     Data,

     If(Data>='$(vUltDtEvidencia)',1,Evidencia) As 'Evidencia'

Resident Tab_Dados;

Drop Tables Tab_Dados,Tab_Temp,Tab_Temp2;

thiago_justen
Valued Contributor III

Re: Registros da Linha Anterior

Excelente solução mario.sergio.ti

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
Partner
Partner

Re: Registros da Linha Anterior

Valeu thiago.justen

Abraço.

talesdejesus
New Contributor III

Re: Registros da Linha Anterior

Obrigado Mario, ainda não testei a solução. Fiz de outra maneira via set analysis, mas vou testar como você fez. Obrigado pela sua resposta. Abraço!

Partner
Partner

Re: Registros da Linha Anterior

Blz...

Lembre-se, o que puder manter de lógica em Script de carga, é melhor... Simplificando as expressões na aplicação final. E muitas vezes economizando recursos de Hardware.

Luminary
Luminary

Re: Registros da Linha Anterior

Ótimo exemplo mario.sergio.ti!

Partner
Partner

Re: Registros da Linha Anterior

Obrigado pelo apoio pablolabbe

Abraço.