DateKey 格式为 YYYYMMDD
DateKey formatted as YYYYMMDD
我有以下日历 table 脚本:
let
StartDate = #date(2016, 1, 1),
EndDate = #date(2018, 12, 31),
CurrentDate = DateTime.Date(DateTime.FixedLocalNow()),
FiscalYearEndMonth = 6,
ListDates = List.Dates(StartDate, Number.From(EndDate - StartDate)+1, #duration(1,0,0,0)),
#"Converted to Table" = Table.FromList(ListDates, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Renamed Columns as Date" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
#"Changed Type to Date" = Table.TransformColumnTypes(#"Renamed Columns as Date",{{"Date", type date}}),
#"Added Calendar MonthNum" = Table.AddColumn(#"Changed Type to Date", "MonthNum", each Date.Month([Date]), Int64.Type),
#"Added Calendar Year" = Table.AddColumn(#"Added Calendar MonthNum", "Year", each Date.Year([Date]), Int64.Type),
#"Added MonthYearNum" = Table.AddColumn(#"Added Calendar Year", "MonthYearNum", each [Year]*100 + [MonthNum] /*e.g. Sep-2016 would become 201609*/, Int64.Type),
#"Added Day Num" = Table.AddColumn(#"Added MonthYearNum", "DayNum", each Date.Day([Date])),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Datekey",{{"DayNum", Int64.Type}}),
#"Added Datekey" = Table.AddColumn(#"Added Day Num", "DateKey", each [Year]*100 + [MonthNum] + [DayNum]),
#"Changed Type" = Table.TransformColumnTypes(#"Changed Type1",{{"DayNum", Int64.Type}, {"DateKey", Int64.Type}})
in
#"Changed Type"
结果如下:
所以最后一列让我头疼 - 我认为该列的代码是:
each [Year]*100 + [MonthNum] + [DayNum]
这个表达式的前两个元素似乎按预期连接在一起,但随后添加了 DayNum
,例如对于 1 月 1 日,我们将 2016 与 1 连接起来得到 201601
但随后 DayNum 以数学方式添加到它,得到 201602
但我希望它给出 20160101
(格式 YYYYMMDD)
为什么会发生这种情况?M/PowerQuery
避免这种行为的正确方法是什么?
我相信就它所做的而言,您是正确的。改成这个怎么样?
each [Year]*10000 + [MonthNum]*100 + [DayNum]
或者你可以
each [MonthYearNum]*100 + [DayNum]
我有以下日历 table 脚本:
let
StartDate = #date(2016, 1, 1),
EndDate = #date(2018, 12, 31),
CurrentDate = DateTime.Date(DateTime.FixedLocalNow()),
FiscalYearEndMonth = 6,
ListDates = List.Dates(StartDate, Number.From(EndDate - StartDate)+1, #duration(1,0,0,0)),
#"Converted to Table" = Table.FromList(ListDates, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Renamed Columns as Date" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
#"Changed Type to Date" = Table.TransformColumnTypes(#"Renamed Columns as Date",{{"Date", type date}}),
#"Added Calendar MonthNum" = Table.AddColumn(#"Changed Type to Date", "MonthNum", each Date.Month([Date]), Int64.Type),
#"Added Calendar Year" = Table.AddColumn(#"Added Calendar MonthNum", "Year", each Date.Year([Date]), Int64.Type),
#"Added MonthYearNum" = Table.AddColumn(#"Added Calendar Year", "MonthYearNum", each [Year]*100 + [MonthNum] /*e.g. Sep-2016 would become 201609*/, Int64.Type),
#"Added Day Num" = Table.AddColumn(#"Added MonthYearNum", "DayNum", each Date.Day([Date])),
#"Changed Type1" = Table.TransformColumnTypes(#"Added Datekey",{{"DayNum", Int64.Type}}),
#"Added Datekey" = Table.AddColumn(#"Added Day Num", "DateKey", each [Year]*100 + [MonthNum] + [DayNum]),
#"Changed Type" = Table.TransformColumnTypes(#"Changed Type1",{{"DayNum", Int64.Type}, {"DateKey", Int64.Type}})
in
#"Changed Type"
结果如下:
所以最后一列让我头疼 - 我认为该列的代码是:
each [Year]*100 + [MonthNum] + [DayNum]
这个表达式的前两个元素似乎按预期连接在一起,但随后添加了 DayNum
,例如对于 1 月 1 日,我们将 2016 与 1 连接起来得到 201601
但随后 DayNum 以数学方式添加到它,得到 201602
但我希望它给出 20160101
(格式 YYYYMMDD)
为什么会发生这种情况?M/PowerQuery
避免这种行为的正确方法是什么?
我相信就它所做的而言,您是正确的。改成这个怎么样?
each [Year]*10000 + [MonthNum]*100 + [DayNum]
或者你可以
each [MonthYearNum]*100 + [DayNum]