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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Sumar valores por condición de los meses anteriores

Hola a todos

Estoy intentando replicar esta lógica en Power BI. Tengo una columna "Tarifas" donde me gustaría sumar los valores en ella cuando la condición 'Banco' es Sí (Y). Pero cuando se cumple la condición quiero que sume 'Tarifas' para los meses anteriores cada vez que se cumple la condición.

fund-fees.PNG

En el Excel de arriba verá la celda E4 - SUM (C2: C4) para el Fondo 1. Así que, básicamente, en cada ocurrencia de Banked -"Y" entonces SUMA los valores de los meses anteriores.

¿Hay alguna manera de hacerlo en DAX o Power Query? Intenté esto, pero obviamente sólo trae el valor de nuevo para ese mes donde 'Banked' es Sí, por ejemplo, CALCULATE(SUM(Table1[FEES]), FILTER(Table1, Table1[BANKED] - "Y")) trae el valor FEES solo para ese mes.

Apreciamos a cualquiera que pueda ayudar.

saludos

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Esta es una medida mucho más simple que funciona en todas las circunstancias:

Measure = 
var __tableToIterateOver =
    filter(
        'Table',
        'Table'[BANKED] = "Y"
    )
var __amount = 
    SUMX(
        __tableToIterateOver,
        var __currentDate = 'Table'[Date]
        var __result =
            calculate(
            
                var __prevDateOfBankedStatus =
                    CALCULATE(
                        MAX( 'Table'[Date] ),
                        'Table'[BANKED] = "Y",
                        'Table'[Date] < __currentDate
                    )    
                var __output =
                    CALCULATE(
                        SUM( 'Table'[FEES] ),
                        __prevDateOfBankedStatus < 'Table'[Date],
                        'Table'[Date] <= __currentDate
                    )
                return
                    __output,

                // Leave only the filter on Fund.
                ALLEXCEPT( 'Table', 'Table'[Fund] )
            )
        return
            __result
    )
return
    __amount

Mejor

D

View solution in original post

13 REPLIES 13
Ashish_Mathur
Super User
Super User

Hola

¿Es justo decir que cada vez que hay una Y en la columna bancaria, debemos sumar las cifras en la columna de honorarios de los 3 meses terminados la fecha de la fila actual


Regards,
Ashish Mathur
http://www.ashishmathur.com
https://www.linkedin.com/in/excelenthusiasts/
Anonymous
Not applicable

Hola @Ashish_Mathur Sí que es correcto, pero puede ser para cualquier cantidad de meses.

@v-kelly-msft He intentado una variación de esto antes de publicar también, pero obtener el siguiente resultado:

fund-fees-2.PNG

Como puede ver, obtengo el total equivocado - el último valor debe ser 3 595 699 y no 1 453 554.

Anonymous
Not applicable

Esta es una medida mucho más simple que funciona en todas las circunstancias:

Measure = 
var __tableToIterateOver =
    filter(
        'Table',
        'Table'[BANKED] = "Y"
    )
var __amount = 
    SUMX(
        __tableToIterateOver,
        var __currentDate = 'Table'[Date]
        var __result =
            calculate(
            
                var __prevDateOfBankedStatus =
                    CALCULATE(
                        MAX( 'Table'[Date] ),
                        'Table'[BANKED] = "Y",
                        'Table'[Date] < __currentDate
                    )    
                var __output =
                    CALCULATE(
                        SUM( 'Table'[FEES] ),
                        __prevDateOfBankedStatus < 'Table'[Date],
                        'Table'[Date] <= __currentDate
                    )
                return
                    __output,

                // Leave only the filter on Fund.
                ALLEXCEPT( 'Table', 'Table'[Fund] )
            )
        return
            __result
    )
return
    __amount

Mejor

D

Anonymous
Not applicable

Hola @darlove muchas gracias por publicar su medida, sin embargo, no obtenga las cifras correctas que vienen a través como se ve a continuación:

fund-fees-3.PNG

su medida trae el total que es grande, pero no está sumando las tarifas en cuanto a lo que obtengo de la otra medida publicada por @v-kelly-msft . Lo estoy mirando más cerca para averiguarlo también

Anonymous
Not applicable

Ok, esto es mi culpa @darlove me perdí un signo de "a" aquí:

Anonymous
Not applicable

Parece que mi post anterior no pasó por @darlove -

Me perdí el signo de "a" en su medida publicada:

fund-fees-4.PNG

Su medida me da las cifras correctas:

fund-fees-5.PNG

Gracias por toda su ayuda! Muy apreciado

Fareed

Anonymous
Not applicable

Ahora puede ver inmediatamente lo eficiente que es escribir medidas CLEAR Y EASY TO UNDERSTANDING. Usted sería capaz de identificar cualquier error en poco tiempo y también hacer cambios en la lógica con bastante facilidad.

Compare esto con la primera medida que se le sirvió...

Mejor
D
Anonymous
Not applicable

@darlove gracias agradezco su opinión. He estado implementando conceptos similares al escribir mi código.

@v-kelly-msft también apreciamos su opinión, gracias de nuevo.

Salud

Fareed

v-kelly-msft
Community Support
Community Support

Hola @Fareed86 ,

1. Vaya al editor de consultas > agregar columna> columna de índice; (La columna se utilizará para el cálculo)

2. A continuación, cree una medida como se muestra a continuación:

Measure =
VAR a =
    FILTER (
        ALLSELECTED ( 'Table' ),
        'Table'[Date] <= MAX ( 'Table'[Date] )
            && 'Table'[FUND] = SELECTEDVALUE ( 'Table'[FUND] )
    )
VAR b =
    CALCULATE (
        COUNTROWS ( 'Table' ),
        FILTER (
            ALL ( 'Table' ),
            'Table'[BANKED] = "Y"
                && 'Table'[FUND] = MAX ( 'Table'[FUND] )
        )
    )
VAR _mindate =
    CALCULATE (
        MAXX ( ALLSELECTED ( 'Table' ), 'Table'[Date] ),
        FILTER (
            ALL ( 'Table' ),
            'Table'[Index] < MAX ( 'Table'[Index] )
                && 'Table'[BANKED] = "Y"
                && 'Table'[FUND] = SELECTEDVALUE ( 'Table'[FUND] )
        )
    )
VAR _multisum =
    SUMX (
        FILTER (
            ALL ( 'Table' ),
            'Table'[Date] <= MAX ( 'Table'[Date] )
                && 'Table'[Date] > _mindate
                && 'Table'[FUND] = SELECTEDVALUE ( 'Table'[FUND] )
                && 'Table'[BANKED] = "N"
        ),
        'Table'[FEES]
    )
RETURN
    IF (
        MAX ( 'Table'[BANKED] ) = "Y",
        IF (
            b = 1,
            SUMX ( a, 'Table'[FEES] ),
            IF ( b > 1, _multisum + MAX ( 'Table'[FEES] ), BLANK () )
        )
    )

Finalmente verá:

Annotation 2020-04-22 111532.png

Para el archivo .pbix relacionado, haga clic aquí.

Saludos
Kelly
¿Respondí a tu pregunta? ¡Marca mi puesto como solución!
Anonymous
Not applicable

@v-kelly-msft Tuve una buena relación calidad-precio en esto y todo funciona, gracias. Pero no entiendo la demostración Total, sólo cuenta en el contexto de la fila.

Hice algunas excavaciones y sé que hay problemas a veces con Medida Totales, y encontré este enlace https://community.powerbi.com/t5/Quick-Measures-Gallery/Measure-Totals-The-Final-Word/td-p/547907/

Ayudó hasta cierto punto, pero todavía no obtengo el Total correcto, como se puede ver:

fund-fees-1.PNG

¿Alguna idea? El total debe ser de 21.733.910

Hola @Fareed86 ,

Agregue una medida como se muestra a continuación:

_total = SUMX(FILTER('Table','Table'[Measure]<>BLANK()),'Table'[Measure])

Y verás:

Annotation 2020-04-23 082955.png

He modificado el archivo .pbix,pls haga clic aquí.

Saludos
Kelly
¿Respondí a tu pregunta? ¡Marca mi puesto como solución!
Anonymous
Not applicable

El código anterior es demasiado complejo y NO tiene que ser. Puede ser DEAD simple.

Espera un poco y te lo mostraré.

Mejor
D
Anonymous
Not applicable

@v-kelly-msft Wow, eso es increíble. Muchas gracias.

No habría pensado que sería este complejo para lograr en Power BI. Voy a diseccionar esto para entender completamente lo que está pasando.

Una cosa que noté es que el Total de la Medida no aparece en la parte inferior. ¿Hay alguna razón por la que eso suceda?

¡Gracias de nuevo!

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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