Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola Como estan?, soy nuevo en el mundo de qliksense, estoy tratando de realizar los siguiente:
la información que tengo es la siguiente
:
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
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
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
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.
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
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?
Hola Ruben , como estas? Ante todo felicidades, te paso lo que me pedis
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
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
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
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?