Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only 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
mario_sergio_ti
Valued Contributor

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

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

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!

mario_sergio_ti
Valued Contributor

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.

pablolabbe
Valued Contributor II

Re: Registros da Linha Anterior

Ótimo exemplo mario.sergio.ti!

mario_sergio_ti
Valued Contributor

Re: Registros da Linha Anterior

Obrigado pelo apoio pablolabbe

Abraço.