cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Frequent Visitor

Calculo de costes

Hola,

 

Llevo un buen rato intentando sacar algo bastante simple en excel pero que en PowerBi se me resiste... a ver si alguien me puede ayudar 🙂 

 

Tengo una serie de productos y cada uno de ellos tiene un coste mensual.

 

En cada mes, tengo una cantidad de cada uno y necesito saber el coste mensual total. 

 

*la columna tachada es el ID de cada producto.

JMS1985_0-1606406751739.png

Esta es la tabla que quiero reflejar:

JMS1985_1-1606406816479.png

*El total muestra: unidades medias (correcto), cuota mes (Correcto por linea, incorrecto en total).

 

La cuota individual para cada ID me sale bien, pero el problema lo tengo con el total... La suma de los importes individuales no me da la suma total (se porque es pero no se como resolverlo).

 

El problema lo tengo en las medidas que uso:

 

Cuota = SUM([Cuota diaria])*[unidades]
Cuota mes= [Cuota]*COUNT('Función invocada'[Fecha])

 

Necesito basicamente multiplicar la Cuota Diaria por el numero de unidades. Sin embargo, solo me deja multiplicar si añado una funcion delante de Cuota Diaria, en este caso es SUM. Por ello, en el total, realiza la suma de todas las cuotas y me lo multiplica por las unidades medias.... esto me da un valor mas alto del que deberia.

 

Alguna idea? seguramente sea algo extremadamente facil, pero soy bastante nuevo en PowerBi

 

Muchas gracias,

1 ACCEPTED SOLUTION
Community Support
Community Support

Hola @JMS1985 ,

Esto parece un problema de totales de medida. Muy común. Ver este post al respecto
https://community.powerbi.com/t5/DAX-Commands-and-Tips/Dealing-with-Measure-Totals/td-p/63376

Además, esta Medida Rápida, Medir Totales, La Palabra Final debe obtener lo que necesita:
https://community.powerbi.com/t5/Quick-Measures-Gallery/Measure-Totals-The-Final-Word/m-p/547907

En este caso, puede crear otra medida como esta para fijar el valor total en la matriz:

Unit_avg = AVERAGE('Table'[Units])
Cuota = 
VAR tab =
    ADDCOLUMNS (
        'Table',
        "avg_unit",
            CALCULATE (
                AVERAGE ( 'Table'[Units] ),
                FILTER (
                    ALL ( 'Table' ),
                    'Table'[ID] = EARLIER ( 'Table'[ID] )
                        && 'Table'[Date].[MonthNo] = EARLIER ( 'Table'[Date].[MonthNo] )
                )
            ),
        "v",
            CALCULATE (
                SUM ( 'Table'[value] ),
                FILTER (
                    ALL ( 'Table' ),
                    'Table'[ID] = EARLIER ( 'Table'[ID] )
                        && 'Table'[Date].[MonthNo] = EARLIER ( 'Table'[Date].[MonthNo] )
                )
            )
                * CALCULATE (
                    AVERAGE ( 'Table'[Units] ),
                    FILTER (
                        ALL ( 'Table' ),
                        'Table'[ID] = EARLIER ( 'Table'[ID] )
                            && 'Table'[Date].[MonthNo] = EARLIER ( 'Table'[Date].[MonthNo] )
                    )
                )
    )
VAR tb =
    SUMMARIZE ( tab, [ID], [v] )
RETURN
    IF (
        ISINSCOPE ( 'Table'[ID] ),
        SUM ( 'Table'[value] ) * [Unit_avg],
        SUMX ( tb, [v] )
    )

cost.png

Adjunto un archivo de muestra en el siguiente, espera ayudarle.

Saludos
Equipo de apoyo a la comunidad _ Yingjie Li
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

2 REPLIES 2
Community Support
Community Support

Hola @JMS1985 ,

Esto parece un problema de totales de medida. Muy común. Ver este post al respecto
https://community.powerbi.com/t5/DAX-Commands-and-Tips/Dealing-with-Measure-Totals/td-p/63376

Además, esta Medida Rápida, Medir Totales, La Palabra Final debe obtener lo que necesita:
https://community.powerbi.com/t5/Quick-Measures-Gallery/Measure-Totals-The-Final-Word/m-p/547907

En este caso, puede crear otra medida como esta para fijar el valor total en la matriz:

Unit_avg = AVERAGE('Table'[Units])
Cuota = 
VAR tab =
    ADDCOLUMNS (
        'Table',
        "avg_unit",
            CALCULATE (
                AVERAGE ( 'Table'[Units] ),
                FILTER (
                    ALL ( 'Table' ),
                    'Table'[ID] = EARLIER ( 'Table'[ID] )
                        && 'Table'[Date].[MonthNo] = EARLIER ( 'Table'[Date].[MonthNo] )
                )
            ),
        "v",
            CALCULATE (
                SUM ( 'Table'[value] ),
                FILTER (
                    ALL ( 'Table' ),
                    'Table'[ID] = EARLIER ( 'Table'[ID] )
                        && 'Table'[Date].[MonthNo] = EARLIER ( 'Table'[Date].[MonthNo] )
                )
            )
                * CALCULATE (
                    AVERAGE ( 'Table'[Units] ),
                    FILTER (
                        ALL ( 'Table' ),
                        'Table'[ID] = EARLIER ( 'Table'[ID] )
                            && 'Table'[Date].[MonthNo] = EARLIER ( 'Table'[Date].[MonthNo] )
                    )
                )
    )
VAR tb =
    SUMMARIZE ( tab, [ID], [v] )
RETURN
    IF (
        ISINSCOPE ( 'Table'[ID] ),
        SUM ( 'Table'[value] ) * [Unit_avg],
        SUMX ( tb, [v] )
    )

cost.png

Adjunto un archivo de muestra en el siguiente, espera ayudarle.

Saludos
Equipo de apoyo a la comunidad _ Yingjie Li
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

Super User IV
Super User IV

@JMS1985, no muy claro. ¿Puede compartir datos de ejemplo y salida de ejemplo en formato de tabla? O una muestra de pbix después de eliminar datos confidenciales.

Ahora en caso de que necesite multiplicar que necesita tener ese nivel de línea

Una columna [Tarifa diaria]*[unidades]

o Medir un sumx de nivel de línea(Tabla,[Tarifa diaria]*[unidades])

si no es posible, entonces presione la medida en el nivel inferior

aquí ambos [Tarifa diaria], [unidades] son medidas

La división siempre debe ser una medida

divide(Sum(Table[A]), Sum(Table[B]))

sumx(values(Table[ID]),[Daily Fee]*[units])



Did I answer your question? Mark my post as a solution! Appreciate your Kudos!!
Dashboard of My Blogs !! YouTube Channel !! Connect on Linkedin

Proud to be a Super User!

Helpful resources

Announcements
secondImage

Congratulations!

We are excited to announce the Power BI Super Users!

Wave Release 2

Check out the updates in Power BI.

Overview of Power BI 2020 release wave 2!

Get Ready for Power BI Dev Camp

Get Ready for Power BI Dev Camp

Mark your calendars and join us for our next Power BI Dev Camp!.

secondImage

The largest Power BI virtual conference

100+ sessions, 100+ speakers, Product managers, MVPs, and experts. All about Power BI. Attend online or watch the recordings.