Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Duvida sobre Calculo de SLA

Ola a todos,

estou com o seguinte problema, preciso calcular o tempo de atendimento de cada solicitação aberta, mas preciso apresentar isso em numero de horas (e/ou minutos), independente se houve mudança de dias. Segue os dados que tenho para realizar o calculo:

Data/hora da abertura da solicitação, (campo timestamp)

Data/hora da conclusão da solicitação (campo timestamp)

horário de inicio de atendimento (campo time)

horário de fim de atendimento (campo time)


Exemplo:


Data/hora abertura - 07/05/2015 11:01:00

Data/hora conclusão - 13/05/2015 11:47:00

horário início de atendimento: 8:30

horário fim de atendimento: 18:30

Apenas dias de semana

Preciso saber o tempo em horas e minutos da abertura da solicitação a conclusão, só que contando apenas o horário de atendimento (das 8:30 as 18:30) e se não posso contar também feriados.

ou seja, no caso de exemplo deveria dar 40h 46m de atendimento.

É possível resolver esse problema sem mexer no script?

Agradeço a ajuda.

15 Replies
nicolett_yuri

Daniel, faça o cálculo utilizando a funçao Interval.

Exemplo: Interval(DataFim-DataInicio, 'hh:mm')

Not applicable
Author

eu tentei fazer isso Yuri, de algumas formas até, mas ele em retorna o tempo como se fosse de um dia pro outro, e não considerando todos os dias.

nicolett_yuri

Então você precisa calcular a hora útil em relação a essa abertura, correto?

O QlikView não possui nenhuma função para isso, você vai ter que fazer na marra (ifs).

Eu tenho um exemplo antigo que fiz isso, mas preciso encontrar

Not applicable
Author

eu consegui chegar ao calculo de horas levando em conta o horário de inicio e o de fim de atendimento:

time(interval(time((interval('18:30' - time(SLA_inicio,'ddmmyyy hh:mm'))))) -

(time(interval('8:30' - time(SLA_conclusao,'ddmmyyy hh:mm:ss')))), 'hh:mm')

mas não consegui resolver o problema da passagem de dias.

tentei fazer de outra forma, contando o numero de dias decorrido e multiplicando pelo numero de horas de atendimento no dia (no caso 10h), mas na hora de converter para somar as outras horas eu não consegui também.

(day(SLA_conclusao) - day(SLA_Sinicio))*10

aqui chego ao valor de 40, mas não consigo converter corretamente em horas para somar a expressão anterior, quando eu converto ele me retorna 16h00 ao invés de 40h00.

nicolett_yuri

Daniel, já encontrei o meu código.

Irei fazer um post de blog sobre o assunto e disponibilizo aqui para você.

Not applicable
Author

Que ótimo Yuri! Muito obrigado pela atenção e fico no aguardo do post então

nicolett_yuri

É um código bem antigo, não deve estar seguindo as melhores práticas, mas quem sabe eu não aproveito o momento para melhora-lo. De qualquer maneira irei postar exatamente o que tenho

Not applicable
Author

de qualquer forma vou deixar aqui o progresso que tive.

consegui chegar a visualizar o tempo entre um e outro em horas, o que era o meu primeiro problema. E foi relativamente simples:

interval(time(SLA.dt_realizado, 'dd/mm/yyyy') - time(SLA.dt_inicio, 'dd/mm/yyyy'))

agora meu problema esta em encaixar a parametrização de horário de começo e fim de expediente e tirar os dias de fim de semana.

nicolett_yuri

Daniel, já escrevi o Post e irei publica-lo amanha.

Assim que publicar coloco o link aqui para você