Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago

Subtotal valor incorrecto

Hola
Necesito un sub total en cada grupo, pero por qué el cálculo es incorrecto. Utilizo la tabla de matriz para este informe y ya pongo sub totalmatrix.png

matrix2.png

Mi cálculo DAX es:

ACC - VAR item_exps - MAX ( TEMPLATE[ITEM] )
VAR act_BOD á MAX ( TEMPLATE[MAN])
VAR act_NONBOD á MAX ( TEMPLATE[NON_MAN])
VAR act_GROUP - MAX ( TEMPLATE[GROUP])
VAR cc_exps á MAX ( CC_BI[CC])
VAR cc_exps_gr á máx (CC_BI[CC_GROUP])
VAR cc_qad - MAX(EXPS[CC])
devolución
SWITCH(TRUE(),
item_exps "REPAIR MAINTENANCE BUILDING & EQUIP" && cc_exps_gr <> "BOD",
CALCULAR ( SUMA ( EXPS[PERIOD_ACT]) /1000000.00 + 0,
FILTRO(EXPS,EXPS[ACC_NUMB] á 61305 EXPS[ACC_NUMB] 61306),
FILTER(EXPS,EXPS[CC] á cc_exps )),

item_exps "REPAIR MAINTENANCE BUILDING & EQUIP" && cc_exps_gr "BOD",
CALCULAR ( SUMA ( EXPS[PERIOD_ACT]) /1000000.00 + 0,
FILTRO(EXPS,EXPS[ACC_NUMB] á 61305 EXPS[ACC_NUMB] 61306),
FILTER(EXPS,EXPS[CC] á "BOD1" á ? EXPS[CC] á "BOD2" )),
item_exps "REPAIR MAINTENANCE VEHICLE" && cc_exps_gr "BOD",
CALCULAR ( SUMA ( EXPS[PERIOD_ACT]) /1000000.00 + 0,
FILTRO(EXPS,EXPS[ACC_NUMB] á 61307 EXPS[ACC_NUMB] 61308),
FILTER(EXPS,EXPS[CC] á "BOD1" á ? EXPS[CC] á "BOD2" )),

item_exps "REPAIR MAINTENANCE VEHICLE" && cc_exps_gr <> "BOD",
CALCULAR ( SUMA ( EXPS[PERIOD_ACT]) /1000000.00 + 0,
FILTRO(EXPS,EXPS[ACC_NUMB] á 61307 EXPS[ACC_NUMB] 61308),
FILTER(EXPS,EXPS[CC] á cc_exps )),
cc_exps_gr <> "BOD",
CALCULAR ( SUMA ( EXPS[PERIOD_ACT]) / 1000000.00,
FILTER(EXPS,EXPS[ACC_NUMB] á act_NONBOD),FILTER(EXPS, EXPS[CC] á cc_exps) ) + 0
Utilizo otra tabla para obtener valor en un número específico,
matrix3.png

Cualquier ayuda sería apreciada. ¡Gracias!

3 Replies

  • @akhmad_danial , cuando cada uno de los que utilice if y switch, entonces necesita un contexto de fila de tabla. y ese contexto falta a nivel sub total y total. Si la cláusula de filtro de usuario, entonces quitamos esos datos y los sumamos, obtendremos el subtotal correcto.

    Si es posible, utilice el filtro en lugar de los datos del filtro en Switch, utilice un interruptor para cambiar los cálculos

    En el caso anterior forzar un conetxt de fila desde el nivel más bajo como este ejemplo

    sumx(summarize(Table,Table[class], table[country],"_1",[Budget]),[_1])

    Aquí los datos se a tientas primero en el nivel Table[class], tabla[país] y luego se utilizan. Puede tener más o menos nivel según la necesidad

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hola Todos los @amitchandak@v-xuding-msft

      Gracias por su respuesta.

      Idea proporcionada por @amitchandak trabajado, cambio la regla de filtro en grupo primero para obtener valor correctamente y calcularlo.

      Muchas gracias.

  • v-xuding-msft's avatar
    v-xuding-msft
    Icon for Community Support rankCommunity Support

    Hola @akhmad_danial ,

    Estoy de acuerdo con @amitchandak. Podrías usar la fórmula que sugiere para intentarlo. Si no puede implementar o tiene otras preguntas, comparta algunos datos de ejemplo y su salida esperada. Entenderemos claramente su situación.