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

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Construir columna con promedio de los últimos 12 meses

Hola a todos
Tengo una tabla a continuación:

Rick_ferreira_0-1617984040271.png


Necesito crear una columna, usando dax con avarage de los últimos 12 meses, por ejemplo:

Rick_ferreira_1-1617984095662.png

Básicamente, la columna avg es el avarage de los últimos 12 meses.

¿Puede alguien ayudarme?
gracias

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

No @Rick_ferreira

Si hay una tabla de fechas en el modelo, puede probar esta columna Calculado.

Avrage_last_12_month =

CALCULATE (

    AVERAGE ( 'Table'[value] ),

    DATESINPERIOD ( 'calendar'[Date], 'Table'[Date], -12, MONTH ),

    FILTER ( ALL ( 'Table' ), 'Table'[Date] <= EARLIER ( 'Table'[Date] ) )

)

Si no tiene tabla de fechas, puede probar esta columna Calculado.

Avg last 12 months =

VAR day =

    YEAR (

        CALCULATE (

            SELECTEDVALUE ( 'Table'[Date] ),

            FILTER ( 'Table', 'Table'[Date] = MIN ( 'Table'[Date] ) )

        )

    )

VAR month_count =

    IF (

        'Table'[Date] >= DATE ( day, 12, 31 ),

        12,

        CALCULATE (

            COUNT ( 'Table'[Date] ),

            FILTER ( ALL ( 'Table' ), 'Table'[Date] <= EARLIER ( 'Table'[Date] ) )

        )

    )

VAR cur_month =

    MONTH ( 'Table'[Date] )

VAR cur_year =

    YEAR ( 'Table'[Date] )

VAR sum_last_12_month =

    IF (

        cur_month < 12,

        CALCULATE (

            SUM ( 'Table'[value] ),

            FILTER (

                ALL ( 'Table' ),

                (

                    YEAR ( 'Table'[Date] ) = cur_year

                        && MONTH ( 'Table'[Date] ) <= cur_month

                )

                    || (

                        YEAR ( 'Table'[Date] ) = cur_year - 1

                            && MONTH ( 'Table'[Date] ) > cur_month

                    )

            )

        ),

        CALCULATE (

            SUM ( 'Table'[value] ),

            FILTER ( ALL ( 'Table' ), YEAR ( 'Table'[Date] ) = cur_year )

        )

    )

RETURN

    sum_last_12_month/month_count

El resultado tiene este aspecto:

v-cazheng-msft_0-1618214578213.png

Para obtener más información, puede consultar el archivo pbix adjunto.

Saludos

Caiyun Zheng

¿Esa es la respuesta que estás buscando? 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

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

No @Rick_ferreira

Si hay una tabla de fechas en el modelo, puede probar esta columna Calculado.

Avrage_last_12_month =

CALCULATE (

    AVERAGE ( 'Table'[value] ),

    DATESINPERIOD ( 'calendar'[Date], 'Table'[Date], -12, MONTH ),

    FILTER ( ALL ( 'Table' ), 'Table'[Date] <= EARLIER ( 'Table'[Date] ) )

)

Si no tiene tabla de fechas, puede probar esta columna Calculado.

Avg last 12 months =

VAR day =

    YEAR (

        CALCULATE (

            SELECTEDVALUE ( 'Table'[Date] ),

            FILTER ( 'Table', 'Table'[Date] = MIN ( 'Table'[Date] ) )

        )

    )

VAR month_count =

    IF (

        'Table'[Date] >= DATE ( day, 12, 31 ),

        12,

        CALCULATE (

            COUNT ( 'Table'[Date] ),

            FILTER ( ALL ( 'Table' ), 'Table'[Date] <= EARLIER ( 'Table'[Date] ) )

        )

    )

VAR cur_month =

    MONTH ( 'Table'[Date] )

VAR cur_year =

    YEAR ( 'Table'[Date] )

VAR sum_last_12_month =

    IF (

        cur_month < 12,

        CALCULATE (

            SUM ( 'Table'[value] ),

            FILTER (

                ALL ( 'Table' ),

                (

                    YEAR ( 'Table'[Date] ) = cur_year

                        && MONTH ( 'Table'[Date] ) <= cur_month

                )

                    || (

                        YEAR ( 'Table'[Date] ) = cur_year - 1

                            && MONTH ( 'Table'[Date] ) > cur_month

                    )

            )

        ),

        CALCULATE (

            SUM ( 'Table'[value] ),

            FILTER ( ALL ( 'Table' ), YEAR ( 'Table'[Date] ) = cur_year )

        )

    )

RETURN

    sum_last_12_month/month_count

El resultado tiene este aspecto:

v-cazheng-msft_0-1618214578213.png

Para obtener más información, puede consultar el archivo pbix adjunto.

Saludos

Caiyun Zheng

¿Esa es la respuesta que estás buscando? Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Syndicate_Admin
Administrator
Administrator

Echa un vistazo a este artículo de SQLBI

https://www.sqlbi.com/articles/rolling-12-months-average-in-dax/

Esto ayudaría a resolver su problema

saludos

Sayali

Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a otros a encontrarlo más rápidamente.

gracias

Necesito crear una columna en la tabla, no medir.
Este artículo muestra la medida.

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Power BI Monthly Update - May 2024

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