Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
grazielegretter
Contributor III

Tabela com dados duplicados

Bom dia

Estou lendo um qvd que tem dados repetidos,  gostaria de saber como faço para eliminar os dados repetidos que seguisse o critério abaixo:

grazielegretter_2-1625755662743.png

Sempre que houvesse uma %ChaveParcela repetida, queria pegar a sequencia B e não a A. Só carregaria a sequencia A se não houvesse  %ChaveParcela repetida. 

Depois que ler quero gravar esse dados num qvd novo, com dados limpos.

 

1 Solution

Accepted Solutions
danilostochi
Creator II

Boa tarde,

De uma forma bem rápida creio que esse script possa lhe atender, entretando deve existe N maneiras de resolver essa questão.

 

dados:
LOAD ChaveOrdem,
ChaveParcela,
DataEntrega,
Sequencia
FROM
[C:\Users\Danilo\Downloads\Pasta de trabalho.xlsx]
(ooxml, embedded labels, table is Planilha1);

NoConcatenate
dados2:
LOAD * Resident dados;
inner join (dados2)
LOAD
count(ChaveParcela) as FlgRepedido,
ChaveParcela
Resident dados Group by ChaveParcela;
DROP Table dados;

dados3:
LOAD
ChaveOrdem,
ChaveParcela,
DataEntrega,
Sequencia,
if(FlgRepedido >1,'B',Sequencia) as SequenciaNova
Resident dados2; DROP Table dados2;

danilostochi_0-1625778886041.png

 

 

 

 

 

 

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

View solution in original post

5 Replies
Kushal_Chawda

Is the sequence column available in data? Is it Always A & B?

grazielegretter
Contributor III
Author

Sim, sempre será só A e B. Se houver chave duplicada trazer sempre o valor de B, senão o A deve vir também.

danilostochi
Creator II

Boa tarde,

De uma forma bem rápida creio que esse script possa lhe atender, entretando deve existe N maneiras de resolver essa questão.

 

dados:
LOAD ChaveOrdem,
ChaveParcela,
DataEntrega,
Sequencia
FROM
[C:\Users\Danilo\Downloads\Pasta de trabalho.xlsx]
(ooxml, embedded labels, table is Planilha1);

NoConcatenate
dados2:
LOAD * Resident dados;
inner join (dados2)
LOAD
count(ChaveParcela) as FlgRepedido,
ChaveParcela
Resident dados Group by ChaveParcela;
DROP Table dados;

dados3:
LOAD
ChaveOrdem,
ChaveParcela,
DataEntrega,
Sequencia,
if(FlgRepedido >1,'B',Sequencia) as SequenciaNova
Resident dados2; DROP Table dados2;

danilostochi_0-1625778886041.png

 

 

 

 

 

 

+55(44) 9 9993-3605, WhatsApp
E-Mail or Skype - danilo16stochi@hotmail.com
TiagoCardoso
Creator II

Graziele, boa tarde.

Acredito que observei um ponto que não citou, mas a sequência aumenta conforme a data, certo? Então seria correto afirmar que, com base na maior data da %ChaveParcela, eu deveria trazer a Sequencia?

De qualquer modo, elaborei duas soluções para você analisar e aplicar à tua necessidade.

Método 1:

FATO:
LOAD * INLINE [
%ChaveOrdemComrpa	%ChaveParcela	DataEntrega	Sequencia
2233	2233	12/02/2021	A
2233	2233	22/03/2021	B
2233	2233	22/03/2021	B
2244	2244	13/02/2021	A
2244	2244	20/02/2021	B
2244	2244	22/03/2021	C
2255	2255	20/03/2021	A
](delimiter is '\t');

INNER JOIN (FATO) LOAD
	%ChaveParcela										AS %ChaveParcela,
    FIRSTSORTEDVALUE(DISTINCT Sequencia,-DataEntrega)	AS Sequencia
RESIDENT FATO
GROUP BY 
	%ChaveParcela
;

 

Método 2:

TEMP:
LOAD * INLINE [
%ChaveOrdemComrpa	%ChaveParcela	DataEntrega	Sequencia
2233	2233	12/02/2021	A
2233	2233	22/03/2021	B
2233	2233	22/03/2021	B
2244	2244	13/02/2021	A
2244	2244	20/02/2021	B
2244	2244	22/03/2021	C
2255	2255	20/03/2021	A
](delimiter is '\t');

LEFT JOIN (TEMP) LOAD
	%ChaveParcela				AS %ChaveParcela,
    COUNT(%ChaveParcela)		AS Quantidade
RESIDENT TEMP
GROUP BY 
	%ChaveParcela
;

FATO:
LOAD
	%ChaveOrdemComrpa,
    %ChaveParcela,
    DataEntrega,
    Sequencia
RESIDENT TEMP
WHERE Quantidade = 1;

LOAD
	%ChaveOrdemComrpa,
    %ChaveParcela,
    DataEntrega,
    Sequencia
RESIDENT TEMP
WHERE Quantidade > 1 AND Sequencia = 'B';

DROP TABLE TEMP;

 

Resultado nos dois métodos:

TiagoCardoso_0-1625779460381.png

 

Estou anexando o QVF também, abs.

 

 

grazielegretter
Contributor III
Author

Boa tarde,

O que o Danilostochi  me ajudou muito e solucionou para o que eu precisava.

Muito obrigada pela contribuição de todos.