1 Reply Latest reply: Oct 31, 2017 4:29 AM by Thiago das Chagas cunha RSS

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

    Marcio Morais

      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!

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

          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;