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

Medida para el año anterior con tabla de fechas personalizada

Ahí dentro,

Tengo una mesa con este año ventas y ventas del año pasado en la que quiero filtrar tanto en Mes como en Semana. Sin embargo, las semanas se basan en los números de semana ISO y quiero comparar los números de la semana ISO con el año anterior.

Para su información a continuación una representación de los números de la semana ISO en la tabla de fechas.

FechaSemana normalNúmero de semana ISOMes
1-1-20211531
2-1-20211531
3-1-20201531
4-1-2020111
5-1-2020111

En 2020 parece:

Fechanúmero de semana normalNúmero de semana IsoMes
1-1-2020111
2-1-2020111
3-1-2020111
4-1-2020111

Así que si selecciono la semana ISO número 1 quiero comparar las fechas que son en la semana 1 del año pasado.

Afortunadamente encontré la fórmula a continuación que hace que perfectamente

Ventas El año pasado ?
VAR CurrentWeek - SELECTEDVALUE( 'Calendario'[Número de semana ISO] )
VAR CurrentYear - SELECTEDVALUE( 'Calendario'[Año] )

devolución
CALCULATE( [Ventas],
FILTRO( ALL( 'Calendario' ),
'Calendar'[Número de semana ISO] á CurrentWeek && 'Calendar'[Year] - CurrentYear - 1))
Sin embargo, esta medida no funciona si selecciono un Mes. Puedo entender por qué, pero no sé cómo incorporar los números de mes normal en esta medida.

Espero que puedas ayudarme.



1 ACCEPTED SOLUTION

No @BobKoenen,

Modifique la medida como se indica a continuación:

Sales Last year =
VAR CurrentWeek =
    SELECTEDVALUE ( 'Calendar'[ISO Week Number] )
VAR CurrentYear =
    SELECTEDVALUE ( 'Calendar'[Year] )
VAR currentMonth =
    SELECTEDVALUE ( 'Calendar'[MonthNum] )
RETURN
    IF (
        NOT ( ISFILTERED ( 'Calendar'[Year] ) ),
        "You didnt select a year",
        IF (
            ISFILTERED ( 'Calendar'[Year] ),
            IF (
                ISFILTERED ( 'Calendar'[ISO Week Number] )
                    && NOT ( ISFILTERED ( 'Calendar'[MonthNum] ) ),
                CALCULATE (
                    [Sales],
                    FILTER (
                        ALL ( 'Calendar' ),
                        'Calendar'[ISO Week Number] = CurrentWeek
                            && 'Calendar'[Year] = CurrentYear - 1
                    )
                ),
                IF (
                    ISFILTERED ( 'Calendar'[ISO Week Number] )
                        && ISFILTERED ( 'Calendar'[MonthNum] ),
                    CALCULATE (
                        [Sales],
                        FILTER (
                            ALL ( 'Calendar' ),
                            'Calendar'[ISO Week Number] = CurrentWeek
                                && 'Calendar'[Year] = CurrentYear - 1
                                && 'Calendar'[MonthNum] = currentMonth
                        )
                    ),
                    IF (
                        NOT ( ISFILTERED ( 'Calendar'[ISO Week Number] ) )
                            && ISFILTERED ( 'Calendar'[MonthNum] ),
                        CALCULATE (
                            [Sales],
                            FILTER (
                                ALL ( 'Calendar' ),
                                'Calendar'[MonthNum] = currentMonth
                                    && 'Calendar'[Year] = CurrentYear - 1
                            )
                        ),
                        IF (
                            NOT ( ISFILTERED ( 'Calendar'[ISO Week Number] ) )
                                && NOT ( ISFILTERED ( 'Calendar'[MonthNum] ) ),
                            CALCULATE (
                                [Sales],
                                FILTER ( ALL ( 'Calendar' ), 'Calendar'[Year] = CurrentYear - 1 )
                            ),
                            BLANK ()
                        )
                    )
                )
            )
        )
    )

Y verás:

v-kelly-msft_0-1611279526864.png

v-kelly-msft_1-1611279559888.png

Para el archivo .pbix relacionado, pls ver adjunto.

Saludos
Kelly

¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

View solution in original post

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

No @BobKoenen,

Basado en su descripción, no puedo reproducir competencia su senario, ¿podría pls proporcionar algunos datos de muestra con la salida esperada para una prueba?

v-kelly-msft_0-1611039293922.png

Saludos
Kelly

¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

Hola Kelly. Consulte el archivo adjunto. Espero que puedas abrirlo.

El problema es que cuando selecciono o mes o sólo un año la medida actual no da ningún valor. Quiero que esta medida también funcione al seleccionar un mes y un año y solo un año.

https://koenenenco-my.sharepoint.com/:u:/g/personal/b_kessels_koenenenco_nl/EUfA0ensLQNDhShy7c_lV_cB...

No @BobKoenen,

Después de comprobar, si ha seleccionado un año, entonces no verá un error, por lo que modificar su medida de la siguiente manera:

Sales Last year = 
VAR CurrentWeek = SELECTEDVALUE( 'Calendar'[ISO Week Number] )
VAR CurrentYear = SELECTEDVALUE( 'Calendar'[Year] )

RETURN
IF(ISFILTERED('Calendar'[Year]),
CALCULATE( [Sales],
FILTER( ALL( 'Calendar' ),
        'Calendar'[ISO Week Number] = CurrentWeek && 'Calendar'[Year] = CurrentYear - 1)),
        CALCULATE( [Sales],
FILTER( ALL( 'Calendar' ),
        'Calendar'[ISO Week Number] = CurrentWeek && 'Calendar'[Year] =YEAR(TODAY()) - 1)))+0

Y verás:

v-kelly-msft_0-1611108759573.png

Para el archivo .pbix relacionado, pls ver adjunto.

Saludos
Kelly

¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

@v-kelly-msft Lo siento que no soy lo suficientemente claro, pero esta medida todavía no me da un resultado cuando sólo seleccionar un mes.

También quiero ventas del año anterior cuando la selección solo un Mes y un Año:

BobKoenen_1-1611244501867.png

No @BobKoenen,

Modifique la medida como se indica a continuación:

Sales Last year =
VAR CurrentWeek =
    SELECTEDVALUE ( 'Calendar'[ISO Week Number] )
VAR CurrentYear =
    SELECTEDVALUE ( 'Calendar'[Year] )
VAR currentMonth =
    SELECTEDVALUE ( 'Calendar'[MonthNum] )
RETURN
    IF (
        NOT ( ISFILTERED ( 'Calendar'[Year] ) ),
        "You didnt select a year",
        IF (
            ISFILTERED ( 'Calendar'[Year] ),
            IF (
                ISFILTERED ( 'Calendar'[ISO Week Number] )
                    && NOT ( ISFILTERED ( 'Calendar'[MonthNum] ) ),
                CALCULATE (
                    [Sales],
                    FILTER (
                        ALL ( 'Calendar' ),
                        'Calendar'[ISO Week Number] = CurrentWeek
                            && 'Calendar'[Year] = CurrentYear - 1
                    )
                ),
                IF (
                    ISFILTERED ( 'Calendar'[ISO Week Number] )
                        && ISFILTERED ( 'Calendar'[MonthNum] ),
                    CALCULATE (
                        [Sales],
                        FILTER (
                            ALL ( 'Calendar' ),
                            'Calendar'[ISO Week Number] = CurrentWeek
                                && 'Calendar'[Year] = CurrentYear - 1
                                && 'Calendar'[MonthNum] = currentMonth
                        )
                    ),
                    IF (
                        NOT ( ISFILTERED ( 'Calendar'[ISO Week Number] ) )
                            && ISFILTERED ( 'Calendar'[MonthNum] ),
                        CALCULATE (
                            [Sales],
                            FILTER (
                                ALL ( 'Calendar' ),
                                'Calendar'[MonthNum] = currentMonth
                                    && 'Calendar'[Year] = CurrentYear - 1
                            )
                        ),
                        IF (
                            NOT ( ISFILTERED ( 'Calendar'[ISO Week Number] ) )
                                && NOT ( ISFILTERED ( 'Calendar'[MonthNum] ) ),
                            CALCULATE (
                                [Sales],
                                FILTER ( ALL ( 'Calendar' ), 'Calendar'[Year] = CurrentYear - 1 )
                            ),
                            BLANK ()
                        )
                    )
                )
            )
        )
    )

Y verás:

v-kelly-msft_0-1611279526864.png

v-kelly-msft_1-1611279559888.png

Para el archivo .pbix relacionado, pls ver adjunto.

Saludos
Kelly

¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!

Syndicate_Admin
Administrator
Administrator

@BobKoenen , Compruebe si esto puede funcionar

Ventas El año pasado ?
VAR CurrentWeek á maxx(allselected('Calendar'[), 'Calendar'[ISO Week Number] )
VAR CurrentYear á maxx(allselected('Calendar'[), 'Calendar'[Year] )

devolución
CALCULATE( [Ventas],
FILTRO( ALL( 'Calendario' ),
'Calendar'[Número de semana ISO] á CurrentWeek && 'Calendar'[Year] - CurrentYear - 1))

@amitchandak

Desgraciadamente no. Seleccionar un mes da resultados extraños. Semanas todavía funciona bien. ¿Tienes otra idea?

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

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

MayPowerBICarousel1

Power BI Monthly Update - May 2024

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