从周数、星期几和年份获取日期 PowerQuery M

Get date from weeknumber, dayofweek and year PowerQuery M

我想为我的数据集创建一个额外的列。这需要通过在 PowerQuery 中使用 M 来完成。我有可用的周数、星期几和年份。

这可以通过使用 Excel 中的以下公式来完成。我需要类似的东西但是在 M.

Date = DATE([year],1,-2)-WEEKDAY(DATE([year],1,3))+[week]*7 + [day]-1

例如:2019 年第 2 周第 3 天应为:9-1-2019(#dd-mm-yyyy#)

提前致谢

如果您想创建自己的函数,它可能类似于:

dateFromWeekDayYear = (WeekOfYear as number, DayOfWeek as number, Year as number) as date =>
    let
        endOfFirstWeekOfYear = Date.EndOfWeek(#date(Year, 1, 1), Day.Monday), // Consumes one week from "WeekOfYear"
        addRemainingWeeks = Date.AddWeeks(endOfFirstWeekOfYear, WeekOfYear - 2), // Subtract 2 because consumed one week above and because 0-based    
        addDays = Date.AddDays(addRemainingWeeks, DayOfWeek) // Don't need to make 0-based as previous step gives us end of prior week.
    in
        addDays,

它需要三个参数:一年中的星期几、星期几和年份(基本上是您可用的所有信息)。

如果您想将其添加到 table,您可以尝试类似的操作:

Table.AddColumn(someTable, "newColumnName", each dateFromWeekDayYear([weekColumn], [dayColumn], [yearColumn]))

(前提是您的 table someTable 包含 weekColumndayColumnyearColumn 列)。

这样就可以了

= Table.AddColumn(Source, "Custom", each Date.From(Number.From(Date.AddDays(Date.FromText("1/1/"&Number.ToText([year])),-3))-Date.DayOfWeek(Date.FromText("1/3/"&Number.ToText([year])))-1+[week]*7+[day]-1) )