Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
Ribeiro
Specialist
Specialist

Diferença entre datas e horas (Data Chegada e Saída de Veículos)

No estacionamento Tem Placa, Date de Saída e Chegada.

O que preciso é calcular o tempo de cada carro conforme a tabela abaixo:

Exemplo:

Placa = 'LSP1241',Type(Chegado) ('11/01/2019 13:58:44', 'DD/MM/YYYY hh:mm:ss') - Placa = 'LSP1241',Type(Saindo) ('11/01/2019 14:32:53' ,'DD/MM/YYYY hh:mm:ss')

Como seria o Set Analysis ou Script correto?
PlacaDateType
LSP124111/01/2019 13:58:44Chegando
LSP124111/01/2019 14:32:53Saindo
LVO737611/01/2019 15:26:28Chegando
LVO737611/01/2019 15:51:20Saindo
NHV844211/01/2019 12:31:31Chegando
NHV844211/01/2019 13:44:56Saindo
NIC674711/01/2019 10:20:43Chegando
NIC674711/01/2019 10:27:35
Neves
1 Solution

Accepted Solutions
mbrenzan
Contributor III
Contributor III

Boa tarde @Ribeiro.

Veja se te atende no anexo.

Fiz da seguinte maneira: Criei duas tabelas temporárias sendo uma com Entradas outra com Saídas e usei como chave a Placa. Dropei a tabela original e juntei as duas temporárias numa só, criando na mesma linha a Placa, Data e Hora de entrada e Data e Hora de Saída. Depois criei uma temporária para calcular a diferença entre Saída e Entrada, chamei de Tempo e adicionei na tabela principal.

 

TABELA:
LOAD * INLINE [
    Placa, Date, Type
    LSP1241, 11/01/2019 13:58:44, Chegando
    LSP1241, 11/01/2019 14:32:53, Saindo
    LVO7376, 11/01/2019 15:26:28, Chegando
    LVO7376, 11/01/2019 15:51:20, Saindo
    NHV8442, 11/01/2019 12:31:31, Chegando
    NHV8442, 11/01/2019 13:44:56, Saindo
    NIC6747, 11/01/2019 10:20:43, Chegando
    NIC6747, 11/01/2019 10:27:35, Saindo
];

ENTRADA:
LOAD Placa,
	 Date		AS DATA_ENTRADA	 
RESIDENT TABELA
WHERE Type = 'Chegando';

SAIDA:
LOAD Placa,
	 Date		AS DATA_SAIDA	
RESIDENT TABELA
WHERE Type = 'Saindo';
DROP TABLE TABELA;

LEFT JOIN(ENTRADA)
LOAD Placa,
	 DATA_SAIDA
RESIDENT SAIDA;
DROP TABLE SAIDA;
RENAME TABLE ENTRADA TO TABELA; 

TEMP:
LOAD Placa,
	 Interval(DATA_SAIDA-DATA_ENTRADA)		AS TEMPO
RESIDENT TABELA;

LEFT JOIN(TABELA)
LOAD Placa,
	 TEMPO
RESIDENT TEMP;
DROP TABLE TEMP; 

 

Coordenador de BI - Hospital Santa Casa de Maringá

View solution in original post

2 Replies
mbrenzan
Contributor III
Contributor III

Boa tarde @Ribeiro.

Veja se te atende no anexo.

Fiz da seguinte maneira: Criei duas tabelas temporárias sendo uma com Entradas outra com Saídas e usei como chave a Placa. Dropei a tabela original e juntei as duas temporárias numa só, criando na mesma linha a Placa, Data e Hora de entrada e Data e Hora de Saída. Depois criei uma temporária para calcular a diferença entre Saída e Entrada, chamei de Tempo e adicionei na tabela principal.

 

TABELA:
LOAD * INLINE [
    Placa, Date, Type
    LSP1241, 11/01/2019 13:58:44, Chegando
    LSP1241, 11/01/2019 14:32:53, Saindo
    LVO7376, 11/01/2019 15:26:28, Chegando
    LVO7376, 11/01/2019 15:51:20, Saindo
    NHV8442, 11/01/2019 12:31:31, Chegando
    NHV8442, 11/01/2019 13:44:56, Saindo
    NIC6747, 11/01/2019 10:20:43, Chegando
    NIC6747, 11/01/2019 10:27:35, Saindo
];

ENTRADA:
LOAD Placa,
	 Date		AS DATA_ENTRADA	 
RESIDENT TABELA
WHERE Type = 'Chegando';

SAIDA:
LOAD Placa,
	 Date		AS DATA_SAIDA	
RESIDENT TABELA
WHERE Type = 'Saindo';
DROP TABLE TABELA;

LEFT JOIN(ENTRADA)
LOAD Placa,
	 DATA_SAIDA
RESIDENT SAIDA;
DROP TABLE SAIDA;
RENAME TABLE ENTRADA TO TABELA; 

TEMP:
LOAD Placa,
	 Interval(DATA_SAIDA-DATA_ENTRADA)		AS TEMPO
RESIDENT TABELA;

LEFT JOIN(TABELA)
LOAD Placa,
	 TEMPO
RESIDENT TEMP;
DROP TABLE TEMP; 

 

Coordenador de BI - Hospital Santa Casa de Maringá
Ribeiro
Specialist
Specialist
Author

ObrigadoSmiley Very Happy

Show!

Mbrenzan

Neves