简体   繁体   English

在PowerQuery M中获取日期范围(开始日期,结束日期)和年份中星期几的日期

[英]Get dates from day of week in a date range (start date, end date) and year in PowerQuery M

I need to expand a list given the inputs: start date, end date and days of the week that something should happen. 我需要根据给定的输入来扩展一个列表:开始日期,结束日期和一周中应该发生的事情。 This needs to be done by using M in Power Query. 这需要通过在Power Query中使用M来完成。


The date range can span multiple weeks, for example: 日期范围可以跨越数周,例如:
start date: 04/15/19 开始日期:04/15/19
end date: 04/29/19 结束日期:19/04/29
day of week: 1 星期几:1

I would expect to get 3 rows: 我希望得到3行:

  • 04/15/19 19年4月15日
  • 04/22/19 19年4月22日
  • 04/29/19 19年4月29日


or encompass one week & day: 或包含一个星期和一天:
start date: 04/15/19 开始日期:04/15/19
end date: 04/15/19 结束日期:04/15/19
day of week: 1 星期几:1

I would expect to get 1 row: 我希望得到1行:

  • 04/15/19 19年4月15日

I was using: Get date from weeknumber, dayofweek and year PowerQuery M as a first step in understanding how to approach the solution. 我使用的是: 从周数,星期几和年份中获取PowerQuery M的日期,作为了解如何实现该解决方案的第一步。

Thanks in advance. 提前致谢。

You can use a function to list all dates in your chosen range, and filter to the chosen weekday: 您可以使用函数列出所选范围内的所有日期,并过滤至所选的工作日:

(DateStart as date, DateEnd as date, DayOfWeek as number) =>
let
    #"Date List" = List.Dates(DateStart,Duration.Days(DateEnd-DateStart)+1,#duration(1,0,0,0)),
    #"Date Table" = Table.FromList(#"Date List", Splitter.SplitByNothing(), {"Date"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Date Table",{{"Date", type date}}),
    #"Filtered Dates" = Table.SelectRows(#"Changed Type", each (Date.DayOfWeek([Date], Day.Sunday) = DayOfWeek))
in
    #"Filtered Dates"

Invoked as a test: 作为测试调用:

let
    Source = fnListWeekdaysInRange(#date(2019, 4, 15), #date(2019, 4, 29), 1)
in
    Source

Which returns: 哪个返回:

在此处输入图片说明

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM