rigosakhx
Hola,
Llegué a un obstáculo y busco ayuda para calcular el promedio ponderado de los siguientes datos.
La columna Risk2 determina qué productos están en una categoría de riesgo y se calcula de la siguiente manera
Risk2 = if(([Consumption]) > [Forecast],0,1)
Sospecho que hay una mejor manera de calcular la proporción de elementos de «Riesgo» para cada subcategoría (AC). Intenté usar ALLSELECTED[GROUP] pero por alguna razón no funcionó. Aquí está la medida calculada que usé.
% = DIVIDE(sum([Risk2]), calculate(COUNT([Risk2]),ALLSELECTED([ITEMCODE])))
Y luego el resultado final que estoy tratando de lograr es el peso promedio
El grupo A tiene el 50% del peso,
Grupo B – 30%
Grupo C – 20%
y los restantes grupos (DF) son 0%.
Necesito obtener la suma del % de cada grupo multiplicado por peso – 60*0.5 + 93.75*0.3 + 80*0.2 = 74.25
La medida actual es una declaración IF simple pero eso no parece funcionar
Weighted % =
VAR FR =
DIVIDE(sum([Risk2]), calculate(COUNT([Risk2]),ALLSELECTED([ITEMCODE])))
RETURN
IF(MAX([GROUP] )= "A",FR * 0.5,
IF (MAX([GROUP]) = "B", FR * 0.3,
IF( MAX([GROUP]) = "C", FR * 0.2,
IF( MAX([GROUP]) = "D", FR * 0,
IF( MAX([GROUP]) = "E", FR * 0,
IF( MAX([GROUP]) = "F", FR * 0,FR * 0
))))))
Gracias
allisonkennedy
Debe proporcionar un contexto de fila para que esto funcione cuando hay más de un grupo seleccionado.
Intenta usar:
Weighted % =
VAR FR =
DIVIDE(sum([Risk2]), calculate(COUNT([Risk2]),ALLSELECTED([ITEMCODE])))
RETURN
SUMX(VALUES([GROUP]),
SWITCH([Group]
, "A",FR * 0.5
, "B", FR * 0.3
, "C", FR * 0.2
, "D", FR * 0
, "E", FR * 0
,"F", FR * 0
,FR * 0
)
)
Además, probablemente pueda usar la función PROMEDIO en lugar de DIVIDIR, SUMAR y CONTAR.
allisonkennedy
@rigosakhx Eso se ve bonito y elegante. Bien hecho, y de nada. 🙂
rigosakhx
Actualización: según AllisonKennedy, reemplazó DIVIDE SUM COUNT con AVERAGE y creó una medida separada para ello.
% = PROMEDIO[Risk2]
Entonces no necesité usar el VAR en mi medida final
% ponderado =
SUMX(VALORES([GROUP]),
CAMBIAR([Group]
«A», PROMEDIO * 0.5
«B», PROMEDIO * 0.3
«C», PROMEDIO * 0.2
,PROMEDIO* 0
))
El código tiene más sentido y funciona según lo previsto.
Muchas gracias a AllisonKennedy
rigosakhx
Hola @AllisonKennedy
Gracias por esto
Casi funcionó, pero por alguna razón la suma es igual a la proporción no ponderada
allisonkennedy
Debe proporcionar un contexto de fila para que esto funcione cuando hay más de un grupo seleccionado.
Intenta usar:
Weighted % =
VAR FR =
DIVIDE(sum([Risk2]), calculate(COUNT([Risk2]),ALLSELECTED([ITEMCODE])))
RETURN
SUMX(VALUES([GROUP]),
SWITCH([Group]
, "A",FR * 0.5
, "B", FR * 0.3
, "C", FR * 0.2
, "D", FR * 0
, "E", FR * 0
,"F", FR * 0
,FR * 0
)
)
Además, probablemente pueda usar la función PROMEDIO en lugar de DIVIDIR, SUMAR y CONTAR.