Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Cómo calcular la media ponderada

Hola

Estoy tratando de calcular el promedio ponderado de días hábiles porque tenemos subregiones bajo regiones y tengo dos preguntas:

(1) ¿Cómo puedo calcular el total de días hábiles para cada subregión?

Mis datos se verían así:

  • Para cada subregión, necesito calcular el número de días hábiles, excluyendo si el día laborable es sábado o domingo (mostrando 6 o 7 en la columna de días laborables), así como si el día festivo muestra 1.
    SubregiónFechasdía laborabledía festivo
    un1/1/202150
    un1/2/202160
    un1/3/202170
    un1/4/202111
    un1/5/202120
    un1/6/202130
    un1/7/202140
    b1/8/202150
    b1/9/202160

Me imagino que eventualmente seré abe para usar la segmentación de datos o el parámetro de Power BI para definir la fecha de finalización, por lo que no hay una columna de fecha de finalización aquí. Y no sé cómo hacerlo. (Creación de una medida sobre una medida???)

El resultado debe ser (excluyendo tanto el feriado como el fin de semana):

  • total de días
    a4
    b0

(2) ¿Cómo puedo agregarlo y hacer un promedio ponderado basado en la región?

Después de obtener los días hábiles ...

Combinando el anterior, los datos se verían así:

  • Las subregiones son únicas y cada una pertenece a una región
  • cada factor ponderado es igual al total de días trabajados dentro de cada subregión multiplicado por el monto total dentro de cada subregión (por ejemplo, 10 *100 = 100)
    RegiónSubregiónTotal de díasImporte totalFactor ponderado
    AAun101001000
    AAb115005500
    CCc114504950
    DDd109509500
    CCe96105490
    BBf83102480

Eventualmente, estoy tratando de obtener el total ponderado de días de cada región:

  • la cantidad total ponderada es la que resume la cantidad total de cada subregión (por ejemplo, 600 = 100 a) +500 b))
  • la cantidad media ponderada resume el factor ponderado de cada subregión, ex. 6500= 1000(a) +5500(b))
  • Quiero calcular el total ponderado de días dividiendo el factor ponderado promedio por la cantidad total de pesos (por ejemplo, 10.83333 = 6500/600)
    Cantidad total de wieghtesfactor ponderado mediodías totales ponderados
    AA600650010.83333333
    BB31024808
    CC1060104409.849056604
    DD950950010

¿Alguien tiene alguna idea de cómo puedo hacer esto a través de DAX?

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Allí, @emtsai

Creé una muestra y algunas medidas obtuvieron los siguientes resultados.

vangzhengmsft_1-1634015064479.png

Medidas:

__TotalDays = CALCULATE(COUNT(Question2[Subregion]),'Question2'[Weekday] in {1,2,3,4,5}&&'Question2'[Holiday]<>1)
__TotalAmount = SUM('Question2'[Amount])
__Weighted Factor = [__TotalAmount]*[__TotalDays]
__Weighted Factor_2 = 
var _t=SUMMARIZE('Question2',Question2[Region],Question2[Subregion],"Weighted Factor",[__Weighted Factor])
var _if=IF(ISINSCOPE(Question2[Region]),IF(ISINSCOPE(Question2[Subregion]),[__Weighted Factor],SUMX(_t,[Weighted Factor])),SUMX(_t,[Weighted Factor]))
return _if
__weighted total days = DIVIDE([__Weighted Factor_2],[__TotalAmount])

Consulte el archivo adjunto a continuación para obtener más detalles. Espero que esto ayude.

Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng


Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Allí, @emtsai

Creé una muestra y algunas medidas obtuvieron los siguientes resultados.

vangzhengmsft_1-1634015064479.png

Medidas:

__TotalDays = CALCULATE(COUNT(Question2[Subregion]),'Question2'[Weekday] in {1,2,3,4,5}&&'Question2'[Holiday]<>1)
__TotalAmount = SUM('Question2'[Amount])
__Weighted Factor = [__TotalAmount]*[__TotalDays]
__Weighted Factor_2 = 
var _t=SUMMARIZE('Question2',Question2[Region],Question2[Subregion],"Weighted Factor",[__Weighted Factor])
var _if=IF(ISINSCOPE(Question2[Region]),IF(ISINSCOPE(Question2[Subregion]),[__Weighted Factor],SUMX(_t,[Weighted Factor])),SUMX(_t,[Weighted Factor]))
return _if
__weighted total days = DIVIDE([__Weighted Factor_2],[__TotalAmount])

Consulte el archivo adjunto a continuación para obtener más detalles. Espero que esto ayude.

Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng


Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Syndicate_Admin
Administrator
Administrator

@emtsai prueba esto:

DIVIDE ( [Weighted Factors], CALCULATE ( [Weighted Factors], REMOVEFILTERS ( YourTable[Sub Region Column] ) ) )

Síguenos en LinkedIn (en ingle

Más información sobre el formato condicional en Microsoft Reactor

Mi última entrada de blog El poder de usar grupos de cálculo con relaciones inactivas (Parte 1) (perytus.com) Yo lo haría Elogios si mi solución ayudó. 👉 Si puede dedicar tiempo a publicar la pregunta, también puede hacer esfuerzos para felicitar a quien ayudó a resolver su problema. ¡Es una muestra de agradecimiento!

Visítenos en https://perytus.com, su ventanilla única para proyectos/formación/consultoría relacionados con Power BI.

Syndicate_Admin
Administrator
Administrator

Si tiene las columnas [Total de días] y [Importe total], el promedio ponderado es

AvgDays =
DIVIDE (
    SUMX ( Table1, Table1[Total Days] * Table1[Total Amount] ),
    SUMX ( Table1, Table1[Total Amount] )
)

AlexisOlson_0-1633719955549.png

Hola Alexis,

La pregunta es que comencé a calcular el total de días y la cantidad en función de los subrogos, y eventualmente tendría que dividir en función de las regiones.

El conjunto de datos original tiene este aspecto:

FechaRegiónSubregiónImporte totalDía festivoDía laborable
2021/11/1AAa5001
2021/11/2AAa502
2021/11/3AAa9005
2021/11/4AAa6004
2021/11/1AAb4001
2021/11/2AAb6002
....

Así que hice una medida basada en la subregión:

Cálculo de los días laborables, la cantidad y el factor ponderado escribiendo:

WorkingDays = CALCULATE(COUNTROWS(Data)-sum(Data[Holiday]),Data[Weekday]<6)
Suma del monto total = suma(Datos[Monto total])
Facotrs ponderados = [Suma del importe total]*[Días laborables]
Y ahora obtengo algo como esto cuando lo visualizo en una matriz (no en el formato de mis datos originales) si lo veo a través de year_month:
AñoSuma del monto totalDías laborablesFacotrs ponderados
2021
Nov
AA305214300
a205101000
b100113300
....
BB11504015800
c500168000
d400124800
e250123000
Quiero encontrar una manera de dividir las medidas basadas en la Región. Ahora, si divido, todavía se va a dividir por subregión.

Nota al margen: Probablemente valga la pena agregar una columna calculada [IsWorkingDay]

IsWorkingDay = ( Data[Holiday] = 0 ) && ( Data[Weekday] < 6 )

a su tabla para que pueda escribir [WorkingDays] de manera más simple

WorkingDays = CALCULATE ( COUNTROWS ( Data ), Data[IsWorkingDay] )

Hacer cualquier otra lógica con los días de trabajo también se vuelve más simple.

Helpful resources

Announcements
June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors