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: 
oliveira1903
Contributor III
Contributor III

Id repetido com registros diferentes

Bom dia, pessoal.

Estou com um problema no meu modelo de dados, poderiam, por gentileza, me auxiliar em como resolvê-lo?

Id        Nº do Pedido        Data do Pedido           Data do Registro
1         3333                            05/06/2018                        08/06/2018
1         4444                            05/06/2018                        11/06/2019
2         5555                            02/03/2018                        03/03/2018
3         3322                            05/06/2018                       02/07/2018
3         4499                            10/07/2019                       10/07/2019


Possuo o mesmo ID para números de pedidos diferentes. A regra negocial seria: qnd tiver o msm id para números de pedidos diferentes, pegar o número de pedido com a data do pedido mais recente. Se a data de pedido for igual, pegar o nºo do processo pela data de cadastro mais recente.

Ideias?

 

Desde já, agradeço a participação dos colegas.

10 Replies
RafaMartins
Creator II
Creator II

Boa Tarde,

Só uma duvida, seus números de pedidos são sequenciais ou randômicos?

danilostochi
Creator II
Creator II

Veja se isso pode lhe atender.

dados:
LOAD * Inline [
Id, Pedido, DataPedido, DataRegistro
1, 3333, 05/06/2018, 08/06/2018
1, 4444, 05/06/2018, 11/06/2019
2, 5555, 02/03/2018, 03/03/2018
3, 3322, 05/06/2018, 02/07/2018
3, 4499, 10/07/2019, 10/07/2019
];

QUALIFY*;
UNQUALIFY;
dados2:
LOAD
FirstSortedValue(Id,Pedido) as Id,
FirstSortedValue(DataPedido,Pedido) as DataPedido,
FirstSortedValue(Pedido,Pedido) as Pedido,
FirstSortedValue(DataRegistro,DataRegistro) as DataRegistro
Resident dados Group by Id ;
UNQUALIFY*;

 

Screenshot_15.png

 

 

+55(44) 9 9993-3605, WhatsApp
E-Mail or Skype - danilo16stochi@hotmail.com
fernando_tonial
Partner - Specialist
Partner - Specialist

Alterando um pouco a solução do Danilo.

 

Dados1:
LOAD * Inline [
Id, Pedido, DataPedido, DataRegistro
1, 3333, 05/06/2018, 08/06/2018
1, 4444, 05/06/2018, 11/06/2019
2, 5555, 02/03/2018, 03/03/2018
3, 3322, 05/06/2018, 02/07/2018
3, 4499, 10/07/2019, 10/07/2019
];

Dados2:
LOAD
FirstSortedValue(Id,Pedido) as Id2,
FirstSortedValue(DataPedido,-DataRegistro) as DataPedido2,
FirstSortedValue(Pedido,-DataRegistro) as Pedido2,
FirstSortedValue(DataRegistro,-DataRegistro) as DataRegistro2
Resident Dados1 
Group by Id ;

 

Screenshot_1.png

 

Don't Worry, be Qlik.
oliveira1903
Contributor III
Contributor III
Author

Obrigada pelas respostas, pessoal.

 

Estou com um erro qnd carrego o script, acho que pode ter a ver com meus campos de data terem valores nulos e até mesmo alguns caracteres diferentes. =/

Teria como fazer uma regra onde escolho o nº do pedido de acordo com o id de número maior?

Exemplo:

ID 1 teria como nº do pedido o 4444.

RafaMartins
Creator II
Creator II

Boa tarde,

Se seu campo de Numero de pedido for sequencial, você pode criar uma medida com max(N pedido) e dimensionar pelo id, assim lhe trará o numero de pedido mais recente independente da data.Capturar.PNG

oliveira1903
Contributor III
Contributor III
Author

Legal..
Tentei colocar no script mas deu erro.

Dados1:
LOAD * Inline [
Id, Pedido, DataPedido, DataRegistro
1, 3333, 05/06/2018, 08/06/2018
1, 4444, 05/06/2018, 11/06/2019
2, 5555, 02/03/2018, 03/03/2018
3, 3322, 05/06/2018, 02/07/2018
3, 4499, 10/07/2019, 10/07/2019
];

Dados2:
LOAD
Id as Id2,
Max(Pedido) as Pedido2,
DataPedido as DtPed2,
DataRegistro as DtReg
Resident Dados1
Group by Id ;


O que estou fazendo de errado?

fernando_tonial
Partner - Specialist
Partner - Specialist

Agregação via script é necessário colocar os demais campos sem agregação do Group By.

Dados2:
LOAD
Id as Id2,
Max(Pedido) as Pedido2,
DataPedido as DtPed2,
DataRegistro as DtReg
Resident Dados1
Group by Id, DataPedido, DataRegistro ;

Don't Worry, be Qlik.
oliveira1903
Contributor III
Contributor III
Author

Desta forma o script rodou mas continuo tendo o problema de ter o msm ID para pedidos diferentes. Gostaria de ter UM id para UM nº de pedido. =/

Exemplo:
Id Nº do Pedido Data do Pedido Data do Registro
1 4444 05/06/2018 11/06/2019

O id 1 com nº de pedido 3333 não apareceria mais. Precisava resolver pelo script.

Fiz da seguinte forma:

Dados1:
LOAD * Inline [
Id, Pedido, DataPedido, DataRegistro
1, 3333, 05/06/2018, 08/06/2018
1, 4444, 05/06/2018, 11/06/2019
2, 5555, 02/03/2018, 03/03/2018
3, 3322, 05/06/2018, 02/07/2018
3, 4499, 10/07/2019, 10/07/2019
];

Dados2:
LOAD
Id as Id2,
Max(Pedido) as Pedido2
Resident Dados1
Group by Id ;

left join (dados2)

LOAD
Pedido as Pedido2,
DataPedido as DtPedido,
DataRegistro as DtRegistro
Resident Dados1;

Drop Table Dados1;

Parece que funcionou mas ainda estou efetuando testes na base.
Será que não tem uma melhor prática para resolver isso?
RafaMartins
Creator II
Creator II

Bom dia,

Se eu entendi direito você não quer mostrar apenas os pedidos mais recentes para cada id, certo?

você quer manter todos os registos e apenas diferenciar o numero do id?

Se for isso você pode reescrever o campo id como uma sequencia numérica usando RowNo,

 Teste:
Load*Inline
[
id,N pedido,data P,Data r
1,3333,05/06/2018,08/06/2018
1,4444,05/06/2018,11/06/2019
2,5555,02/03/2018,03/03/2018
3,3322,05/06/2018,02/07/2018
3,4499,10/07/2019,10/07/2019];
Store Teste into [lib://Teste/Teste.qvd] (qvd);
Drop Table Teste;
Load
RowNo() as id,
[N pedido],
[data P],
[Data r]
From [lib://Teste/Teste.qvd] (qvd);