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

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
Syndicate_Admin
Administrator
Administrator

% de cambio en las columnas de año seleccionadas por el usuario

Hola a todos

¡Póster por primera vez! Agradecería cualquier ayuda que pueda darme con esta pregunta...

Necesito crear una matriz dinámica y un gráfico de líneas que muestre el cambio porcentual en las columnas del año seleccionado. Ejemplo a continuación.

Hay 10 años en el informe y un usuario puede seleccionar cualquier combinación de años. No es necesario que los años seleccionados sean contiguos, sino que se muestran en orden (de izquierda a derecha). Si un usuario agrega más años, la tabla se vuelve a calcular para reflejar todos los cambios porcentuales posibles. Si solo se selecciona 1 año, verá una tabla o gráfico en blanco. Creo que esto significa que una tabla de fechas puede no ser apropiada, ya que quiero que el cálculo funcione en años no contiguos.

El resultado que estoy buscando es exactamente el mismo que si usaras una tabla dinámica para mostrar % de diferencia desde (anterior).

Así que a partir de esto:

Categoría202020222023
A405379338089411576
B263250229064279059
C198641103715044
D9030743171125443
E305931760029115
Total general809393638961860237

Quiero esto:

Categoría202020222023
A -17%22%
B -13%22%
C -44%36%
D -52%191%
E -42%65%
Total general -21%35%

Y esto:

ChrisIrvin_0-1701823352103.png

Encantado de proporcionar más información.

¡Muchas gracias!

Chris.

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

@ChrisIrvin

No estoy muy seguro de lo que quieres decir. ¿Puedes mostrarme un ejemplo?

Syndicate_Admin
Administrator
Administrator

@ChrisIrvin

Espero haber entendido bien. ¿Ayuda esto?

Change = 
VAR _Curr = [Amt]
VAR _Prev =
    CALCULATE(
        [Amt],
        OFFSET(
            -1,
            ALLSELECTED( 'Unpivot'[Year] ),
            ORDERBY( 'Unpivot'[Year] )
        )
    )
VAR _Logic =
    IF(
        NOT ISBLANK( _Prev ),
        _Curr - _Prev
    )
RETURN
    _Logic
Syndicate_Admin
Administrator
Administrator

Hola, esa solución está funcionando muy bien. Sin embargo, hay una mejora que me gustaría, si es posible: ¿se puede mostrar el primer año también como una columna en blanco? Esto es necesario porque tener la capacidad de seleccionar cualquier combinación de años significa que el año más antiguo podría no ser el año anterior al primero que se muestra. ¡Espero que tenga sentido!
Gracias.

Syndicate_Admin
Administrator
Administrator

¡Perfecto! ¡Gracias! ¡Muy apreciado! 😎

Syndicate_Admin
Administrator
Administrator

Este es un buen uso de OFFSET. Corto, fácil de entender y rápido.

Syndicate_Admin
Administrator
Administrator

@ChrisIrvin

Tal vez intente algo como esto.

Pct Chg = 
VAR _CurrentSelected = [Total Value]
VAR _PreviousSelected =
    CALCULATE(
        [Total Value],
        OFFSET(
            -1,
            ALLSELECTED( 'Unpivot'[Year] ),
            ORDERBY( 'Unpivot'[Year] )
        )
    )
VAR _Logic =
    DIVIDE(
        _CurrentSelected - _PreviousSelected,
        _PreviousSelected
    )
RETURN
    _Logic

Syndicate_Admin
Administrator
Administrator

No voy a mentir... Esto me llevó mucho más tiempo de lo que probablemente debería haber hecho. Pero fue un poco complicado. Necesita una tabla de dimensiones de fecha. En mi humilde opinión, si existe una fecha en cualquier parte del modelo, siempre debe tener una tabla de dimensiones de fecha en Power BI.

CoreyP_0-1701835209032.png

Delta = 
VAR _currenttotal = [Total Value]
VAR _previoustotal = 
CALCULATE( 
    [Total Value] , 
        'Date'[Date].[Year] = 
            MAXX( 
                FILTER( 
                    CALCULATETABLE( 
                        VALUES( 'Date'[Date].[Year] ) , 
                        ALLSELECTED('Date'[Date].[Year] ) 
                                ) ,
                        'Date'[Date].[Year] < MAX( 'Date'[Date].[Year] ) 
                        ) , 
                'Date'[Date].[Year] 
                )
            )
VAR _delta = _currenttotal - _previoustotal
VAR _pct = DIVIDE( _delta , _previoustotal , BLANK() )

RETURN
_pct

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.