Power Query - 会计月份的开始和结束日期

时间:2021-02-25 09:00:12

标签: powerbi powerquery

我正在深入研究在 Power Query 中生成的财政日历。 我最后的挑战之一是确定会计月份开始和结束日期以及天数。 结构是这样的:

<-

您如何确定电源查询中的此信息?

编辑:添加财政周计算:

Date    Fiscal Month    Fiscal Year
28.12.2020  December    2020
29.12.2020  December    2020
30.12.2020  December    2020
31.12.2020  December    2020
01.01.2021  December    2020
02.01.2021  December    2020
03.01.2021  December    2020
04.01.2021  January     2021
05.01.2021  January     2021
06.01.2021  January     2021
07.01.2021  January     2021
08.01.2021  January     2021
09.01.2021  January     2021

1 个答案:

答案 0 :(得分:1)

假设新的会计年度从第一个星期一开始,那么您可以使用 Date.WeekOfYearDate.DayOfWeek 函数来检查它的开始时间。所以对于 Fiscal Year 可能是:

if (Date.WeekOfYear([Date]) > 1
    or Date.DayOfWeek(#date(Date.Year([Date]), 1, 1), Day.Monday) = 0) then   
    Date.Year([Date])
else
    Date.Year([Date]) - 1

同样,Fiscal Month 将是:

if (Date.WeekOfYear([Date]) > 1
    or Date.DayOfWeek(#date(Date.Year([Date]), 1, 1), Day.Monday) = 0) then   
    Date.MonthName([Date])
else
    Date.MonthName(Date.AddMonths([Date], -1))

可以根据 1 月 1 日的星期几计算会计年度的开始日期:

#date([Fiscal Year], 1, Number.Mod(7 - Date.DayOfWeek(#date([Fiscal Year], 1, 1), Day.Monday), 7) + 1)

会计年度的结束日期是下一会计年度开始的前一天:

Date.AddDays(#date([Fiscal Year] + 1, 1, Number.Mod(7 - Date.DayOfWeek(#date([Fiscal Year] + 1, 1, 1), Day.Monday), 7) + 1), -1)

并且可以根据当前日期和开始日期之间的差异计算天数:

Duration.Days([Date] - [Fiscal Year Start Date]) + 1

enter image description here

如果 Week Number 是带有会计周数的列的名称,那么会计月的日期可以这样计算:

if [Week Number] <= 4 then [Day number]
else if [Week Number] <= 8 then [Day number] - 28
else if [Week Number] <= 13 then [Day number] - 56
else if [Week Number] <= 17 then [Day number] - 91
else if [Week Number] <= 21 then [Day number] - 119
else if [Week Number] <= 26 then [Day number] - 147
else if [Week Number] <= 30 then [Day number] - 182
else if [Week Number] <= 34 then [Day number] - 210
else if [Week Number] <= 39 then [Day number] - 238
else if [Week Number] <= 43 then [Day number] - 273
else if [Week Number] <= 47 then [Day number] - 301
else [Day number] - 329

第 53 周将分配给最后一个月。

我猜您会使用这些自定义列来构建日历表。您还需要一个数字会计月份,以便您可以正确订购月份。它与 Fiscal Month 相同,但在其中使用 Date.Month 而不是 Date.MonthName