Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

Primer viernes de cada mes - Power Query

Hola

Necesita a continuación en Power Query solamente, por favor:

Usando el mes actual como referencia, quiero crear 12 consultas en blanco que se usarán como parámetros, que muestran la fecha del primer viernes de cada mes. 12 consultas serán de los últimos 12 meses.

Friday.jpg

Gracias de antemano

  • Syndicate_Admin's avatar
    Syndicate_Admin
    4 years ago

    @mb0307 mi mal, ¡no entendí tu pregunta correctamente! Puede agregar una columna personalizada basada en su columna Fecha y obtener el primer viernes de cada mes para su tabla de calendario:

    Date.StartOfWeek(#date(Date.Year([Date_Key]),Date.Month([Date_Key]),7),Day.Friday)

    goncalogeraldes_0-1635419400441.png

    o bien, puede crear una tabla con los últimos 12 meses y agregar una columna personalizada para obtener el primer viernes correspondiente del mes:

    let
        Dates = Table.FromList(    
            List.Generate(
                ()=> [Month Start = Date.StartOfMonth(Date.AddMonths(DateTime.LocalNow(),-12)), idx = 11],
                each [idx] >= 0,
                each [Month Start = Date.StartOfMonth(Date.AddMonths(DateTime.LocalNow(),-[idx])), idx = [idx]-1],
                each [Month Start]), 
    
                Splitter.SplitByNothing(),{"Month Start"}),
        dateType = Table.TransformColumnTypes(Dates,{"Month Start", Date.Type}),
        #"Added Custom" = Table.AddColumn(dateType, "First Friday", each Date.StartOfWeek(#date(Date.Year([Month Start]),Date.Month([Month Start]),7),Day.Friday))
    in
        #"Added Custom"

    goncalogeraldes_1-1635419425551.png

    ¡Espero que esta respuesta resuelva su problema!
    Si necesita ayuda adicional, por favor @ me en su respuesta.
    Si mi respuesta le proporcionó una solución, considere marcarla como una solución ✔️ o darle un kudoe 👍
    ¡Gracias!

    ¡También puedes echar un vistazo a mi LinkedIn!

    Saludos
    Gonçalo Geraldes

  • Syndicate_Admin's avatar
    Syndicate_Admin
    4 years ago

    @mb0307 oye! ¡No hay problema en absoluto! El código es bastante similar en realidad:

    let
        Dates = Table.FromList(    
            List.Generate(
                ()=> [Month End = Date.EndOfMonth(Date.AddMonths(DateTime.LocalNow(),-12)), idx = 11],
                each [idx] >= 0,
                each [Month End = Date.EndOfMonth(Date.AddMonths(DateTime.LocalNow(),-[idx])), idx = [idx]-1],
                each [Month End]), 
    
                Splitter.SplitByNothing(),{"Month End"}),
        dateType = Table.TransformColumnTypes(Dates,{"Month End", Date.Type}),
        #"Added Custom" = Table.AddColumn(dateType, "Last Friday", each Date.AddDays([Month End], -Date.DayOfWeek([Month End],Day.Friday)))
    in
        #"Added Custom"

    Para obtener ayuda adicional, por favor @ me en su respuesta!

    ¡También puedes echar un vistazo a mi LinkedIn!

    Saludos
    Gonçalo Geraldes

8 Replies

  • ¡Hola @mb0307! Puede lograrlo con lo siguiente:

    Date.AddMonths(Date.StartOfMonth(DateTime.LocalNow()), -12)

    ¡Espero que esta respuesta resuelva su problema!
    Si necesita ayuda adicional, por favor @ me en su respuesta.
    Si mi respuesta le proporcionó una solución, considere marcarla como una solución ✔️ o darle un kudoe 👍
    ¡Gracias!

    ¡También puedes echar un vistazo a mi LinkedIn!

    Saludos
    Gonçalo Geraldes

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @goncalogeraldes gracias por la respuesta, pero esto no me está dando el primer viernes del mes como se muestra en la imagen de mi publicación.

      Su consulta solo devuelve Inicio de mes.

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        @mb0307 mi mal, ¡no entendí tu pregunta correctamente! Puede agregar una columna personalizada basada en su columna Fecha y obtener el primer viernes de cada mes para su tabla de calendario:

        Date.StartOfWeek(#date(Date.Year([Date_Key]),Date.Month([Date_Key]),7),Day.Friday)

        goncalogeraldes_0-1635419400441.png

        o bien, puede crear una tabla con los últimos 12 meses y agregar una columna personalizada para obtener el primer viernes correspondiente del mes:

        let
            Dates = Table.FromList(    
                List.Generate(
                    ()=> [Month Start = Date.StartOfMonth(Date.AddMonths(DateTime.LocalNow(),-12)), idx = 11],
                    each [idx] >= 0,
                    each [Month Start = Date.StartOfMonth(Date.AddMonths(DateTime.LocalNow(),-[idx])), idx = [idx]-1],
                    each [Month Start]), 
        
                    Splitter.SplitByNothing(),{"Month Start"}),
            dateType = Table.TransformColumnTypes(Dates,{"Month Start", Date.Type}),
            #"Added Custom" = Table.AddColumn(dateType, "First Friday", each Date.StartOfWeek(#date(Date.Year([Month Start]),Date.Month([Month Start]),7),Day.Friday))
        in
            #"Added Custom"

        goncalogeraldes_1-1635419425551.png

        ¡Espero que esta respuesta resuelva su problema!
        Si necesita ayuda adicional, por favor @ me en su respuesta.
        Si mi respuesta le proporcionó una solución, considere marcarla como una solución ✔️ o darle un kudoe 👍
        ¡Gracias!

        ¡También puedes echar un vistazo a mi LinkedIn!

        Saludos
        Gonçalo Geraldes