Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
rafael_limeira
Contributor III
Contributor III

Primeiro Registro

Pessoal,

Saberiam me dizer se tem como pegar somente o primeiro registro de uma tabela no script, exemplo:

Cliente ID          Controle

100                     0101101

100                     0101102

200                     0201101

200                     0201102

Seguindo o exemplo acima precisaria dos itens 0101101 para o Cliente 100 e 0201101 para o Cliente 200. Saberiam me dizer se há esta possibilidade?

Abraço,

Rafael

1 Solution

Accepted Solutions
rphpacheco
Creator III
Creator III

Hum... entendi.

Tem uma outra opção.

Teste:

LOAD * Inline [

Cliente ID, Controle

100, 0101101

100, 0101102

200, 0201101

200, 0201102

];

Inicial:

LOAD

  RecNo() as Sequencial,

  [Cliente ID],

  Controle

Resident Teste;

DROP Table Teste;

Final:

LOAD

  '1' as x,

  [Cliente ID],

  Min(Controle) as Controle,

  Min(Sequencial) as Sequencial

Resident Inicial

Group By

  [Cliente ID];

DROP Table Inicial;

DROP Field x From Final;

Perceba que eu continuo usando o Min() no Controle, mas se for telefone e esse valor for igual para o cliente você pode usar a função Only() no lugar.

Abs

View solution in original post

8 Replies
joao_sp_campina
Creator II
Creator II

Boa tarde Rafael,

Tem como sim. Primeiro você deve entender qual o padrão das cargas e registros nesta tabela. No seu exemplo postado pelo que percebi os registros seguem uma ordem numérica, certo?

No exemplo 01, 02 e assim por diante.

Basta você filtrar na tabela de Clientes apenas os com final de controle 01, caso não seja necessário os demais registros. Assim você deve carregar apenas os registros 01, que significaria o primeiro registro.

Att,

      João Carlos Ferreira.

rafael_limeira
Contributor III
Contributor III
Author

João,

Obrigado pelo retorno, contudo, o exemplo que dei foi apenas esporádico. A base que eu preciso não um lógica, já que são telefones de Clientes. A ideia seria verificar se existe alguma fórmula que faça a leitura e agregação aos determinados clientes através do primeiro número localizado.

Abraço,

Rafael

rphpacheco
Creator III
Creator III

Boa tarde Rafael. Veja se este exemplo lhe atende. Basicamente estou agrupando o valor do Cliente ID e pegando apenas o valor mínimo de controle.

Abs.

rafael_limeira
Contributor III
Contributor III
Author

Rapha, boa tarde!

Infelizmente não tenho como abrir qvw. Poderia adicionar o script no corpo da mensagem?

Abraço,

Rafael

rphpacheco
Creator III
Creator III

Claro.

Bom, o script é in line, por isso tive que fazer dois loads. Mas depois você ajusta a sua realidade:

Teste:

LOAD * Inline [

Cliente ID, Controle

100, 0101101

100, 0101102

200, 0201101

200, 0201102

];

Final:

LOAD

  [Cliente ID],

  Min(Controle) as Controle

Resident Teste

Group By

  [Cliente ID];

DROP Table Teste;

DROP Field x From Final;

rafael_limeira
Contributor III
Contributor III
Author

Opa, obrigado!

Mas pelo que entendi você pegou o menor dado. Contudo, como aplicação real estou analisando número de telefones, ou seja, nem sempre o menor número será o primeiro registro.

Da maneira acima eu conseguiria contornar esta situação ou seria necessário outra ação?

Abraço!

Rafael

rphpacheco
Creator III
Creator III

Hum... entendi.

Tem uma outra opção.

Teste:

LOAD * Inline [

Cliente ID, Controle

100, 0101101

100, 0101102

200, 0201101

200, 0201102

];

Inicial:

LOAD

  RecNo() as Sequencial,

  [Cliente ID],

  Controle

Resident Teste;

DROP Table Teste;

Final:

LOAD

  '1' as x,

  [Cliente ID],

  Min(Controle) as Controle,

  Min(Sequencial) as Sequencial

Resident Inicial

Group By

  [Cliente ID];

DROP Table Inicial;

DROP Field x From Final;

Perceba que eu continuo usando o Min() no Controle, mas se for telefone e esse valor for igual para o cliente você pode usar a função Only() no lugar.

Abs

Clever_Anjos
Employee
Employee

Já conseguiu a resposta? Se sim, escolha uma e marque como "Correta" para fechar o tópico e nos ajudar a manter a comunidade organizada

Have fun, be Qlik