Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Buen dia a todos, creo esta discucion porque necesito calcular el promedio de dias ponderados entre que llega una factura, hasta que se hace la orden de pago. En la base de datos tengo el importe de la factura, la fecha de recepcion y la fecha de emision de orden de pago.
Creo que seria algo asi, pero no se bien como hacerlo en qlikview:
Importe | Diferencia Dias | Ponderador | Promedio Ponderado |
---|---|---|---|
2197.81 | 17 | 0.2399 | 4.0789 |
814 | 3 | 0.0888 | 0.2664 |
104.06 | 8 | 0.0113 | 0.0904 |
4840 | 8 | 0.5284 | 4.2272 |
1202.8 | 23 | 0.1313 | 3.0199 |
PROMEDIO PONDERADO: | 11.6822 |
Al ponderador lo calculo como: Importe / sum(Importe) = Ej: 2197.81 / 9158.67 = 0.2399.
De la base de datos traigo todo separado, quise hacer la siguiente funcion en qlikview, pero no me dio resultado:
=(Importe / sum(Importe)) * (FechaPago-FechaRecepcion)
Hola Rodrigo,
La fórmula debería ser algo como...
= sum(Importe) / sum(total importe) * (FechaPago - FechaRecepcion)
El tema es que el ponderador sale de cada importe, por eso hago: =Importe / sum(Importe), ya que cada importe se debe dividir por la suma de todos los importes para sacar el ponderador, el cual se multiplica luego por la diferencia de dias.
La tabla que pones como ejemplo está desglosada por una dimensión (que no se ve), la llamaré Dimension1.
Lo que haría la fórmula siguiendo tu ejemplo, sería
=sum(Importe) / sum(total importe) * (FechaPago - FechaRecepcion)
= 2197.81 / 9158.67 * 17
Podrias anexar un qvw con data dummy?
Esa tabla la obtengo con una consulta SQL, ya que son los datos que necesito.
Hice la siguiente formula, pero muestra 0:
=sum((Importe/TotalImporte)*(FechaRegistracion_Pago-FechaRegistracion_Recepcion))
Asi creeria que es correcto, pero muestra el valor 0.
Consegui que me diera un valor, pero resulta que no es el valor esperado, ya que cuando selecciono un mes me da un valor de 0.36 y no es correcto, ya que se demora mas de un dia en emitir un pago.
Mi pregunta es, la diferencia de dos fechas da un valor en dias? Es decir: =FechaRegistracion_Pago-FechaRegistracion_Recepcion = dias de diferencia?
Adjunto el archivo
Recomiendo que esa diferencia de dias, venga desde el script, trata de agregarlo a la misma tabla de donde estan las fechas, saludos!
Usando la fórmula de Jairo sale correctamente, Observa que tiene una diferencia con la tuya, pues hace Sum(importe) / Sum(total importe)
Te aconsejo que lo hagas paso a paso introduciendo una expresión para el ponderador y otra para los días, así verás mejor el error.
Luego una vez obtenido la contribución correcta de cada registro, tendrás que totalizar en cabecera para obtener la media de pago de todos los registros.
He probado a filtrar por semanas y calcula perfectamente
Te dejo un ejemplo detallado
Lo hice segun lo que dice Jairo, el tema es que el importe total es un valor unico, igual en todos casos, por eso no veo la razon para hacer sum(total importe), yo lo que tengo que hacer es dividir cada importe por el total, y luego sumarlo, lo que seria algo asi: sum(Importe/ImporteTotal), como cuando se calcula una probabilidad. Hice tal cual dice Jairo y no me tira ningun resultado, esta es la expresion:
=sum(Importe) / sum(total Importe) * (FechaRegistracion_Pago-FechaRegistracion_Recepcion)
El promedio ponderado se calcula dividiendo cada importe sobre el total de importes y a eso se lo multiplica por la diferencia de dias, eso me da el valor ponderado de cada importe, sumando todos esos valores obtengo el promedio ponderado de dias, por lo que la formula deberia ser:
=sum((Importe / ImporteTotal) * (FechaRegistracion_Pago - FechaRegistracion_Recepcion))
Pero esta expresion me da un valor que no es correcto, me da 0.3, 2.9 y valores asi que no son correctos.