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
CLCastroEn
Helper IV
Helper IV

Restar Valores por semana

Hola!

CLCastroEn_0-1633030830615.png

 

Tengo un gráfico  que tiene el el eje x las semanas y como valor el stock de seguridad.  Necesito que se vea en el gráfico la diferencia entre una semana y otra.

 

Por ejemplo. Semana 30 hay 399 y semana 31 hay 398. Entonces, necesito que en la semana 31 se vea el valor de la diferencia, es decir: -1. Asi sucesivamente.

 

Muchas gracias!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hay @Syndicate_Admin

Al principio, pruebe mi código para crear una tabla de fechas. Si usa weeknum, se confundirá a principios del próximo año.

Por ejemplo, 2020/12/31 y 2021/01/01 están en la misma semana, pero weeknum le mostrará 53 y 1. Eso es incorrecto y dificultará nuestro cálculo.

Tabla de fechas:

Date =
ADDCOLUMNS (
    CALENDARAUTO (),
    "Year", YEAR ( [Date] ),
    "Month", MONTH ( [Date] ),
    "Weeknum", WEEKNUM ( [Date], 2 ),
    "YearMonth",
        YEAR ( [Date] ) * 100
            + MONTH ( [Date] )
)

Agregar columnas calculadas:

ISO 8601 WeekNum = 
VAR _COUNT0 =
    CALCULATE (
        COUNTROWS ( 'Date' ),
        FILTER (
            'Date',
            'Date'[Year] = EARLIER ( 'Date'[Year] )
                && 'Date'[WeekNum] - 1 = 0
        )
    )
VAR _BASENUM1 =
    IF ( _COUNT0 < 7, 'Date'[WeekNum] - 1, 'Date'[WeekNum] )
VAR _ISO_8601_WeekNum =
    IF (
        WEEKDAY ( DATE ( 'Date'[Year] - 1, 01, 01 ) ) <> 1
            && 'Date'[Year] = 'Date'[Year]
            && _BASENUM1 = 0,
        WEEKNUM ( DATE ( MIN ( 'Date'[Year] ), 12, 31 ), 1 ) - 1,
        _BASENUM1
    )
RETURN
    _ISO_8601_WeekNum
ISO_Year = 
VAR _COUNT0 =
    CALCULATE (
        COUNTROWS ( 'Date' ),
        FILTER (
            'Date',
            'Date'[Year] = EARLIER ( 'Date'[Year] )
                && 'Date'[WeekNum] - 1 = 0
        )
    )
VAR _BASENUM1 =
    IF ( _COUNT0 < 7, 'Date'[WeekNum] - 1, 'Date'[WeekNum] )
RETURN
IF(_BASENUM1 = 0,'Date'[Year] -1,'Date'[Year])
ISO YearWeekNum = 'Date'[ISO_Year]*100+'Date'[ISO 8601 WeekNum]

Cree una relación entre la tabla de datos y esta tabla de fechas del calendario por columna de fechas.

Cree una medida como la siguiente.

Diff =
VAR _CurValue =
    CALCULATE ( SUM ( 'Sample'[Value] ) )
VAR _LastISOYearWeekNum =
    MAXX (
        FILTER (
            ALL ( 'Date' ),
            'Date'[ISO YearWeekNum] < MAX ( 'Date'[ISO YearWeekNum] )
        ),
        'Date'[ISO YearWeekNum]
    )
VAR _LastValue =
    CALCULATE (
        SUM ( 'Sample'[Value] ),
        FILTER ( ALL ( 'Date' ), 'Date'[ISO YearWeekNum] = _LastISOYearWeekNum )
    )
RETURN
    _CurValue - _LastValue

El resultado es el siguiente.

1.png

Saludos
Rico Zhou

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hay @Syndicate_Admin

Al principio, pruebe mi código para crear una tabla de fechas. Si usa weeknum, se confundirá a principios del próximo año.

Por ejemplo, 2020/12/31 y 2021/01/01 están en la misma semana, pero weeknum le mostrará 53 y 1. Eso es incorrecto y dificultará nuestro cálculo.

Tabla de fechas:

Date =
ADDCOLUMNS (
    CALENDARAUTO (),
    "Year", YEAR ( [Date] ),
    "Month", MONTH ( [Date] ),
    "Weeknum", WEEKNUM ( [Date], 2 ),
    "YearMonth",
        YEAR ( [Date] ) * 100
            + MONTH ( [Date] )
)

Agregar columnas calculadas:

ISO 8601 WeekNum = 
VAR _COUNT0 =
    CALCULATE (
        COUNTROWS ( 'Date' ),
        FILTER (
            'Date',
            'Date'[Year] = EARLIER ( 'Date'[Year] )
                && 'Date'[WeekNum] - 1 = 0
        )
    )
VAR _BASENUM1 =
    IF ( _COUNT0 < 7, 'Date'[WeekNum] - 1, 'Date'[WeekNum] )
VAR _ISO_8601_WeekNum =
    IF (
        WEEKDAY ( DATE ( 'Date'[Year] - 1, 01, 01 ) ) <> 1
            && 'Date'[Year] = 'Date'[Year]
            && _BASENUM1 = 0,
        WEEKNUM ( DATE ( MIN ( 'Date'[Year] ), 12, 31 ), 1 ) - 1,
        _BASENUM1
    )
RETURN
    _ISO_8601_WeekNum
ISO_Year = 
VAR _COUNT0 =
    CALCULATE (
        COUNTROWS ( 'Date' ),
        FILTER (
            'Date',
            'Date'[Year] = EARLIER ( 'Date'[Year] )
                && 'Date'[WeekNum] - 1 = 0
        )
    )
VAR _BASENUM1 =
    IF ( _COUNT0 < 7, 'Date'[WeekNum] - 1, 'Date'[WeekNum] )
RETURN
IF(_BASENUM1 = 0,'Date'[Year] -1,'Date'[Year])
ISO YearWeekNum = 'Date'[ISO_Year]*100+'Date'[ISO 8601 WeekNum]

Cree una relación entre la tabla de datos y esta tabla de fechas del calendario por columna de fechas.

Cree una medida como la siguiente.

Diff =
VAR _CurValue =
    CALCULATE ( SUM ( 'Sample'[Value] ) )
VAR _LastISOYearWeekNum =
    MAXX (
        FILTER (
            ALL ( 'Date' ),
            'Date'[ISO YearWeekNum] < MAX ( 'Date'[ISO YearWeekNum] )
        ),
        'Date'[ISO YearWeekNum]
    )
VAR _LastValue =
    CALCULATE (
        SUM ( 'Sample'[Value] ),
        FILTER ( ALL ( 'Date' ), 'Date'[ISO YearWeekNum] = _LastISOYearWeekNum )
    )
RETURN
    _CurValue - _LastValue

El resultado es el siguiente.

1.png

Saludos
Rico Zhou

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Syndicate_Admin
Administrator
Administrator

@Syndicate_Admin , Necesita una tabla de semanas o semanas de año independientes, con Rango en la semana del año.

Nueva columna en la columna Fecha o semana de Ywar

nuevas columnas
Fecha de inicio de la semana = 'Fecha'[Fecha]+-1*WEEKDAY('Fecha'[Fecha],2)+1
Fecha de fin de semana = 'Fecha'[Fecha]+ 7-1*WEEKDAY('Fecha'[Fecha],2)
Rango de la semana = RANKX(all('Date'),'Date'[Fecha de inicio de la semana],,ASC,Dense)
O
Rango de semana = RANKX(all('Date'),'Date'[Year Week],,ASC,Dense) //YYYYWW formato

Medidas
Esta semana = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]=max('Date'[Week Rank])))
Última semana = CALCULATE(sum('Table'[Qty]), FILTER(ALL('Date'),'Date'[Week Rank]=max('Date'[Week Rank])-1))

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.

Jan NL Carousel

Fabric Community Update - January 2025

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

Top Kudoed Authors