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: 
Ari_vzla
Contributor III
Contributor III

Contabilizar los días del mes en un rango de varios meses

Hola Comunidad, 

    Necesito de su ayuda, tengo tiempo queriendo graficar una tabla donde quiero dividir el conteo de un campo (Confirmation time) entre los días del mes de otro campo tipo fecha (Creation date). Como aclaración, el campo fecha, puedo tener una fecha específica muchas veces, por ejemplo, el día 30/Sep/2020, se generaron datos 50 veces y el calendario de fecha todo el año. He tratado con lo siguientes  

Count([Confirmation time])/NetWorkDays(MonthStart([Picks per day 2020.Creation Date.autoCalendar.YearMonth]), MonthEnd([Picks per day 2020.Creation Date.autoCalendar.YearMonth]))

Pero solo esta tomando un mes en consideración porque como valor de networkdays me un valor fijo para todo los meses. El valor numerador es correcto, necesito contar las veces del campo confirmation time para cada mes, pero el denominador, que son los días hábiles de cada mes, no he podido calcularlo. 

Cuando trato de hacer una gráfica, mi dimensión es Creation date (mes, año), para que quede una barra para cada mes.

La primer gráfica es la que obtengo, pero los datos están mal, deben ser Septiembre 869 (porque tuve 22 días hábiles, pero Octubre me lo divide entre 22 días cuando el mes tiene 23. 

Nota, me falta descontar los días de vacaciones, pero primero quiero descifrar como resolver este problema y si es posible que octubre o el ultimo mes se vaya dividiendo entre el total de días hábiles transcurridos, mucho mejor.

 Picking Time _ Hoja - Qlik Sense.png

Gracias 

Arieli V

 

  

 

Labels (3)
2 Replies
ArnadoSandoval
Specialist II
Specialist II

Hola @Ari_vzla  Arielis

Analizando tu expresion:

Count([Confirmation time])/NetWorkDays(MonthStart([Picks per day 2020.Creation Date.autoCalendar.YearMonth]), MonthEnd([Picks per day 2020.Creation Date.autoCalendar.YearMonth]))

Tienes un problema con el denominador, la function:

NetWorkDays(MonthStart([Picks per day 2020.Creation Date.autoCalendar.YearMonth]), MonthEnd([Picks per day 2020.Creation Date.autoCalendar.YearMonth]))

 retornara el numero de dias laborables entre las dos fechas por cada dia, algo asi:

Contabilizar-Dias-01.png

Para Enero tendras 23 dias laborables, si registras los "Confirmation Times" diariamente, tus datos quizas se vean como lo muestra la imagen arriba; el problema es que con la expresion que estas tratando combinando una funcion Agregada (Count) con un denominador que no es una constante, porque para cada mes, tendras tantos "Working Days" (siempre el mismo valor) como dias en que se registraron "Confirmation Times"; para resolver este problema, y que tu formula funcione, tienes que utilizar una funcion agregada con la expresion del denominador, puedes utilizar: Max() o Min(), yo utilice Max; la expresion sera algo asi:

Count([Confirmation time])/Max(NetWorkDays(MonthStart([Picks per day 2020.Creation Date.autoCalendar.YearMonth]), MonthEnd([Picks per day 2020.Creation Date.autoCalendar.YearMonth])))

 Anexo un pequeño projecto que ilustra la resolucion de tu problema, utilice 18 meses y numeros aleatorios para simular "Confirmation Times".

Espero que te ayude.

Saludos (PS: Tambien soy de Venezuela)

Arnaldo Sandoval
A journey of a thousand miles begins with a single step.
Ari_vzla
Contributor III
Contributor III
Author

Hola Armando, después de revisar mi función, note que si estaba funcionando, sin embargo la que me enviaste también trabaja muy bien, muchas gracias. Ahora tengo otro problema, no he logrado excluir el ultimo mes ya que este esta incompleto, quiero que la grafica se muestre hasta Septiembre. 

Esta es la funcion que estoy utilizando 

Count({<[Picks per day 2020.Creation Date.autoCalendar.Date] = {">=$(=MonthStart((Today()-30)))<= $(=MonthEnd((Today()-60)))"}>}[Qty pickeadores])/(NetWorkDays(MonthStart([Picks per day 2020.Creation Date.autoCalendar.YearMonth]), (MonthEnd([Picks per day 2020.Creation Date.autoCalendar.YearMonth])), $(Holidays)))

 pero mi resultado siempre es el siguiente (que es correcto, solo no quiero que se muestre Octubre o en efecto el ultimo mes que no ha terminado)

Picking Time _ Mensual - Qlik Sense.png

 Alguna idea de como lo puedo resolver? Me sirvio muy bien para la grafica de las semanas y limitar las semanas a desplegar, pero no me resulta para los meses.

Gracias.

Arieli V. (PD, sorry no soy de Venezuela, soy de México, pero mi apellido es Valenzuela es por eso el Vzla)