Cree una tabla de calendario personalizada con información para fechas personalizadas

Un usuario Pregunto ✅

Apssawhney

Hola, equipo,

¿Puede ayudarme a crear una tabla de calendario que tenga todas las fechas, pero pocas fechas por mes están marcadas en función de las siguientes condiciones?

1. Lanzamiento del parche de Microsoft (segundo martes de cada mes)
2. La aplicación de parches en servidores que no son de producción comienza el jueves (después del segundo martes del mes) a las 8 pm PST.
3. La aplicación de parches en las estaciones de trabajo para las máquinas UAT comienza el viernes (después del segundo martes del mes) a la 1 PM CT.
4. El parcheo de los servidores de producción comienza el viernes (después del tercer martes del mes) a las 8 PM PST.
5. El parcheo de producción de las estaciones de trabajo comienza el viernes (después del tercer martes del mes) a las 6 p.m. CT
6. Período de congelación (del 25 al 30 de diciembre)

La tabla se vería algo así:

Fecha Actividad
01/01/2021
01/02/2021
01/03/2021
01/04/2021
01/05/2021
01/06/2021
01/07/2021
01/08/2021
01/09/2021
01/10/2021
01/11/2021 Lanzamiento del parche de Microsoft
01/12/2021
13/01/2021 Parcheo de servidores que no son de producción
14/01/2021 Parcheo de estaciones de trabajo para máquinas UAT
15/01/2021
16/01/2021
17/01/2021
18/01/2021
19/01/2021
20/01/2021
21/01/2021 Parcheado de servidores de producción / Parcheado de producción de estaciones de trabajo
22/01/2021 Parcheo de servidores de producción / Parcheo de producción de estaciones de trabajo
23/01/2021 Parcheado de servidores de producción / Parcheado de producción de estaciones de trabajo
24/01/2021
25/01/2021
26/01/2021
27/01/2021
28/01/2021
29/01/2021

¿Alguien puede ayudar aquí?

StefanoGrimaldi

Oye,

StefanoGrimaldi_0-1616687288772.png

Columna =
var weeknum1 = (1 + WEEKNUM (‘Tabla'[Date] ) -WEEKNUM (STARTOFMONTH (‘Tabla'[Date]))) // encuentra el número de semana
var daynumber = WEEKDAY (‘Tabla'[Date], 2) // martes en este formato su número 2
var out = IF (AND (weeknum1 = 2, daynumber = 2), «Microsoft Patch lanzado», IF (AND (weeknum1 = 2, daynumber = 4), «Non-prod servers patching», IF (AND (weeknum1 = 2 , daynumber = 5), «Parcheo de estaciones de trabajo para máquinas UAT», «»)))

volver
con esta lógica, puede agregar los otros parámetros para obtener el resultado deseado, pero básicamente la variable 2 obtiene el número exacto de la semana y el día de la semana y el mes weeknum
si esto ayudó, dé algunas felicitaciones, y si se resuelve, su signo de interrogación como respuesta para que otros la encuentren.

Hola @Apssawhney,

¿Cómo se consigue esto?


Fecha Actividad
21/01/2021 Parcheo de servidores de producción / Parcheo de producción de estaciones de trabajo
22/01/2021 Parcheado de servidores de producción / Parcheado de producción de estaciones de trabajo
23/01/2021 Parcheo de servidores de producción / Parcheo de producción de estaciones de trabajo

Cuando creo una columna basada en su lógica, el resultado es el siguiente:

DAX:

Activity =
VAR YearWeek_ =
    WEEKNUM ( [Date], 2 )
VAR StartofMonthWeek_ =
    WEEKNUM ( STARTOFMONTH ( 'Calendar (DAX)'[Date] ), 2 )
VAR MonthWeek_ = YearWeek_ - StartofMonthWeek_ + 1
VAR WeekDay_ =
    WEEKDAY ( [Date], 2 )
VAR Month_ =
    MONTH ( [Date] )
VAR Day_ =
    DAY ( [Date] )
RETURN
    SWITCH (
        TRUE (),
        MonthWeek_ = 2
            && WeekDay_ = 2, "Microsoft Patch released",
        MonthWeek_ = 2
            && WeekDay_ = 4, "Non-prod servers patching",
        MonthWeek_ = 2
            && WeekDay_ = 5, "Work stations patching for UAT Machines",
        MonthWeek_ = 3
            && WeekDay_ = 5, "Prod servers patching / Work stations production patching",
        Month_ = 12
            && Day_ >= 25
            && Day_ <= 30, "Freeze Period"
    )

actividad - DAX.JPG

METRO:

let
    StartDate = #date(2021,1,1),
    EndDate = #date(2021,12,31),
    DayCount = Duration.Days(Duration.From( EndDate - StartDate )),
    Source = List.Dates(StartDate,DayCount,#duration(1,0,0,0)),
    TableFromList = Table.FromList(Source, Splitter.SplitByNothing()),   
    ChangedType = Table.TransformColumnTypes(TableFromList,{{"Column1", type date}}),
    RenamedColumns = Table.RenameColumns(ChangedType,{{"Column1", "Date"}}),
    #"Added Custom" = Table.AddColumn(RenamedColumns, "Activity", each let 
MonthWeek_ = Date.WeekOfMonth ([Date],1),
WeekDay_ = Date.DayOfWeek ( [Date], 2 ),
Month_ = Date.Month([Date]),
Day_ = Date.DayOfWeek([Date],1)
in 
if MonthWeek_ = 2
then if WeekDay_ = 2 then "Microsoft Patch released" else if WeekDay_ = 4 then "Non-prod servers patching" else if WeekDay_ = 5 then "Work stations patching for UAT Machines" else null 
else if MonthWeek_ = 3 and WeekDay_ = 5 then "Prod servers patching / Work stations production patching" else if Month_ = 12 and Day_ >= 25 and Day_ <= 30 then "Freeze Period" else null)
in
    #"Added Custom"

actividad - M.JPG

Atentamente,

Icey

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Hola @Apssawhney,

¿Cómo se consigue esto?


Fecha Actividad
21/01/2021 Parcheado de servidores de producción / Parcheado de producción de estaciones de trabajo
22/01/2021 Parcheado de servidores de producción / Parcheado de producción de estaciones de trabajo
23/01/2021 Parcheo de servidores de producción / Parcheo de producción de estaciones de trabajo

Cuando creo una columna basada en su lógica, el resultado es el siguiente:

DAX:

Activity =
VAR YearWeek_ =
    WEEKNUM ( [Date], 2 )
VAR StartofMonthWeek_ =
    WEEKNUM ( STARTOFMONTH ( 'Calendar (DAX)'[Date] ), 2 )
VAR MonthWeek_ = YearWeek_ - StartofMonthWeek_ + 1
VAR WeekDay_ =
    WEEKDAY ( [Date], 2 )
VAR Month_ =
    MONTH ( [Date] )
VAR Day_ =
    DAY ( [Date] )
RETURN
    SWITCH (
        TRUE (),
        MonthWeek_ = 2
            && WeekDay_ = 2, "Microsoft Patch released",
        MonthWeek_ = 2
            && WeekDay_ = 4, "Non-prod servers patching",
        MonthWeek_ = 2
            && WeekDay_ = 5, "Work stations patching for UAT Machines",
        MonthWeek_ = 3
            && WeekDay_ = 5, "Prod servers patching / Work stations production patching",
        Month_ = 12
            && Day_ >= 25
            && Day_ <= 30, "Freeze Period"
    )

actividad - DAX.JPG

METRO:

let
    StartDate = #date(2021,1,1),
    EndDate = #date(2021,12,31),
    DayCount = Duration.Days(Duration.From( EndDate - StartDate )),
    Source = List.Dates(StartDate,DayCount,#duration(1,0,0,0)),
    TableFromList = Table.FromList(Source, Splitter.SplitByNothing()),   
    ChangedType = Table.TransformColumnTypes(TableFromList,{{"Column1", type date}}),
    RenamedColumns = Table.RenameColumns(ChangedType,{{"Column1", "Date"}}),
    #"Added Custom" = Table.AddColumn(RenamedColumns, "Activity", each let 
MonthWeek_ = Date.WeekOfMonth ([Date],1),
WeekDay_ = Date.DayOfWeek ( [Date], 2 ),
Month_ = Date.Month([Date]),
Day_ = Date.DayOfWeek([Date],1)
in 
if MonthWeek_ = 2
then if WeekDay_ = 2 then "Microsoft Patch released" else if WeekDay_ = 4 then "Non-prod servers patching" else if WeekDay_ = 5 then "Work stations patching for UAT Machines" else null 
else if MonthWeek_ = 3 and WeekDay_ = 5 then "Prod servers patching / Work stations production patching" else if Month_ = 12 and Day_ >= 25 and Day_ <= 30 then "Freeze Period" else null)
in
    #"Added Custom"

actividad - M.JPG

Atentamente,

Icey

Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

StefanoGrimaldi

Oye,

StefanoGrimaldi_0-1616687288772.png

Columna =
var weeknum1 = (1 + WEEKNUM (‘Tabla'[Date] ) -WEEKNUM (STARTOFMONTH (‘Tabla'[Date]))) // encuentra el número de semana
var daynumber = WEEKDAY (‘Tabla'[Date], 2) // martes en este formato su número 2
var out = IF (AND (weeknum1 = 2, daynumber = 2), «Microsoft Patch lanzado», IF (AND (weeknum1 = 2, daynumber = 4), «Non-prod servers patching», IF (AND (weeknum1 = 2 , daynumber = 5), «Parcheo de estaciones de trabajo para máquinas UAT», «»)))

volver
con esta lógica, puede agregar los otros parámetros para obtener el resultado deseado, pero básicamente la variable 2 obtiene el número exacto de la semana y el día de la semana y el mes weeknum
si esto ayudó, dé algunas felicitaciones, y si se resuelve, su signo de interrogación como respuesta para que otros la encuentren.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *