Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
3 years ago

Promedio ponderado

Hola

Estoy tratando de calcular un promedio ponderado entre múltiples campos diferentes que todos tienen pesos establecidos en ellos y mi cálculo no está calculando correctamente.

Los valores que actualmente entran en el promedio ponderado son un porcentaje de un objetivo que se calcula como tal:

Medida1 =
VAR _variable = CALCULAR(
DIVIDIR(
CALCULAR(
SUMX('Tabla', [Valor]), FILTER('Tabla2', [ID] = [ID])),
CALCULAR(
SUMX('Tabla de objetivos', [Valor]), FILTER('Tabla de objetivos', [ID] = [ID]))))

RETURN SI(_variable >= 1.5, 1.5, _variable)
El problema con esto es que si el porcentaje del objetivo está por encima del 150%, entonces el valor alcanza un máximo del 150%, por lo que incluyo la declaración IF. Esto también se repite para 3 grupos diferentes de valores de ID
A partir de ahí, mi promedio ponderado de los porcentajes se calcula así:
Promedio ponderado =
VAR _group1 = CALCULATE(SUMX('Table', [Measure1]*0.3), FILTER('Table2', [ID)] = [ID]))
VAR _group2 = CALCULATE(SUMX('Table', [Measure2]*0.25), FILTER('Table2', [ID)] = [ID]))
VAR _group3 = CALCULATE(SUMX('Table', [Measure3]*0.45), FILTER('Table2', [ID)] = [ID]))
RETURN CALCULATE(
DIVIDE((_group1 + _group2 + _group3), (0.3+0.25+0.45)), FILTER('Tabla de objetivos', [ID] = [ID]))
El problema con mi cálculo actual es que ignora la declaración IF en mis fórmulas y calcula el promedio ponderado basado en el VAR para cada grupo. No creo que sea un problema con mi medida de promedio ponderado, ya que calcula el promedio ponderado con precisión sin la declaración IF.
¡Gracias de antemano! También me disculpo ya que no puedo compartir mi archivo pbix, ya que contiene datos confidenciales.

3 Replies

  • @NJ81858 ,

    ¿Cuál es la relación entre Global Table y Table1 y Table2, qué hacen y qué aspecto tienen?

    Lo siento por la información que ha proporcionado no me aclara el problema. ¿Puede compartir más detalles para ayudarnos a aclarar su escenario?

    Por favor, proporcióneme más detalles sobre su tabla y su problema o compártame con su archivo pbix después de eliminar datos confidenciales.

    Consulte con:

    Cómo proporcionar datos de ejemplo en el foro de Power BI

    Cómo obtener respuestas rápidas a su pregunta

    Saludos

    Jianbo Li

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

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @v-jianboli-msft Así que mi tabla de objetivos tiene objetivos para cada grupo para 3 métricas diferentes, y están relacionados con mis otras tablas por el número de identificación.

      Un ejemplo de mi tabla de objetivos se ve así:

      IDENTIFICACIÓNMétrica de gol 1Métrica de gol 2Métrica de gol 2
      17104
      2589
      36311

      Y luego cada una de mis tablas métricas se ve así (llamaremos a esto Métrica 1):

      IDENTIFICACIÓNValor
      15
      210
      32
      16
      213
      31

      A partir de ahí, calculo el porcentaje del objetivo que cada ID ha logrado de esta manera (tenga en cuenta que estoy haciendo esto en matemáticas típicas para mostrar mi problema en lugar de usar mi código DAX, como referencia, esta es mi fórmula😞 DAX Measure1

      ID 1 Métrica 1 = 5+5= 10

      Objetivo para ID 1 Métrica 1 = 7

      10/7 = 1,428 = 142,8%

      ID 2 Métrica 1 = 10+13 = 23

      Objetivo para ID 1 Métrica 1 = 5

      23/5 = 4.6 = 460% (Esto alcanzará un máximo de 150%)

      ID 1 Métrica 1 = 2+1 = 3

      Objetivo para ID 1 Métrica 1 = 6

      3/6 = 0,5 = 50%%

      Una vez que tengo ese porcentaje de los valores del objetivo, tengo que calcular un promedio ponderado del porcentaje de la meta alcanzada, así que por el bien de este ejemplo, solo mostraré los valores de ejemplo. Se ve así para ID 2:

      ID 2 Métrica 1 = 150% (ya que este máximo es 150%)

      ID 2 Métrica 2 = 100%

      ID 2 Métrica 3 = 35,8%

      A partir de ahí, quiero calcular el promedio ponderado de esta manera (El resultado deseado de mi medida😞 DAX promedio ponderado

      ( (1.5 * 0.3) + (1 * 0.25) + (0.358 * 0.45) ) / (0.3 + 0.25 + 0.45)

      0,8611 / 1 = 86,11% promedio ponderado

      El problema con mi fórmula es que la está calculando así, ignorando mi condición que establece un máximo para el valor (El resultado de mi medida DAX promedio ponderada actualmente😞

      ( (4.6 * 0.3) + (1 * 0.25) + (0.358 * 0.45) ) / (0.3 + 0.25 + 0.45)

      1,7911 / 1 = 179,11% Promedio ponderado

      En su estado actual, mis medidas de DAX funcionan como deberían, simplemente ignoran la declaración IF que establece el porcentaje máximo para uno de los porcentajes de los objetivos y usa el 460% en mi cálculo de promedio ponderado en lugar del valor de 150%.

  • @NJ81858 ,

    Basándome en su descripción, he creado una muestra simple:

    Por favor, intente:

    Measure1 = 
    VAR _variable = CALCULATE(
        DIVIDE(
            CALCULATE(
                SUMX('Metric 1', [Value]), FILTER('Metric 1', [ID] = [ID])),
            CALCULATE(
                SUMX('Goal Table', [Goal Metric 1]), FILTER('Goal Table', [ID] = [ID]))))
    
    RETURN IF(_variable >= 1.5, 1.5, _variable)
    
    Measure2 = 
    VAR _variable = CALCULATE(
        DIVIDE(
            CALCULATE(
                SUMX('Metric 2', [Value]), FILTER('Metric 2', [ID] = [ID])),
            CALCULATE(
                SUMX('Goal Table', [Goal Metric 2]), FILTER('Goal Table', [ID] = [ID]))))
    
    RETURN IF(_variable >= 1.5, 1.5, _variable)
    
    Measure3 = 
    VAR _variable = CALCULATE(
        DIVIDE(
            CALCULATE(
                SUMX('Metric 3', [Value]), FILTER('Metric 3', [ID] = [ID])),
            CALCULATE(
                SUMX('Goal Table', [Goal Metric 3]), FILTER('Goal Table', [ID] = [ID]))))
    
    RETURN IF(_variable >= 1.5, 1.5, _variable)
    
    Weighted Average = 
    VAR _group1 = [Measure1]*0.3
    VAR _group2 = [Measure2]*0.25
    VAR _group3 = [Measure3]*0.45
     
    RETURN DIVIDE((_group1 + _group2 + _group3), (0.3+0.25+0.45))

    Resultado final:

    Saludos

    Jianbo Li

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