Skip to main content
Announcements
Do More with Qlik - Qlik Cloud Analytics Recap and Getting Started, June 19: REGISTER
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Promedio de Horas

Hola Como estan?, soy nuevo en el mundo de qliksense, estoy tratando de realizar los siguiente:

la información  que tengo es la siguiente

:hORAS.png

y estoy necesitando calcular

- el promedio de horas de permanencia en una tienda,

- el tiempo promedio de espera entre turnos:

- y promedio de duracion de atencion de un turno.


Como tengo atendido y no atendidos, se que puedo utilizar para filtrar set analysis, pero realizar el cálculo se me complica.


Espero puedan ayudarme.

Abrazos.


Gracias.

Ariel

10 Replies
hector_munoz
Specialist
Specialist

Hola Ariel,

¿Puedes explicar con palabras qué información tiene cada campo y cómo serían los cálculos que necesitas para que te ayudemos con las expresiones?

Saludos,

H

Anonymous
Not applicable
Author

Hola Hector,

   Gracias por la respuesta, El tablero que estoy armando es para realizar el análisis de un servicio de turnero en una sucursal, donde:

Fecha_Turno:  Es la fecha-Hora en que se saco el turno.

Inicio_Turno: Es la fecha-hora en que se tomo dicho turno para su atencion.

Fin_Turno: es la fecha-hora en que termino el turno (se puede decir que es el momento que la persona dejo de ser atentida).

Atendido: marca si ese turno fue Atendido o No (ya que muchas veces se saca un turno y la persona se retira antes de que sea llamada).

Los calculos que tenfo que hacer son:

-promedio de horas de espera: Es el tiempo promedio que pasa entre que saco el turno (Fecha_Turno) hasta que fue atendido(Inicio_Turno)

- El tiempo promedio entre turnos: El promedio entre el inicio de un turno y el otro (utilizando el campo Inicio_Fecha que me indica cuanto tardo entre un turno y otro).

-Duracion de Atencion:  Cuanto duro el turno (Inicio_Fecha - Fin_Fecha)


Espero que no me haya olvidado de nada  y sirva esta explicacion.,.


Gracias nuevamente.


Saludos


Ariel

rubenmarin

Hola Ariel, para obtener diferencias entre fechas solo tienes que restar ambos campos, lo recomendable sería crearte campos calculados en el script con las diferencias para facilitar el cálculo de las expresiones, si todas las fechas están en la misma tabla sería algo así:

LOAD

  camposactuales,

  Inicio_Turno-Fecha_Turno as [Tiempo Espera],

  Fin_Turno-Inicio_Turno as [Tiempo Atención]

  If(Floor(Date(Inicio_Turno))=Peek(Floor(Date(Inicio_Turno))), Inicio_Turno-Peek(Inicio_Turno) as [Tiempo Turno]

From/Resident ...

Order by Inicio_Turno;



Y las expresiones:

-promedio de horas de espera: Avg([Tiempo Espera])

- El tiempo promedio entre turnos: Avg([Tiempo Turno])

-Duracion de Atencion:  Avg([Tiempo Atención])

Saludos.

Anonymous
Not applicable
Author

Hola Ruben,

    Muchas gracias por tu ayuda, el tiempo de espera y el promedio entre turnos me funcionaron bien, el que me trae informacion vacia es  el tiempo de Atencion: el load lo estoy haciendo de esta manera:

LOAD

    TUR_ID,

    PUE_ID,

    DIS_ID,

    TURNO,

    FECHA_TURNO,

    HORA,

    INICIO_TURNO,

    FIN_TURNO,

    INICIO_TURNO-FECHA_TURNO as [Tiempo Espera],

    FIN_TURNO    -  INICIO_TURNO as [Tiempo Atención],

    If(Floor(Date(INICIO_TURNO))=Peek(Floor(Date(INICIO_TURNO))), INICIO_TURNO-Peek(INICIO_TURNO)) as [Tiempo Turno], 

    USU_ID,

    ATENDIDO,

    ID_SUCURSAL

FROM [lib://QVD FILES TURNERO/F_TURNO.QVD]

(qvd);

Muchisimas gracias.

Ariel

rubenmarin

Hola Ariel, podrías comprobar en la vista previa del "Visor del modelo de datos", o creando una tabla, cual es el valor devuelto para algunas filas, y si la operación coincide con el INICIO_TURNO y FIN_TURNO de la fila.

¿Puedes subir una captura o un ejemplo de la aplicación?

Anonymous
Not applicable
Author

Hola Ruben , como estas? Ante todo felicidades, te paso lo que me pedisHoras_2.png

La funcion que ejecuto para calcular ese valor es el load es asi, tal cual me dijiste:

  If(Floor(Date(INICIO_TURNO))=Peek(Floor(Date(INICIO_TURNO))), INICIO_TURNO-Peek(INICIO_TURNO)) as [Tiempo Turno],

En este caso no esta devolviendo valores.

Muchas gracias por tu ayuda Ruben!!

Ariel Nasca

rubenmarin

Ahora recuerdo, puede que sea por la parte del "Floor(Date(INICIO_TURNO))=Peek(Floor(Date(INICIO_TURNO)))", lo que intento es que solo compruebe diferencias cuando se trate del mismo día, para que no sume la espera desde el último turno del día anterior.

Si los turnos son 24 horas puedes quitarlo, en cualquier caso deberías añadir el "Order by Inicio_Turno;", se tiene que cargar en orden para poder calcular la diferencia con el turno anterior.

Si no funciona puedes añadir cada parte del igual a un campo por separado para comprobar las diferencias:

Floor(Date(INICIO_TURNO)) as campo1,

Peek(Floor(Date(INICIO_TURNO))) as campo2,

Floor(Date(Peek(INICIO_TURNO))) as campo3

Anonymous
Not applicable
Author

Hola ruben,

   Sabes que el que no funciona es el Peek(Floor(Date(INICIO_TURNO))) , no me trae resultados, ahora si dejo solamente  Peek(INICIO_TURNO), me trae la información en el formato 18/12/2017 10:46:14.  No se si es correcto usar solo el peek.


En cuanto al order by que me decis, como hago para que me lo tome el load? porque lo pongo al final y me tira error, te paso el load:


LOAD

    campos,...

    INICIO_TURNO,

    FIN_TURNO,

    INICIO_TURNO-FECHA_TURNO as [Tiempo Espera],

    FIN_TURNO    -  INICIO_TURNO as [Tiempo Atención],

    If(Floor(Date(INICIO_TURNO))=Peek(Floor(Date(INICIO_TURNO))), INICIO_TURNO-Peek(INICIO_TURNO))  as [Tiempo Turno], 

    USU_ID,

    ATENDIDO,

    ID_SUCURSAL,

FROM [lib://QVD FILES TURNERO/F_TURNO.QVD]

(qvd);

Gracias

rubenmarin

Cierto, el order by solo funciona de una tabla resident, para tenerlo calculado en el script habría que hacer la carga en dos pasos, el 2º paso calcularía el campo:

LOAD *,

  If(Floor....

Resident PrimeraTabla;

DROP Table PrimeraTabla;


Si haces solo Peek no coincidirá porque la hora no es la misma, ¿La opción que había puesto como "campo3" tampoco funciona?