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

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Learn more

Reply
Syndicate_Admin
Administrator
Administrator

Cómo calcular el período entre semanas en Power BI

Tengo columna de la semana, a partir de esta semana necesito obtener el período .. Al igual que el período debe primero 4 semanas, luego las primeras 8 semanas, luego las primeras 12 semanas, luego las 16 semanas en la segmentación y este período debe pronosticarse semanalmente, es decir, cuando se ejecuta el ETL, debe mostrarse en función de las ejecuciones de ETL. ¿Alguna idea, Pease?

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

Gracias @bhanu_gautam , pero se muestra en la segmentación como se muestra a continuación, pero en lugar de esto, debe mostrar semanas como 202401
202402
202403
202404
Por favor, ayúdanos en esto

Bajigntrr_0-1719989426733.png

@Bajigntrr

Paso 1 : Crear una columna calculada para la semana del año

AñoSemana =
VAR Year = YEAR('Table'[Date]) -- Reemplace 'Table' con el nombre real de la tabla y 'Date' con la columna de fecha
VAR WeekNumber = WEEKNUM('Table'[Date], 2) -- 2 indica que la semana comienza el lunes
DEVOLUCIÓN
Año * 100 + NúmeroSemanal

Paso 2:- Crear períodos de columna calculados

Período =
VAR WeekNumber = WEEKNUM('Table'[Date], 2) -- 2 indica que la semana comienza el lunes
VAR AñoSemana = AÑO('Tabla'[Fecha]) * 100 + NúmeroSemanal
DEVOLUCIÓN
INTERRUPTOR(
TRUE(),
WeekNumber <= 4, FORMAT(YearWeek, "000000") & "01",
WeekNumber <= 8, FORMAT(YearWeek, "000000") & "02",
WeekNumber <= 12, FORMAT(YearWeek, "000000") & "03",
WeekNumber <= 16, FORMAT(YearWeek, "000000") & "04",
FORMATO (YearWeek, "000000") y "05"
)

Paso 3:-Cree una medida para la semana actual:-

Semana actual =
VAR HoyFecha = HOY()
VAR StartDate = MIN('Table'[Date]) -- Reemplace 'Table' con el nombre real de la tabla y 'Date' con la columna de fecha
DEVOLUCIÓN
DATEDIFF(FechaInicio, HoyFecha, SEMANA)

Paso 4: Crear una medida para categorizar las semanas actuales en períodos

da
Período actual =
VAR CurrentWeekNumber = [CurrentWeek]
VAR CurrentYear = AÑO(HOY())
VAR CurrentYearWeek = CurrentYear * 100 + CurrentWeekNumber
DEVOLUCIÓN
INTERRUPTOR(
TRUE(),
CurrentWeekNumber <= 4, FORMAT(CurrentYearWeek, "000000") & "01",
CurrentWeekNumber <= 8, FORMAT(CurrentYearWeek, "000000") & "02",
CurrentWeekNumber <= 12, FORMAT(CurrentYearWeek, "000000") & "03",
CurrentWeekNumber <= 16, FORMAT(CurrentYearWeek, "000000") & "04",
FORMAT(CurrentYearWeek, "000000") y "05"
)

Paso 5: Usar el punto en la segmentación

Actualizado según su mensaje

Dado que ya tiene una columna con el año y el número de semana (llamémosla yearweeknum), puede ajustar las fórmulas de DAX para usar esta columna directamente. A continuación, se muestra cómo puede modificar las expresiones DAX para clasificar los períodos en función de la columna yearweeknum y actualizarlos dinámicamente en función de la ejecución de ETL.

Paso 1 para la columna calculada

Período =
VAR YearWeekNum = 'Table'[yearweeknum] -- Reemplace 'Table' con el nombre real de su tabla
DEVOLUCIÓN
INTERRUPTOR(
TRUE(),
YearWeekNum <= 202404, "202401",
YearWeekNum <= 202408, "202402",
YearWeekNum <= 202412, "202403",
YearWeekNum <= 202416, "202404",
"Más allá de 202416"
)

Paso 2: - medir para calcular la semana actual

Semana actual =
VAR HoyFecha = HOY()
VAR StartDate = MIN('Table'[Date]) -- Reemplace 'Table' con el nombre real de la tabla y 'Date' con la columna de fecha
DEVOLUCIÓN
DATEDIFF(FechaInicio, HoyFecha, SEMANA)

Paso 3:-

Período actual =
VAR CurrentWeekNumber = [CurrentWeek]
VAR CurrentYear = AÑO(HOY())
VAR CurrentYearWeekNum = CurrentYear * 100 + CurrentWeekNumber
DEVOLUCIÓN
INTERRUPTOR(
TRUE(),
CurrentYearWeekNum <= 202404, "202401",
CurrentYearWeekNum <= 202408, "202402",
CurrentYearWeekNum <= 202412, "202403",
CurrentYearWeekNum <= 202416, "202404",
"Más allá de 202416"
)

Pero Bhanu, si selecciona el período 1 en la segmentación, entonces la segmentación debería mostrar las primeras 4 semanas como 201401, 202402,202403,202403
entonces el período 2 debe ser de 8 semanas como 202401 a 202408
entonces el período 3 debería ser de 12 semanas, como 202401 a 202412
entonces el período 4 debe ser de 16 semanas como 202401 a 202416 .. Esta segmentación de períodos debe ser dinámica cuando se ejecuta el ETL .. por favor ayúdame a esto

Syndicate_Admin
Administrator
Administrator

Hola @Bajigntrr : cree una nueva tabla con fecha en el modelo, que puede crear mediante DAX.

DateTable =
ADDCOLUMNS (
CALENDARIO ( FECHA ( 2023, 1, 1 ), FECHA ( 2025, 12, 31 ) ),
"Año", AÑO ( [Fecha] ),
"Mes", MES ( [Fecha] ),
"Número de semana", WEEKNUM ( [Fecha] )
)

Cree una medida para determinar dinámicamente la semana actual en función de

Semana actual =
WEEKNUM(HOY(), 1)

rajendraongole1_0-1719988744725.png

Crear una medida que clasifique dinámicamente las semanas en período

Período actual =
VAR CurrentWeek = [Semana actual]
DEVOLUCIÓN
INTERRUPTOR(
TRUE(),
CurrentWeek <= 4, "Primeras 4 semanas",
CurrentWeek <= 8, "Primeras 8 semanas",
CurrentWeek <= 12, "Primeras 12 semanas",
CurrentWeek <= 16, "Primeras 16 semanas",
"Más allá de las 16 semanas"
)

¿He respondido a tu pregunta? ¡Marca mi publicación como una solución! ¡Esto ayudará a otros en el foro!
¡Agradezco sus felicitaciones!

Syndicate_Admin
Administrator
Administrator

@Bajigntrr , puede lograr esto con una combinación de columna calculada y medidas

Cree una columna calculada en la tabla que contenga la semana para clasificarla en períodos

Dax
Período =
VAR WeekNumber = 'Table'[Week] -- Reemplace 'Table' con el nombre real de su tabla
DEVOLUCIÓN
INTERRUPTOR(
TRUE(),
WeekNumber <= 4, "Primeras 4 semanas",
WeekNumber <= 8, "Primeras 8 semanas",
WeekNumber <= 12, "Primeras 12 semanas",
WeekNumber <= 16, "Primeras 16 semanas",
"Más allá de las 16 semanas"
)

Para asegurarse de que los períodos se actualizan dinámicamente sobre la base de la ejecución de ETL, cree una medida

Semana actual =
VAR HoyFecha = HOY()
VAR StartDate = MIN('Table'[Date]) -- Reemplace 'Table' con el nombre real de la tabla y 'Date' con la columna de fecha
DEVOLUCIÓN
DATEDIFF(FechaInicio, HoyFecha, SEMANA)

Crear una medida más para categorizar las semanas actuales en períodos

Dax
Período actual =
VAR CurrentWeekNumber = [CurrentWeek]
DEVOLUCIÓN
INTERRUPTOR(
TRUE(),
CurrentWeekNumber <= 4, "Primeras 4 semanas",
CurrentWeekNumber <= 8, "Primeras 8 semanas",
CurrentWeekNumber <= 12, "Primeras 12 semanas",
CurrentWeekNumber <= 16, "Primeras 16 semanas",
"Más allá de las 16 semanas"
)

Y período de uso en la cortadora

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.