Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
mercadante
Creator
Creator

Utilização do While

Srs. Bom dia!

Alguém pode me ajudar com a função While?

Vou fazer uma carga onde tenho os campos numero do contrato e numero do ponto

Para um numero do contrato eu posso ter um ou mais numero do ponto

Preciso criar um terceiro campo que vai ser tipo um contador iniciado em 0 e agrupado por contrato,

Então um contrato com duas linhas preciso ter um campo qualquer com uma linha 0 e uma linha 1 e assim por diante.

Acredito que com While é possível fazer, mas não tenho afinidade com a utilização do mesmo.

Alguém pode me ajudar com o entendimento ou com algum exemplo.

Obrigado.

1 Solution

Accepted Solutions
felipe_dutra
Partner - Creator
Partner - Creator

Boa tarde, Antônio!

Pelo que entendi, não será necessário usar While.

O código abaixo vai contar as linhas de cada NUMERO_CONTRATO, começando do zero, ordenado pelo campo NUMERO_PONTO:

[DOCUMENT_LINES]:

LOAD

  NUMERO_CONTRATO,

  NUMERO_PONTO,

  'BO' AS IDENTIFICADOR,

  If(NUMERO_CONTRATO = Peek(NUMERO_CONTRATO), Peek(LINENUM)+1, 0) as LINENUM

RESIDENT BASE

Order By

  NUMERO_CONTRATO asc,

  NUMERO_PONTO asc

;

Resultado:

NUMERO_CONTRATO NUMERO_PONTO LINENUM
43320
5820
5861
100500
10330
10351
10372
10490

Abs,

Felipe

View solution in original post

6 Replies
robert_mika
Master III
Master III

Você poderia postar seu código?

mercadante
Creator
Creator
Author

Minha duvida é justamente em como criar esse código.

Este é o Load

[DOCUMENT_LINES]:

LOAD

  NUMERO_CONTRATO

  NUMERO_PONTO

  'BO'     AS IDENTIFICADOR

LINENUM // Aqui precisa ser um contator iniciando em Zero

RESIDENT

  BASE;

Anonymous
Not applicable

Antonio

Tenho um código de exemplo que percorre uma tabela:

FOR X = 0 to FieldValueCount('Caminho')-1;

  LET vCaminho  = Peek('Caminho', $(X), 'Lista de Caminho');

  LET vArquivo  = Peek('Arquivo', $(X), 'Lista de Caminho');

  LET vAmbiente = Peek('Ambiente',$(X), 'Lista de Caminho');

  IF Len('$(vCaminho)') > 1 then

       ->ADD SEU LOAD AQUI <-

  ENDIF

NEXT X;

Essa não é a solução, más talvez seja o caminho das pedras.

Atenciosamente,

Tiago Ferrucio

felipe_dutra
Partner - Creator
Partner - Creator

Boa tarde, Antônio!

Pelo que entendi, não será necessário usar While.

O código abaixo vai contar as linhas de cada NUMERO_CONTRATO, começando do zero, ordenado pelo campo NUMERO_PONTO:

[DOCUMENT_LINES]:

LOAD

  NUMERO_CONTRATO,

  NUMERO_PONTO,

  'BO' AS IDENTIFICADOR,

  If(NUMERO_CONTRATO = Peek(NUMERO_CONTRATO), Peek(LINENUM)+1, 0) as LINENUM

RESIDENT BASE

Order By

  NUMERO_CONTRATO asc,

  NUMERO_PONTO asc

;

Resultado:

NUMERO_CONTRATO NUMERO_PONTO LINENUM
43320
5820
5861
100500
10330
10351
10372
10490

Abs,

Felipe

mercadante
Creator
Creator
Author

Felipe,

Simples assim ?

E eu estava pensando num código gigante com While......

Funcionou exatamente do jeito que eu precisava.

Muito Obrigado pela ajuda!

Atte.

Mercadante

gilbertomedeiro
Contributor III
Contributor III

Olá Felipe,

sei que já se passou algum tempo da sua resposta, mas encontrei-a nesse momento e gostaria de deixar registrado que me ajudou muito também!!

Att.

Gilberto