Power Query M獲取上週、上上週、本月、去年同期

Laravel自学开发發表於2024-07-29

在Power Query(也稱為M語言)中,你可以使用內建的日期和時間函式來獲取特定的日期。以下是如何獲取今天的日期、昨天的日期、上週起始到結束的日期(不含今天),以及上上週起始和結束的日期(不含今天和上週)的示例程式碼。

  1. 獲取今天的日期
    m
    Today = DateTime.LocalNow() // 這將返回一個日期時間值,如果只想要日期部分,可以使用 DateTime.Date(DateTime.LocalNow())
    但通常,對於僅需要日期的場景,我們會這樣做:

m
TodayDate = DateTime.Date(DateTime.LocalNow())
2. 獲取昨天的日期
m
YesterdayDate = Date.AddDays(TodayDate, -1)
3. 獲取上週起始到結束的日期(不含今天)
首先,我們需要找到上週的第一天(通常是週日,但取決於你的定義)。然後,我們將找到上週的最後一天(週六)。

m
// 假設上週的第一天是週日
StartOfLastWeek = Date.StartOfWeek(Date.AddDays(TodayDate, -7), Day.Sunday)
EndOfLastWeek = Date.AddDays(StartOfLastWeek, 6) // 上週六
注意:Date.StartOfWeek 函式的第二個引數允許你指定一週的第一天是星期幾。在這個例子中,我使用了 Day.Sunday 作為引數,但你可以根據需要更改為 Day.Monday 或其他。

  1. 獲取上上週起始和結束的日期(不含今天和上週)
    這類似於獲取上週的日期,但我們需要再往前推一週。

m
// 上上週的第一天(假設是週日)
StartOfPreviousWeek = Date.StartOfWeek(Date.AddDays(TodayDate, -14), Day.Sunday)
EndOfPreviousWeek = Date.AddDays(StartOfPreviousWeek, 6) // 上上週六
完整示例
將這些片段組合成一個查詢可能看起來像這樣(注意,這只是一個示例,並不是一個可以直接在Power Query編輯器中執行的完整查詢):

m
let
TodayDate = DateTime.Date(DateTime.LocalNow()),
YesterdayDate = Date.AddDays(TodayDate, -1),
StartOfLastWeek = Date.StartOfWeek(Date.AddDays(TodayDate, -7), Day.Sunday),
EndOfLastWeek = Date.AddDays(StartOfLastWeek, 6),
StartOfPreviousWeek = Date.StartOfWeek(Date.AddDays(TodayDate, -14), Day.Sunday),
EndOfPreviousWeek = Date.AddDays(StartOfPreviousWeek, 6)
in
// 這裡你可以返回一個表格或僅僅是你需要的日期值
// 例如,返回一個包含這些日期的表格
#table(
{"DateType", "DateValue"},
{
{"Today", TodayDate},
{"Yesterday", YesterdayDate},
{"StartOfLastWeek", StartOfLastWeek},
{"EndOfLastWeek", EndOfLastWeek},
{"StartOfPreviousWeek", StartOfPreviousWeek},
{"EndOfPreviousWeek", EndOfPreviousWeek}
}
)
請注意,上面的#table函式示例僅用於說明目的,並非Power Query的標準部分。在Power Query編輯器中,你通常會透過“新增自定義列”或“新增到新查詢”並編寫適當的M程式碼來構建和返回表格。上面的#table示例旨在展示如何將這些日期組織成一個邏輯上的表格結構。在實際的Power Query查詢中,你可能會將這些值用作引數或將其直接插入到現有的資料轉換流程中。

相關文章