Excel Power Query 周末

Excel Power Query 周末

我有一个 Power Query 日期列。我需要将此列的行转换为其一周的结束时间。如何将一周的结束时间设置为星期日?

默认的“计算周末”转换以星期六作为周末结束的时间。

这是我需要调整的查询编辑器生成的公式:

= Table.TransformColumns(#"Changed Type",{{"WorkDate", Date.EndOfWeek, type date}})

以下是有关 Date.EndOfWeek 函数的一些 MSDN 信息:MSDN 日期.周末

以下是我尝试过的一些方法,每种方法都会导致错误:

= Table.TransformColumns(#"Changed Type",{{"WorkDate", Date.EndOfWeek(, Day.Sunday), type date}})
= Table.TransformColumns(#"Changed Type",{{"WorkDate", Date.EndOfWeek("WorkDate", Day.Sunday), type date}})
= Table.TransformColumns(#"Changed Type",{{"WorkDate", Date.EndOfWeek(WorkDate, Day.Sunday), type date}})

更新:

我找到了一种解决方法。基于谷歌搜索结果我用下面的 Table.AddColumn 函数替换了 Table.TransformColumns 函数,如下所示:

= Table.AddColumn(#"Changed Type", "WeekEnding", each Date.EndOfWeek([WorkDate], Day.Monday), type date)

但是,我仍然想知道如何通过修改现有列而不是创建新列(然后删除旧列)来实现这一点。

我还意识到我需要将 EndOfWeek 函数中的第二个参数更改为星期一而不是星期日,该参数要求第一的一周中的天。

答案1

虽然这个问题是 6 年前的,但希望对遇到类似问题的人有所帮助。如果我们希望以星期一作为一周的开始,请使用以下语法

= Table.TransformColumns(#"Changed Type",{{"WorkDate", each Date.EndOfWeek(_, Day.Monday), type date}})

答案2

我不明白添加派生列然后删除旧源有什么困难?这是 PQL 中非常常见的操作,对性能、代码等的影响微不足道。

我通常将选择列的“清理”步骤留到查询结束时,这样您就可以在一个步骤中删除多个列。有时中间步骤会清除那些“计算”列。

相关内容