Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
valerioms
Creator
Creator

Cálculo de tempo de alteração

Bom dia!

No arquivo em anexo tenho um campo chamado ETAPA e outro chamado DATA_ETAPA. Preciso saber como fazer para calcular o tempo de alteração quando a ETAPA muda. O cálculo será feito utilizando o campo DATA_ETAPA. A quem responder, obrigado.

1 Solution

Accepted Solutions
fernando_tonial
Partner - Specialist
Partner - Specialist

Olá, tenta assim:

TMP_DADOS:

LOAD NR_DOCUMENTO,

     STATUS,

     DATA_EMISSAO,

     PACS_EQUIPE_GESTORA,

     ETAPA,

     USUARIO,

     DATA_ETAPA

FROM

[Pasta1.xls]

(biff, embedded labels, table is [Plan1$]);

DADOS:

LOAD NR_DOCUMENTO,

     STATUS,

     DATA_EMISSAO,

     PACS_EQUIPE_GESTORA,

     ETAPA,

     USUARIO,

     DATA_ETAPA,

     If(NR_DOCUMENTO = Previous(NR_DOCUMENTO),DATA_ETAPA-Previous(DATA_ETAPA),Null()) As DuraçãoEtapa

Resident TMP_DADOS

Order by NR_DOCUMENTO, DATA_ETAPA;

DROP Table TMP_DADOS;

Depois na interface do usuário utilize a seguinte expressão:

Interval(DuraçãoEtapa)

Abraços.

Tonial.

Don't Worry, be Qlik.

View solution in original post

10 Replies
luizclaudio
Creator
Creator

Valério,

Ainda sou iniciante, mas encontrei algo que pode ser que te ajude...

http://community.qlik.com/message/316919#316919

Tem um rotina de cálculo de horas que voce pode adaptar para o que precisa.

Luiz Cláudio

valerioms
Creator
Creator
Author

Obrigado pela resposta Luiz Claudio mas não me atende. Eu preciso calcular o intervalo de tempo linha a linha sempre que o campo ETAPA muda.

Not applicable

Num(Year(Date1)) - Num(Year(Date2)) --> Diferença de anos

Num(Month(Date1)) - Num(Month(Date2)) --> Diferença de meses

Num(Week(Date1)) - Num(Week(Date2)) --> Diferença em semanas

Num(Date1) - Num(Date2)) --> Diferença em dias.

Alguma das funções acima te ajuda?

Not applicable

Bom dia,

Acredito que funções inter-registros resolvam seus problemas, pois vc precisa realizar uma operação do registro atual com o próximo.

Verifique no help do Qlikview sobre ABOVE(), BELOW(), BEFORE() e AFTER()

Assim que eu tiver um tempo posto um exemplo.

Abraços!!

valerioms
Creator
Creator
Author

Não Leonardo. Acho que não me fiz entender. kkkkkkkkk. Na verdade do campo DATA_ETAPA devo considerar apenas a hora. Por exemplo eu sai do campo ETAPA, do valor RS02 - Em Complementação que no campo DATA_ETAPA tem o valor

04/19/2013 17:29:39

e fui para o valor RS05 - Aguardando Execução do campo ETAPA que no campo DATA_ETAPA tem o valor

04/19/2013 17:40:37

. Se eu pegar o o último valor e diminuir do primeiro vou descobrir uma diferença de 0:10:58. Preciso fazer isto através de um script no qlikview. Sempre que o campo ETAPA mudar preciso pegar o valor dele no campo DATA_ETAPA e diminuir do campo anterior. É este cálculo que preciso.

fernando_tonial
Partner - Specialist
Partner - Specialist

Olá, tenta assim:

TMP_DADOS:

LOAD NR_DOCUMENTO,

     STATUS,

     DATA_EMISSAO,

     PACS_EQUIPE_GESTORA,

     ETAPA,

     USUARIO,

     DATA_ETAPA

FROM

[Pasta1.xls]

(biff, embedded labels, table is [Plan1$]);

DADOS:

LOAD NR_DOCUMENTO,

     STATUS,

     DATA_EMISSAO,

     PACS_EQUIPE_GESTORA,

     ETAPA,

     USUARIO,

     DATA_ETAPA,

     If(NR_DOCUMENTO = Previous(NR_DOCUMENTO),DATA_ETAPA-Previous(DATA_ETAPA),Null()) As DuraçãoEtapa

Resident TMP_DADOS

Order by NR_DOCUMENTO, DATA_ETAPA;

DROP Table TMP_DADOS;

Depois na interface do usuário utilize a seguinte expressão:

Interval(DuraçãoEtapa)

Abraços.

Tonial.

Don't Worry, be Qlik.
valerioms
Creator
Creator
Author

Fico no aguardo Eduardo. Obrigado.

luizclaudio
Creator
Creator

Acho que é isso que vc precisa...

=Interval(

          (RangeMin(frac(DATA_ETAPA), MakeTime(18))

          - RangeMax(frac(DATA_EMISSAO), MakeTime(8)))

          + (NetWorkDays(DATA_EMISSAO, DATA_ETAPA-1) * MakeTime(10)) // Only 10 hours per whole day

)

valerioms
Creator
Creator
Author

Deu certo. Obrigado Tonial.