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

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Función DATEADD (DAX) para el año anterior por segmentación

Tengo un conjunto de datos que comienza en julio de 2023 y se actualiza cada mes. La última actualización es hasta noviembre de 2024. Diciembre de 2024 todavía tiene que llegar. Estoy usando la medida DATEADD para observar los promedios de clientes del año anterior para un período determinado en función del año o mes que el usuario final elija en una segmentación.

La función que estoy usando es:

Promedio del año anterior = CALCULATE(Customers[Average],DATEADD('Tabla de fechas'[Date],-1,YEAR)))

En general, esto me está dando lo que necesito. Cuando selecciono un mes específico en la segmentación, la función me da el promedio del año anterior para ese mes específico. Cuando selecciono un conjunto de meses, devuelve los promedios del año anterior para cada mes respectivo y los promedia juntos.

Ejemplo #1:

Selecciono Jul y Oct 2024 (amarillo) en la segmentación... Promedia los promedios de 2023 del año anterior para esos meses (azul). Todo está bien. Justo lo que estoy buscando.

Example1.png

Sin embargo, me encuentro con un problema cuando no se selecciona nada en la segmentación o selecciono todo 2024. En ambos escenarios, la función hace referencia y promedia colectivamente solo los meses del 23 de julio a noviembre de 2023 (amarillo) del año anterior. No incluye el promedio de diciembre de 2023, que luego devolvería el promedio completo del año 2023 (azul).

Ejemplo #2:

Example2.png

Supongo que esto se debe a que los datos de diciembre de 2024 aún no existen en el conjunto de datos y, por lo tanto, aún no hay una opción "Dic 2024" en el segmentador para hacer referencia a "Dic 2023".

Lo que me gustaría es que el usuario pueda conservar la funcionalidad en el Ejemplo # 1 (es decir, elegir diferentes meses y obtener los promedios del año anterior para esos meses).... pero también, en el Ejemplo #2, cuando seleccionan un año completo (como la casilla de verificación 2024), devuelve todo lo del año anterior. Básicamente, el azul.

Soy nuevo en Power BI y DAX, por lo que no estoy seguro de si esto se puede lograr con esta función.

Si no es así, ¿funcionaría mejor otra función o se puede aplicar alguna solución alternativa?

Cualquier idea es muy apreciada. ¡Gracias!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hola @Ikigai

Por favor, pruebe esto:

PreviousYear2 = 
VAR FullYear =
    CALCULATE (
        [Total Revenue],
        FILTER ( ALL ( Dates ), Dates[Year] = MAX ( Dates[Year] ) - 1 )
    )
VAR LastYear =
    CALCULATE ( [Total Revenue], DATEADD ( Dates[Date], -1, YEAR ) )
VAR MonthSelectedTest =
    --test if allselected months less than all months
    COUNTROWS ( ALLSELECTED ( Dates[Month Short] ) ) < COUNTROWS ( ALL ( Dates[Month Short] ) )  
RETURN
    --will return  the full last year if year if no period is selected
    IF ( MonthSelectedTest, LastYear, FullYear )

danextian_0-1733987022136.png

danextian_1-1733987046628.png

danextian_2-1733987062942.png

Se adjunta un ejemplo de pbix

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

Hola @Ikigai

Por favor, pruebe esto:

PreviousYear2 = 
VAR FullYear =
    CALCULATE (
        [Total Revenue],
        FILTER ( ALL ( Dates ), Dates[Year] = MAX ( Dates[Year] ) - 1 )
    )
VAR LastYear =
    CALCULATE ( [Total Revenue], DATEADD ( Dates[Date], -1, YEAR ) )
VAR MonthSelectedTest =
    --test if allselected months less than all months
    COUNTROWS ( ALLSELECTED ( Dates[Month Short] ) ) < COUNTROWS ( ALL ( Dates[Month Short] ) )  
RETURN
    --will return  the full last year if year if no period is selected
    IF ( MonthSelectedTest, LastYear, FullYear )

danextian_0-1733987022136.png

danextian_1-1733987046628.png

danextian_2-1733987062942.png

Se adjunta un ejemplo de pbix

¡Muchas gracias, danextian!

Esto funcionó perfectamente. Agradezco su ayuda y asistencia.

Syndicate_Admin
Administrator
Administrator

Hola @Ikigai - puedes modificar tu medida

Promedio del año anterior =
SI (
ISFILTERED('Tabla de fechas' [nombre del mes]),
-- Caso 1: Si se filtran los meses, use DATEADD para los respectivos meses del año anterior
CALCULATE(Clientes[Promedio], DATEADD('Tabla de fechas'[Fecha], -1, AÑO)),
-- Caso 2: Si no hay un filtro de mes específico, calcule el promedio completo del año anterior
CALCULAR(
Clientes[Promedio],
DATESBETWEEN(
'Tabla de fechas'[Fecha],
DATEADD(STARTOFYEAR('Tabla de fechas'[Fecha]), -1, AÑO),
DATEADD(ENDOFYEAR('Tabla de fechas'[Fecha]), -1, AÑO)
)
)
)

Pruebe la medida anterior. Conserva la capacidad de calcular meses específicos del año anterior cuando se seleccionan.
Garantiza que todo el año anterior se utilice para los cálculos cuando se selecciona el año completo o no se selecciona nada.

Hola Rajendrangole1,

Muchas gracias por su respuesta y asistencia.

Ingresé la medida modificada que proporcionó, pero desafortunadamente, sigo obteniendo el mismo resultado en la captura de pantalla Ejemplo # 2: aún puedo obtener promedios de meses anteriores cuando se selecciona, pero aún no obtengo el promedio del año completo de 2023 cuando no se selecciona segmentación o se marca 2024.

Volví a comprobarlo para asegurarme de que he introducido exactamente la medida modificada, pero sigo obteniendo el mismo resultado.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors