Qlik Community

Qlik Brasil

Announcements
BI & Data Trends 2021. Discover the top 10 trends emerging in today. Join us on Dec. 8th REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Contributor III
Contributor III

Excluir linha anterior se a próxima for um valor igual

Fala pessoa, tudo certo? Queria uma ajuda.

 

Eu tenho uma Tabela onde tenho um campo ID_ORCAMENTO,  MOTIVO, DATA_HORA

Quero que ele remova a linha anterior se o MOTIVO for igual a seu anterior.

 

Está assim (SERVIÇO FINALIZADO 2 vezes)

ID_ORCAMENTOMOTIVODATA_HORA
023545  
023545SERVIÇO AGENDADO05/02/2020 08:33:49
023545 SERVIÇO PENDENTE05/02/2020 14:11:36
023545SERVIÇO FINALIZADO06/02/2020 09:55:14
023545SERVIÇO FINALIZADO06/02/2020 10:46:33

 

 

Quero que fique assim (apenas o próximo SERVIÇO FINALIZADO)

ID_ORCAMENTOMOTIVODATA_HORA
023545  
023545SERVIÇO AGENDADO05/02/2020 08:33:49
023545 SERVIÇO PENDENTE05/02/2020 14:11:36
   
023545SERVIÇO FINALIZADO06/02/2020 10:46:33

 

Grato.

1 Solution

Accepted Solutions
Creator II
Creator II

Boa noite, acredito que isso lhe sirva:

T:
LOAD
	NUM(ID_ORCAMENTO)	AS ID_ORCAMENTO,
	TEXT(TRIM(MOTIVO))	AS MOTIVO,
	TIMESTAMP(DATA_HORA) AS DATA_HORA,	
;
LOAD * INLINE [
ID_ORCAMENTO	MOTIVO	DATA_HORA
023545	 	 
023545	SERVIÇO AGENDADO	05/02/2020 08:33:49
023545	SERVIÇO FINALIZADO	05/02/2020 08:33:49
023545	 SERVIÇO PENDENTE	05/02/2020 14:11:36
023545	SERVIÇO FINALIZADO	06/02/2020 09:55:14
023545	SERVIÇO FINALIZADO	06/02/2020 10:46:33

56789	SERVIÇO AGENDADO	05/02/2020 08:40:49
56789	SERVIÇO FINALIZADO	05/02/2020 08:50:49
56789	 SERVIÇO PENDENTE	05/02/2020 14:10:36
56789	SERVIÇO FINALIZADO	06/02/2020 09:59:14
56789	SERVIÇO FINALIZADO	06/02/2020 10:59:33
](delimiter is '\t');

NOCONCATENATE TAB:
LOAD
	*,
	IF(PREVIOUS(MOTIVO) = MOTIVO,
		IF(PREVIOUS(ID_ORCAMENTO)=ID_ORCAMENTO,1)) AS Verificador
Resident T 
	ORDER BY ID_ORCAMENTO, MOTIVO, DATA_HORA DESC;

NOCONCATENATE
FINAL:
LOAD ID_ORCAMENTO, MOTIVO, DATA_HORA
Resident TAB 
	WHERE Verificador <> 1
ORDER BY ID_ORCAMENTO, DATA_HORA;
	
	
DROP TABLE T, TAB;

Rode aos poucos e busque entender para aplicar ao seu modelo.

Tentei fazer pela interface mas não surtiu um resultado legal com a função FirstSortedValue()

View solution in original post

2 Replies
Creator II
Creator II

Boa noite, acredito que isso lhe sirva:

T:
LOAD
	NUM(ID_ORCAMENTO)	AS ID_ORCAMENTO,
	TEXT(TRIM(MOTIVO))	AS MOTIVO,
	TIMESTAMP(DATA_HORA) AS DATA_HORA,	
;
LOAD * INLINE [
ID_ORCAMENTO	MOTIVO	DATA_HORA
023545	 	 
023545	SERVIÇO AGENDADO	05/02/2020 08:33:49
023545	SERVIÇO FINALIZADO	05/02/2020 08:33:49
023545	 SERVIÇO PENDENTE	05/02/2020 14:11:36
023545	SERVIÇO FINALIZADO	06/02/2020 09:55:14
023545	SERVIÇO FINALIZADO	06/02/2020 10:46:33

56789	SERVIÇO AGENDADO	05/02/2020 08:40:49
56789	SERVIÇO FINALIZADO	05/02/2020 08:50:49
56789	 SERVIÇO PENDENTE	05/02/2020 14:10:36
56789	SERVIÇO FINALIZADO	06/02/2020 09:59:14
56789	SERVIÇO FINALIZADO	06/02/2020 10:59:33
](delimiter is '\t');

NOCONCATENATE TAB:
LOAD
	*,
	IF(PREVIOUS(MOTIVO) = MOTIVO,
		IF(PREVIOUS(ID_ORCAMENTO)=ID_ORCAMENTO,1)) AS Verificador
Resident T 
	ORDER BY ID_ORCAMENTO, MOTIVO, DATA_HORA DESC;

NOCONCATENATE
FINAL:
LOAD ID_ORCAMENTO, MOTIVO, DATA_HORA
Resident TAB 
	WHERE Verificador <> 1
ORDER BY ID_ORCAMENTO, DATA_HORA;
	
	
DROP TABLE T, TAB;

Rode aos poucos e busque entender para aplicar ao seu modelo.

Tentei fazer pela interface mas não surtiu um resultado legal com a função FirstSortedValue()

View solution in original post

Highlighted
Contributor III
Contributor III

Muito Obrigado, Tiago. td certo.

Abs.