Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
hvantoni
Contributor II
Contributor II

Promedio acumulativo de tiempos y como convertir una fecha en SS a DD HH:MM:SS

Genero expedientes digitales, cada expediente tiene varias fases, cada fase tiene una fecha/hora de inicio y una fecha/hora de fin de fase. Necesito calcular 1.- la duración total de un expediente en DD hh:mm:ss, 2,- necesito hallar el promedio de tiempo de tos los expedientes. 3.- Hallar el promedio por fases de expediente del mismo tipo. 

hvantoni_0-1682941334747.png

he utilizado las siguientes medidas:

interval(FECHA_FIN_ACTIV-FECHA_INI_ACTIV, 'ss')  como dif_en_seg

Div(NUM#(dif_en_seg),86400) como dif_en_dias

fmod(NUM#(dif_en_seg),86400) como dif_dias_resto

He intentado pero no me funciona

Floor(dif_en_seg / 86400) & 'd ' & Time(Mod(dif_en_seg, 86400), 'hh:mm:ss')

tampoco se como acumular el total del tiempo de todos los expedientes para luego hallar su promedio

algo  parecido a esto Avg(Sum(Interval(FECHA_INI_ACTIV, FECHA_FIN_ACTIV))) over () 

 

Labels (1)
2 Replies
PadmaPriya
Support
Support

Hi @hvantoni 

Date() formats an expression as a date using the format set in the system variables in the load script, or the operating system, or a format string, if supplied.

 

Syntax:  

Date(number[, format])

 

Example:

date(datefield,'DD/MM/YYYY')

or

date(date#(datefield,'current format'),'DD/MM/YYYY')

Or

Date#(Alt(Num(Date#(DATE, 'MM-DD-YYYY')), Num(Date#(DATE, 'MMM DD YYYY'))), 'DD/MM/YYYY') as DATE

It is an example, so you may modify or change accordingly.

 

Thanks, Padma

Help users find answers! Don't forget to mark a solution that worked for you! If already marked, give it a thumbs up!
rubenmarin

Hola, a la expresión le faltaría dividir el tiempo del mod para pasarlo a segundos:

Floor(dif_en_seg / 86400) & 'd ' & Time(Mod(dif_en_seg, 86400) / 86400, 'hh:mm:ss')

Y para el avg se podría usar Aggr:

Avg(Aggr(Sum(Interval(FECHA_INI_ACTIV, FECHA_FIN_ACTIV)),NUMERO_EXPEDIENTE)

Otra opción sería añadir una tabla en el script relacionada con los expedientes que ya tenga calculado el tiempo en segundos, con lo que un simple avg() de este campo podría servir.