(TableName as table,ColumnName as text)=> let Source = TableName, #"Removed Other Columns" = Table.SelectColumns(Source,{ColumnName}), #"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns",{{ColumnName, "Date"}}), #"Calculated Start of Year" = Table.TransformColumns(#"Renamed Columns",{{"Date", Date.StartOfYear, type date}}), #"Removed Duplicates" = Table.Distinct(#"Calculated Start of Year"), #"Duplicated Column" = Table.DuplicateColumn(#"Removed Duplicates", "Date", "Date - Copy"), #"Renamed Columns1" = Table.RenameColumns(#"Duplicated Column",{{"Date - Copy", "Date2"}}), #"Calculated End of Year" = Table.TransformColumns(#"Renamed Columns1",{{"Date2", Date.EndOfYear, type date}}), Base = Table.TransformColumnTypes(#"Calculated End of Year",{{"Date", Int64.Type}, {"Date2", Int64.Type}}), MinDate = List.Min(Base[Date]), MaxDate = List.Max(Base[Date2]), Custom2 = {MinDate..MaxDate}, #"Converted to Table" = Table.FromList(Custom2, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Renamed Columns2" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}), #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns2",{{"Date", type date}}), #"Inserted Month" = Table.AddColumn(#"Changed Type", "Month No", each Date.Month([Date]), Int64.Type), #"Inserted Year" = Table.AddColumn(#"Inserted Month", "Year", each Date.Year([Date]), Int64.Type), #"Inserted Month Name" = Table.AddColumn(#"Inserted Year", "Month", each Text.Upper(Text.Start(Date.MonthName([Date]),3)), type text), #"Inserted Quarter" = Table.AddColumn(#"Inserted Month Name", "Quarter", each "Q"&Text.From(Date.QuarterOfYear([Date])), type text), #"Added Custom" = Table.AddColumn(#"Inserted Quarter", "YM", each if [Month No]>9 then "-" & Text.From([Month No]) else "-0" & Text.From([Month No])), #"Added Custom1" = Table.AddColumn(#"Added Custom", "Year Month", each Text.From([Year])&[YM]), #"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"YM"}), #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns",{{"Year Month", type text}}), #"Inserted Day of Week" = Table.AddColumn(#"Changed Type1", "Weekday No", each Date.DayOfWeek([Date]), Int64.Type), #"Inserted Day Name" = Table.AddColumn(#"Inserted Day of Week", "Weekday", each Text.Upper(Text.Start(Date.DayOfWeekName([Date]),3)), type text), #"Inserted Week of Year" = Table.AddColumn(#"Inserted Day Name", "Week of Year", each Date.WeekOfYear([Date]), Int64.Type), #"Added Custom2" = Table.AddColumn(#"Inserted Week of Year", "Custom", each if [Week of Year]>9 then Text.From([Week of Year]) else "0"&Text.From([Week of Year])), #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Week", each "W"&[Custom]), #"Removed Columns1" = Table.RemoveColumns(#"Added Custom3",{"Week of Year", "Custom"}) in #"Removed Columns1"