Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
Gracias
Arieli V
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:
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)
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)
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)