DateKey в формате ГГГГММДД

У меня есть следующий скрипт таблицы календаря:

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 января 2016 года мы объединяем 1 с 201601 но затем DayNum добавляется математически к нему, чтобы дать 201602 но я хочу это дать 20160101 (формат ГГГГММДД)

Почему это происходит и что правильно M/PowerQuery чтобы избежать этого поведения?

1 ответ

Решение

Я верю, что вы правы в том, что делаете. Как насчет этого вместо этого?

each [Year]*10000 + [MonthNum]*100 + [DayNum]

или вы могли бы сделать

each [MonthYearNum]*100 + [DayNum]
Другие вопросы по тегам