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

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

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
July PBI25 Carousel

Power BI Monthly Update - July 2025

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

Join our Fabric User Panel

Join our Fabric User Panel

This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.

June 2025 community update carousel

Fabric Community Update - June 2025

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

Top Solution Authors