Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
marciomgm
New Contributor III

Como saber o inicio e final das atividades realizadas dentro da jornada de trabalho

Fala galera Guru do QlikView

Veja se existe uma forma de resolver esse caso:

O funcionário possui uma jornada fixa de trabalho que inicia as 19:00 e encerra às 4:45

Tabela de atividades:

DTINICIO  - Inicio da atividade  formato 00/00/0000 00:00:00

DTFIM - Fim da atividade  formato 00/00/0000 00:00:00


Eu implementei o famoso recurso do calendário e funciona perfeitamente para seleções de atividades de mês, dia e ano


A questão do problema é: Como filtrar o funcionário e apenas (um único dia), exemplo, dia 30/10/2017 e o sistema retorna todas as atividades realizadas pelo funcionário considerando a jornada fixa de trabalho?

FUNCIONARIOINICIOFIM
MARCIO30/10/2017 19:30:0030/10/2017 19:40:00
MARCIO30/10/2017 19:55:0030/10/2017 20:30:00
MARCIO31/10/2017 03:30:0031/10/2017 04:15:00
MARCIO31/10/2017 21:30:0031/10/2017 22:30:00


Resultado esperado ao selecionarmos o dia: 30/10/2017


O funcionário iniciou a primeira atividade 30/10/2017 19:30:00 e terminou 31/10/2017 04:15:00


Repare que não podemos considerar o último registro (em vermelho) pois já se trata da Jornada de trabalho iniciada no dia 31


Obrigado!

Tags (1)
1 Reply
srchagas
Contributor III

Re: Como saber o inicio e final das atividades realizadas dentro da jornada de trabalho

E ai amigo tudo bom ?

Entao se teria algo para defirni o periodo dele ? pq se tiver implementa no Where  aqui que deve funcionar.

Uma coisa: Voce precisa fazer carga diaria para funcionar esse codigo e so melhorar o que  falta..segue modelo que fiz

DATA:

LOAD * INLINE [

    FUNCIONARIO, INICIO, FIM

    MARCIO, 30/10/2017 19:30:00, 30/10/2017 19:40:00

    MARCIO, 30/10/2017 19:55:00, 30/10/2017 20:30:00

    MARCIO, 31/10/2017 03:30:00, 31/10/2017 04:15:00

    MARCIO, 31/10/2017 21:30:00, 31/10/2017 22:30:00

    THIAGO, 30/10/2017 08:00:00, 30/10/2017 12:00:00

    THIAGO, 30/10/2017 13:00:00, 30/10/2017 18:00:00

    JOSE  , 30/10/2017 14:00:00, 30/10/2017 16:00:00

    JOSE  , 30/10/2017 17:00:00, 30/10/2017 20:00:00

];

TmpDadosTrabalhaMesmoDia:

NoConcatenate

LOAD

Min(INICIO) as DtInicioTrabalho,

FUNCIONARIO

Resident  DATA

Where INICIO >= '30/10/2017 06:00:00' and FIM <= '30/10/2017 20:00:00'

Group By FUNCIONARIO ;

Left Join

LOAD

Max(FIM) as DtFimTrabalho,

FUNCIONARIO

Resident  DATA

Where FIM >= '30/10/2017 06:00:00' and FIM <= '30/10/2017 20:00:00'

Group By FUNCIONARIO ;

TmpDadosViradaNoite:

NoConcatenate

LOAD

Min(INICIO) as DtInicioTrabalhoExtra,

FUNCIONARIO

Resident  DATA

Where INICIO >= '30/10/2017 19:00:00'

Group By FUNCIONARIO ;

Left Join

LOAD

Max(FIM) as DtFimTrabalhoExtra,

FUNCIONARIO

Resident  DATA

Where FIM >= '31/10/2017 00:00:00' and FIM <= '31/10/2017 06:00:00'

Group By FUNCIONARIO ;

Concatenate(TmpDadosTrabalhaMesmoDia)

LOAD

*

Resident TmpDadosViradaNoite;

DROP Table TmpDadosViradaNoite;

FatoHorasTrabalhadas:

NoConcatenate

LOAD

FUNCIONARIO,

DtInicioTrabalho,

DtFimTrabalho

Resident TmpDadosTrabalhaMesmoDia

Where Len(DtInicioTrabalhoExtra)  = 0

;

Concatenate(FatoHorasTrabalhadas)

LOAD

FUNCIONARIO,

DtInicioTrabalhoExtra as DtInicioTrabalho,

DtFimTrabalhoExtra as DtFimTrabalho

Resident TmpDadosTrabalhaMesmoDia

Where Len(DtInicioTrabalhoExtra)  > 0

;

DROP Table TmpDadosTrabalhaMesmoDia;

DROP Table DATA;