如何解决Power Query - 财政日历 445 本月周
我正在尝试在 Power Query 中构建一个财务日历,以将此日历作为数据流提供给其他部门。过去,我使用过 DAX 日历,但这有共享日历的限制,对吗? 所以,我已经有了日期、财政年度和 ISO/财政周信息,使用这个 M 脚本:
let
StartDate = #date (2009,1,1),EndDate = #date (2024,12,31),ListOfDates = List.Dates(StartDate,DurationDays,#duration(1,0)),DurationDays = Duration.Days (EndDate - StartDate) + 1,TableOfDates = Table.FromList(ListOfDates,Splitter.SplitByNothing(),null,ExtraValues.Error),DateColText = Table.RenameColumns(TableOfDates,{{"Column1","Date"}}),DateCol = Table.TransformColumnTypes(DateColText,{{"Date",type date}}),WeekdayCol = Table.AddColumn(DateCol,"Weekday Number",each Date.DayOfWeek([Date],Day.Monday) + 1,Int64.Type),#"Inserted Day Name" = Table.AddColumn(WeekdayCol,"Day Name",each Date.DayOfWeekName([Date]),type text),IsoWeekYearCol = Table.AddColumn(#"Inserted Day Name","Iso Week Year",each Date.Year(Date.AddDays([Date],4-[Weekday Number])),IsoWeekNrCol = Table.AddColumn(IsoWeekYearCol,"Iso Week Nummer",each (Duration.Days(Date.AddDays([Date],4-[Weekday Number]) - #date([Iso Week Year],7 - Date.DayOfWeek(#date([Iso Week Year],4),Day.Monday)))/7)+1,IsoWeekdayExtCol = Table.AddColumn(IsoWeekNrCol,"Iso Weekday Extended",each Text.From([Iso Week Year]) & "-W" & Text.End("0" & Text.From([Iso Week Nummer]),2) & "-"& Text.From([Weekday Number]))
in
IsoWeekdayExtCol
但是我现在如何为相应的会计月份添加一列,并为 CurrentMonth 和 CurrentWeek 添加一个单独的列。
你会怎么做?
解决方法
要添加具有相应会计月份的列,您可以从周数(您已经计算过)中推导出来。由于月份是 4-4-5,因此可以从周数预测相关月份。
#"Added Custom" = Table.AddColumn(IsoWeekdayExtCol,"Fiscal Month",each
if List.Contains({1..4},[Iso Week Nummer]) then "January"
else if List.Contains({5..8},[Iso Week Nummer]) then "February"
else if List.Contains({9..13},[Iso Week Nummer]) then "March"
else if List.Contains({14..17},[Iso Week Nummer]) then "April"
else if List.Contains({18..21},[Iso Week Nummer]) then "May"
else if List.Contains({22..26},[Iso Week Nummer]) then "June"
else if List.Contains({27..30},[Iso Week Nummer]) then "July"
else if List.Contains({31..34},[Iso Week Nummer]) then "August"
else if List.Contains({35..39},[Iso Week Nummer]) then "September"
else if List.Contains({40..43},[Iso Week Nummer]) then "October"
else if List.Contains({44..47},[Iso Week Nummer]) then "November"
else "December")
对于 CurrentMonth 和 CurrentWeek,我假设您的意思是一整列都填满了今天的财政月和今天的财政周。
您只需要添加一个查找类型的列,您可以在其中根据今天的日期确定要返回的行。所以:
#"Added Custom1" = Table.AddColumn(#"Added Custom","Current Month (fiscal)",each
Table.Column(#"Added Custom","Fiscal Month")
{List.PositionOf(Table.Column(#"Added Custom","Date"),Date.From(DateTime.LocalNow()))}),#"Added Custom2" = Table.AddColumn(#"Added Custom1","Current Week (fiscal)","Iso Week Nummer")
{List.PositionOf(Table.Column(#"Added Custom",Date.From(DateTime.LocalNow()))})
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。