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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

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
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

Power BI Carousel June 2024

Power BI Monthly Update - June 2024

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

PBI_Carousel_NL_June

Fabric Community Update - June 2024

Get the latest Fabric updates from Build 2024, key Skills Challenge voucher deadlines, top blogs, forum posts, and product ideas.

Top Solution Authors
Top Kudoed Authors