Fórmula DÍAS LABORALES en Power Query

Un usuario Pregunto ✅

Anónimo

Hola tios

Estoy tratando de encontrar una solución que exista en EXCEL (función DÍAS LABORALES) que pueda hacer lo mismo en Power Query

A continuación tengo una fecha de entrega y quiero restar los días de envío y WHS, pero solo los días que son días hábiles.

Entonces, en la columna Fecha de publicación, se están subestructurando todos los días, incluidos los fines de semana, pero lo que quiero lograr es la fecha de publicación ÚNICAMENTE DÍAS LABORABLES que se restan solo los días hábiles.

Espero que puedas ayudarme

Gracias por tus esfuerzos

Del date Transporte WHS Restar Fecha de lanzamiento
Del date – (envío + WHS)
Fecha de lanzamiento ÚNICAMENTE DÍAS LABORABLES
Del date – (envío + WHS)
27-03-20 2 3 5 22-03-20 20-03-20
13-04-20 3 1 4 09-04-20 07-04-20
06-04-20 4 1 5 01-04-20 30-03-20
02-04-20 2 2 4 29-03-20 27-03-20
02-04-20 3 1 4 29-03-20 27-03-20
02-04-20 1 1 2 31-03-20 31-03-20
02-04-20 3 2 5 28-03-20 26-03-20
02-04-20 5 1 6 27-03-20 25-03-20

edhans

Eche un vistazo al código M a continuación. Ponlo en una consulta en blanco. Devuelve esta tabla:

2020-04-23 10_26_49-Sin título - Power Query Editor.png

1) En Power Query, seleccione New Source, luego Blank Query
2) En la cinta de Inicio, seleccione el botón «Editor avanzado»
3) Elimina todo lo que ves, luego pega el código M que te he dado en ese cuadro.
4) Presione Listo

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtQ31DcyMDJQ0lECMSDsWJ1oJROEhIm+kTFUIhYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Start Date" = _t, #"End Date" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Start Date", type date}, {"End Date", type date}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1),
    #"Added Date Range" = Table.AddColumn(#"Added Index", "Date Range", each {Number.From([Start Date])..Number.From([End Date])}),
    #"Expanded Date Range" = Table.ExpandListColumn(#"Added Date Range", "Date Range"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Date Range",{{"Date Range", type date}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type1", "Is workday", each if Date.DayOfWeek([Date Range],Day.Monday) <= 4 then 1 else 0),
    #"Grouped Rows" = Table.Group(#"Added Custom", {"Start Date", "End Date", "Index"}, {{"Workdays", each List.Sum([Is workday]), type number}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Grouped Rows",{"Start Date", "End Date", "Workdays"})
in
    #"Removed Other Columns"

Debería poder modificarlo para adaptarlo a su escenario específico. Responda si no puede o necesita ayuda.

edhans

Eche un vistazo al código M a continuación. Ponlo en una consulta en blanco. Devuelve esta tabla:

2020-04-23 10_26_49-Sin título - Power Query Editor.png

1) En Power Query, seleccione New Source, luego Blank Query
2) En la cinta de Inicio, seleccione el botón «Editor avanzado»
3) Elimina todo lo que ves, luego pega el código M que te he dado en ese cuadro.
4) Presione Listo

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtQ31DcyMDJQ0lECMSDsWJ1oJROEhIm+kTFUIhYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [#"Start Date" = _t, #"End Date" = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Start Date", type date}, {"End Date", type date}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1),
    #"Added Date Range" = Table.AddColumn(#"Added Index", "Date Range", each {Number.From([Start Date])..Number.From([End Date])}),
    #"Expanded Date Range" = Table.ExpandListColumn(#"Added Date Range", "Date Range"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Expanded Date Range",{{"Date Range", type date}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type1", "Is workday", each if Date.DayOfWeek([Date Range],Day.Monday) <= 4 then 1 else 0),
    #"Grouped Rows" = Table.Group(#"Added Custom", {"Start Date", "End Date", "Index"}, {{"Workdays", each List.Sum([Is workday]), type number}}),
    #"Removed Other Columns" = Table.SelectColumns(#"Grouped Rows",{"Start Date", "End Date", "Workdays"})
in
    #"Removed Other Columns"

Debería poder modificarlo para adaptarlo a su escenario específico. Responda si no puede o necesita ayuda.

danextian

Hola @Anónimo,

Puede intentar utilizar una función personalizada para obtener los días laborables. Hay un hilo reciente aquí: https://community.powerbi.com/t5/Power-Query/WorkDays-Function-in-Power-Query-M/mp/1007028#M34312

Greg_Deckler

No conozco una solución para Power Query, @ImkeF o @edhans podrían.

La versión de DAX está aquí: https://community.powerbi.com/t5/Quick-Measures-Gallery/Net-Work-Days/td-p/367362

Deja un comentario

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