Promedio ponderado del precio en el 25% del volumen

Un usuario Pregunto ✅

pbiBXL1234

Hola comunidad de Power BI,

He estado trabajando en Power BI desde hace unos meses y me gustaría llevar a cabo una medida que me permitiría calcular el promedio ponderado en el 25% de mis valores, permítanme explicarme:
Tengo un archivo de Excel (https://www.dropbox.com/scl/fi/omo3a…8dqkaiyjk0jxkp) que recopila todos los datos de un año de producción (alrededor de 150 000 líneas) con 6 columnas: Mes Año, Código de producto, Línea de producción, Unidad vendida, Unidad pronosticada vendida y Precio (k).
Mi objetivo: calcular el precio medio ponderado durante un cuarto del volumen total de ventas. Al final, me gustaría que esta medida devolviera un valor en euros / unidad vendida, es decir, el precio medio ponderado para el 25% de mis productos que tienen el precio / unidad más bajo vendido.
En el gráfico adjunto, he intentado representar gráficamente lo que quiero. Muestra 1 año de producción, cada color es un producto y la altura del rectángulo es el número de unidades vendidas.
Traté de dibujar en rojo lo que quería. Gráfico promedio ponderado Promedio ponderado gráfico
La línea roja horizontal representa un cuarto del volumen total de unidades vendidas (alrededor de 475/4 a 120) (esto es diferente del 1er cuartil de una serie).
Por lo tanto, quiero calcular el precio promedio ponderado de los productos que tienen 0 a aproximadamente 120 unidades vendidas (lectura gráfica).
Promedio ponderado- Suma del precio (k) / Suma del número de unidades * 1000 -> Resultados en unidad de unidad

Espero que alguien entienda mi explicación y pueda ayudarme en este punto … ya que estoy luchando con él por un tiempo ahora. Eso sería genial.

¡Gracias a todos!

Hola, @ pbiBXL1234

De acuerdo con su requisito, restauro el valor en blanco de [Unidad vendida] en la consulta Potencia, y dijo que desea calcular el promedio ponderado a partir del primer valor que es positivo y en crecimiento hasta llegar al 25% del total. Creo que puedo entender tu lógica. He cambiado mis pasos, puedes echar un vistazo:

  1. Creó una columna calculada:
Rank1 = RANKX(ALL('Sheet1'),[Unit sold],,ASC,Skip)
  1. Creé dos medidas:
rollingtotal = 
CALCULATE(SUM(Sheet1[Unit sold]),FILTER(ALLSELECTED(Sheet1),[Rank1]<=MAX([Rank1])))
weighted average1 =

var _totalsold=SUMX(ALLSELECTED(Sheet1),[Unit sold])

var _sumofprice=CALCULATE(SUM(Sheet1[Price (€)]),FILTER(ALLSELECTED(Sheet1),[rollingtotal]<=DIVIDE(_totalsold,4)))

var _sumofunits=CALCULATE(SUM(Sheet1[Unit sold]),FILTER(ALLSELECTED(Sheet1),[rollingtotal]<=DIVIDE(_totalsold,4)))

return DIVIDE(_sumofprice,_sumofunits)*1000

Desafortunadamente, no puedo obtener el promedio ponderado dinámicamente basado en la segmentación, porque Slicer no puede afectar al valor de la columna calculada, pero debo usar la columna calculada para obtener el número de rango para calcular el total móvil.

¿Desea comprobar si este método es útil porque mi equipo es demasiado lento para ejecutar un archivo pbix con una gran cantidad de datos?

Puede descargar mi archivo pbix de prueba aquí

Saludos

Equipo de apoyo a la comunidad _Robert Qin

Si este post ayudaentonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

pbiBXL1234

@ v-robertq-msft Traté de hacerlo más claro y adjuntó el archivo de Excel en el que normalmente calculo el ponderado, aquí es cómo lo hago:

1. (celda F1) La columna «Precio (ot)» se ordena de menor a mayor.
2. (celda H1) Suma (Ventas

Hola, @ pbiBXL1234

De acuerdo con su descripción, he creado una medida y algunos gráficos para lograr su requisito basado en mi comprensión, puede echar un vistazo:

  1. Elimino algunos datos de fila con valores en blanco que creo que no necesita y creé una medida:

v-robertq-msft_0-1609751151296.png

weighted average =

var _rank=RANKX(ALLSELECTED(Sheet1),CALCULATE(MAX([Unit sold])),,ASC,Dense)

var _total=COUNTX(ALLSELECTED(Sheet1),[Product code])

var _sumofprice=CALCULATE(SUM(Sheet1[Price (€)]),FILTER(ALLSELECTED(Sheet1),_rank<=DIVIDE(_total,4)))

var _sumofunits=CALCULATE(SUM(Sheet1[Unit sold]),FILTER(ALLSELECTED(Sheet1),_rank<=DIVIDE(_total,4)))

return DIVIDE(_sumofprice,_sumofunits)*1000
  1. Luego creé un gráfico de tabla, una segmentación y un gráfico de cartas y lo puse así:

v-robertq-msft_1-1609751151316.png

Y supongo que esto es lo que quieres.

Puede descargar mi archivo pbix de prueba aquí

Si este resultado no es lo que desea, puede explicar su lógica más claramente (utilice algunos datos de ejemplo con menos filas y el valor correcto de la salida que deseaba)

Saludos

Equipo de apoyo a la comunidad _Robert Qin

Si este post ayudaentonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

pbiBXL1234

En respuesta a v-robertq-msft

@ v-robertq-msft wow, eso fue tan rápido!

En realidad, si elimina valores en blanco en la columna «Unidad vendida», también eliminará los valores no en blanco de la columna «Unidad pronosticada vendida» o ¿me equivoco? y necesitamos esos valores.

De hecho, al calcular el promedio ponderado podemos ver que sólo para los valores no en blanco en «Unidad vendida» hay un valor no en blanco en «Precio ()» pero todavía necesito las filas de «Unidad pronosticada vendida» en otras medidas en mi archivo.

También, ¿cómo logró «iniciar» el primer 25% contar desde el primer valor de precio que es positivo?

Tal vez me olvidé de explicar esto, pero en mi archivo como usted vio hay valores de precio que son negativos, pero no quiero contarlos en el ponderado, sólo a partir del primer valor que es positivo y creciendo hasta llegar al 25% del total .

Además, parece que el archivo que descargué es PBT_V0150 y no puedo encontrar la hoja que mostró en su captura de pantalla .. Me gustaría ver si la medida funciona para la cantidad de datos que tengo.

Gracias

Hola, @ pbiBXL1234

Según su descripción, puedo entender más o menos lo que desea obtener: Desea calcular el precio promedio ponderado de los productos que está dentro del 25% más bajo del total. Pero me parece que no puedo abrir y descargar su archivo de Excel. ¿Desea comprobar y publicar el enlace de nuevo?

v-robertq-msft_0-1608605758962.png

¡Muchas gracias!

Cómo obtener respuestas a su pregunta rápidamente

Saludos

Equipo de apoyo a la comunidad _Robert Qin

Si este post ayudaentonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

pbiBXL1234

En respuesta a v-robertq-msft

No @ v-robertq-msft,

Gracias por su respuesta. Esto es exactamente lo que estoy tratando de conseguir. De hecho revisé el enlace y parece que hay un problema, aquí hay otro, espero que esto funcione: https: //www.dropbox.com/scl/fi/omo3at6ri461dwryxnp2e/2019_Sales.xlsx? Dl = 0 & rlkey = fowtujto34a8dqkaiyjk …

¡Muchas gracias!

Amitchandak

@ pbiBXL1234, En una mirada muy intial, creo que percentil tiene papel en esto. Sin embargo, para comprobar su archivo. Vea si algunos de estos blogs pueden ayudar

https://blog.enterprisedna.co/implementing-80-20-logic-in-your-power-bi-analysis/
https://forum.enterprisedna.co/t/testing-the-pareto-principle-80-20-rule-in-power-bi-w-dax/459
https://finance-bi.com/power-bi-pareto-analysis/
https://community.powerbi.com/t5/DAX-Commands-and-Tips/Calculate-the-sum-of-the-top-80/td-p/763156

pbiBXL1234

En respuesta a Amitchandak

No @amitchandak,

Gracias por la respuesta.

Sí, puedo entender que al principio parece que el percentil tiene un papel en él, pero no es exactamente el mismo valor que lo que estoy tratando de conseguir es el precio promedio ponderado de los productos dentro del 25% más bajo del total -> para tener este 25% simplemente divido mi total por 4. Mientras que cuando se calcula el percentil 25 (primer cuartil), es sólo que el 25% de los datos están bajo este valor, por lo tanto no es el mismo valor, pero si conoce una manera de calular la media ponderada dentro del primer cuartil, ¡estaría muy interesado!

¡Gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *