Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
lucascerq
New Contributor II

Função condicional de duas tabelas diferentes

Prezados,

Possuo duas tabelas, uma com informações relacionadas a manobras e outra relacionada a ocorrências, ambas possuem ligação através do campo "chave".

Preciso verificar se a "DATAOCORRENCIA" da base "Ocorrência" é maior ou igual a "[Data Início]" e menor ou igual "[Data Fim]" da base "Manobra". Por se tratar de duas tabelas diferentes o qlik não consegue localizar a [Data Início] e [Data Fim], gerando erro.

Como consigo fazer esta verificação?


if(DATAOCORRENCIA>=[Data Início] and DATAOCORRENCIA<=[Data Fim],'Sim','Não')

Manobra:

LOAD

Chave,

     [Atividade Antiga],

     [Atividade Nova],

     [Data Início],

     [Data Fim],

     [Data Inclusão],

     [Data Liberação],

     [Prefixo Trem],

     Pátio,

     [Pátio Destino],

     [Pátio Origem]

Ocorrência:

LOAD

Chave,

     PREFIXO,

     MAQUINISTA,

     MATRICULA,

     DATAOCORRENCIA,

     OCORRENCIA,

     PATIOORIGEM,

     PATIODESTINO,

     PATIOINICOCORRENCIA,

     PATIOFIMOCORRENCIA,

     Chave,

Tags (1)
1 Solution

Accepted Solutions
mario_sergio_ti
Valued Contributor

Re: Função condicional de duas tabelas diferentes

Lucas, segue uma sugestão:

Lembrando que é importante entender a cardinalidade e o propósito das tabelas para poder ajustar o Join...

Temp_Ocorrência_Manobra:

//Ocorrência

LOAD

     Chave,

     PREFIXO,

     MAQUINISTA,

     MATRICULA,

     DATAOCORRENCIA,

     OCORRENCIA,

     PATIOORIGEM,

     PATIODESTINO,

     PATIOINICOCORRENCIA,

     PATIOFIMOCORRENCIA

From [SUA_FONTE_DADOS.QVD](qvd);

Outer Join

//Manobra

LOAD

     Chave,

     [Atividade Antiga],

     [Atividade Nova],

     [Data Início],

     [Data Fim],

     [Data Inclusão],

     [Data Liberação],

     [Prefixo Trem],

     Pátio,

     [Pátio Destino],

     [Pátio Origem]

From [SUA_FONTE_DADOS.QVD](qvd);

NoConcatenate

Tab_Ocorrência_Manobra:

Load

     *,

     If(DATAOCORRENCIA>=[Data Início] and DATAOCORRENCIA<=[Data Fim],'Sim','Não') As 'Situação'

Resident Temp_Ocorrência_Manobra;

Drop Table Temp_Ocorrência_Manobra;

5 Replies
mario_sergio_ti
Valued Contributor

Re: Função condicional de duas tabelas diferentes

Lucas, segue uma sugestão:

Lembrando que é importante entender a cardinalidade e o propósito das tabelas para poder ajustar o Join...

Temp_Ocorrência_Manobra:

//Ocorrência

LOAD

     Chave,

     PREFIXO,

     MAQUINISTA,

     MATRICULA,

     DATAOCORRENCIA,

     OCORRENCIA,

     PATIOORIGEM,

     PATIODESTINO,

     PATIOINICOCORRENCIA,

     PATIOFIMOCORRENCIA

From [SUA_FONTE_DADOS.QVD](qvd);

Outer Join

//Manobra

LOAD

     Chave,

     [Atividade Antiga],

     [Atividade Nova],

     [Data Início],

     [Data Fim],

     [Data Inclusão],

     [Data Liberação],

     [Prefixo Trem],

     Pátio,

     [Pátio Destino],

     [Pátio Origem]

From [SUA_FONTE_DADOS.QVD](qvd);

NoConcatenate

Tab_Ocorrência_Manobra:

Load

     *,

     If(DATAOCORRENCIA>=[Data Início] and DATAOCORRENCIA<=[Data Fim],'Sim','Não') As 'Situação'

Resident Temp_Ocorrência_Manobra;

Drop Table Temp_Ocorrência_Manobra;

Employee
Employee

Re: Função condicional de duas tabelas diferentes

possivel solução

Mapa:

mapping load

Chave

     DATAOCORRENCIA

from seuqvd(qvd);

Manobra

LOAD

Chave,

     [Atividade Antiga],

     [Atividade Nova],

     [Data Início],

     [Data Fim],

     [Data Inclusão],

     [Data Liberação],

     [Prefixo Trem],

     Pátio,

     [Pátio Destino],

     [Pátio Origem],

    if(applymap('Mapa',Chave)>=[Data Início] and applymap('Mapa',Chave)<=[Data Fim],'Sim','Não') AS Flag

lucascerq
New Contributor II

Re: Função condicional de duas tabelas diferentes

Apresenta o seguinte erro:

Campo não encontrado - <Atividade Antiga>

Outer Join 

LOAD 

     Chave, 

     [Atividade Antiga], 

     [Atividade Nova], 

     [Data Início], 

     [Data Fim], 

     [Data Inclusão], 

     [Data Liberação], 

     [Prefixo Trem], 

     Pátio, 

     [Pátio Destino], 

     [Pátio Origem] 

FROM

(ooxml, embedded labels, table is [Ocorrências Freio Alívio])

lucascerq
New Contributor II

Re: Função condicional de duas tabelas diferentes

Funcionou com alguns detalhes.

Resultado final:

Manobra:

LOAD Chave,

     [Atividade Antiga],

     [Atividade Nova],

     [Cód. Atividade Antiga],

     [Cód. Atividade Nova],

     [Data Atualização],

     [Data Encerramento],

     [Data Início],

     [Data Inicial],

     [Data Fim],

     [Data Inclusão],

     [Data Liberação],

     Justificativa,

     [Prefixo Trem],

     Pátio,

     [Pátio Destino],

     [Pátio Origem]

FROM

(ooxml, embedded labels, table is [Manobra THP]);

Outer Join(Manobra)

Ocorrência:

LOAD LOCOMOTIVA,

     POSICAO,

     PREFIXO,

     MAQUINISTA,

     MATRICULA,

     DATAOCORRENCIA,

     [Data Ocorrência],

     OCORRENCIA,

     DIAMETRORODA,

     PATIOORIGEM,

     PATIODESTINO,

     PATIOINICOCORRENCIA,

     PATIOFIMOCORRENCIA,

     DESCRICAOUNIDADELOTACAO,

     DATAINICIOVIAGEMMAQUINISTA,

     DATAFIMVIAGEMMAQUINISTA,

     DATAPROCESSAMENTOCAIXAPRETA,

     EXIBICAOVALIDADA,

     EXIBICAOABONADA,

     MATRICULAINSPETOR,

     DESCRICAOJUSTIFICATIVAABONO,

     OBSERVACAOINSPETOR,

     Chave,

     Manobra?,

     [Data Inicial (Ocorrência)],

     [Data Final(Ocorrência)]

FROM

(ooxml, embedded labels, table is [Ocorrências Freio Alívio]);

NoConcatenate 

 

Manobra: 

Load 

     *, 

     If(DATAOCORRENCIA>=[Data Início] and DATAOCORRENCIA<=[Data Fim],'Sim','Não') As 'Situação' 

Resident Manobra; 

 

Drop Table Manobra; 

mario_sergio_ti
Valued Contributor

Re: Função condicional de duas tabelas diferentes

Lucas;

Utilizei os campos de exemplo do anunciado...

Mas é necessário certificar os campos existentes na base de dados de cada tabela de origem para ajustar.