Skip to main content
Announcements
See why Qlik is a Leader in the 2024 Gartner® Magic Quadrant™ for Analytics & BI Platforms. Download Now
cancel
Showing results for 
Search instead for 
Did you mean: 
rodri_morales
Creator II
Creator II

Promedio Ponderado

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:

ImporteDiferencia DiasPonderadorPromedio Ponderado
2197.81170.23994.0789
81430.08880.2664
104.0680.01130.0904
484080.52844.2272
1202.8230.13133.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)

12 Replies
Not applicable

Hola Rodrigo,

La fórmula debería ser algo como...

= sum(Importe) / sum(total importe) * (FechaPago - FechaRecepcion)

rodri_morales
Creator II
Creator II
Author

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.

Not applicable

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


  • sum(Importe) está afectado por el contexto en el que se encuentra la expresión (desglose por Dimension1).
  • sum(total Importe) la palabra total está modificando el contexto en el que se calcula la expresión y realiza el cálculo sobre el total del Importe, sin tener en cuenta el desglose por Dimension1.


Not applicable

Podrias anexar un qvw con data dummy?

rodri_morales
Creator II
Creator II
Author

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.

rodri_morales
Creator II
Creator II
Author

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

Not applicable

Recomiendo que esa diferencia de dias, venga desde el script, trata de agregarlo a la misma tabla de donde estan las fechas, saludos!

Not applicable

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

rodri_morales
Creator II
Creator II
Author

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.