Forum Discussion
Anonymous
7 years agoNot applicable
Custom Date table
Hi guys, Is there a way that I can create a custom date table which has it's start date from 12/31/2018? My team wants the Date table to be in sync with the Fiscal Year Dates and want to see the ...
ChrisMendoza
Resident Rockstar
7 years agoAnonymous-
Something like the below should help in your desired outcome (this is setup for my organizations FY; you'll need to modify for yours):
let
Calendar = #table(
type table
[
#"PeriodStart" = date,
#"PeriodEnd" = date
],
{
{ #date ( 2017, 06, 01 ), #date ( 2017, 6, 30 ) },
{ #date ( 2017, 07, 01 ), #date ( 2017, 8, 1 ) },
{ #date ( 2017, 08, 02 ), #date ( 2017, 8, 31 ) },
{ #date ( 2017, 09, 01 ), #date ( 2017, 9, 30 ) },
{ #date ( 2017, 10, 01 ), #date ( 2017, 10, 31 ) },
{ #date ( 2017, 11, 01 ), #date ( 2017, 11, 30 ) },
{ #date ( 2017, 12, 01 ), #date ( 2017, 12, 31 ) },
{ #date ( 2018, 01, 01 ), #date ( 2018, 1, 30 ) },
{ #date ( 2018, 01, 31 ), #date ( 2018, 2, 28 ) },
{ #date ( 2018, 03, 01 ), #date ( 2018, 3, 31 ) },
{ #date ( 2018, 04, 01 ), #date ( 2018, 4, 30 ) },
{ #date ( 2018, 05, 01 ), #date ( 2018, 5, 30 ) },
{ #date ( 2018, 05, 31 ), #date ( 2018, 6, 30 ) },
{ #date ( 2018, 07, 01 ), #date ( 2018, 7, 31 ) },
{ #date ( 2018, 08, 01 ), #date ( 2018, 8, 30 ) },
{ #date ( 2018, 08, 31 ), #date ( 2018, 9, 30 ) },
{ #date ( 2018, 10, 01 ), #date ( 2018, 10, 30 ) },
{ #date ( 2018, 10, 31 ), #date ( 2018, 11, 29 ) },
{ #date ( 2018, 11, 30 ), #date ( 2018, 12, 31 ) },
{ #date ( 2019, 01, 01 ), #date ( 2019, 1, 30 ) },
{ #date ( 2019, 01, 31 ), #date ( 2019, 2, 28 ) },
{ #date ( 2019, 03, 01 ), #date ( 2019, 3, 31 ) },
{ #date ( 2019, 04, 01 ), #date ( 2019, 4, 30 ) },
{ #date ( 2019, 05, 01 ), #date ( 2019, 5, 30 ) },
{ #date ( 2019, 05, 31 ), #date ( 2019, 6, 30 ) }
}
),
#"Added Index" = Table.AddIndexColumn(Calendar, "PeriodID", 1, 1),
#"Added DatesBetween" = Table.AddColumn(#"Added Index", "Date", each List.Transform( { Number.From ( [PeriodStart] ) ..Number.From ( [PeriodEnd] ) }, each Date.From (_) ) ),
#"Expanded Date" = Table.SelectColumns(Table.TransformColumnTypes(Table.ExpandListColumn(#"Added DatesBetween", "Date"),{{"Date", type date}}),{"PeriodID", "Date"}),
#"Expanded EndOfWeek" = Table.TransformColumnTypes(Table.SelectColumns(Table.ExpandTableColumn(Table.AddIndexColumn(Table.Group( Table.AddColumn(#"Expanded Date", "End of Week", each Date.EndOfWeek([Date]), type date), {"End of Week"}, {{"EndOfWeek", each _, type table}}), "EndOfWeekID", 1, 1), "EndOfWeek", {"PeriodID", "Date"}, {"PeriodID", "Date"}),{"PeriodID", "EndOfWeekID", "Date" }),{{"PeriodID", Int64.Type},{"EndOfWeekID", Int64.Type},{"Date", type date}}),
#"Added FiscalYearPeriodNum" = Table.AddColumn(#"Expanded EndOfWeek", "FiscalYearPeriodNum", each if Number.Mod([PeriodID], 12) = 0 then 12 else Number.Mod([PeriodID], 12), Int64.Type),
#"Added FiscalYearPeriodName" = Table.AddColumn(#"Added FiscalYearPeriodNum", "FiscalYearPeriodName", each fnSwitchPeriodNumToName([FiscalYearPeriodNum]), type text),
#"Added FiscalYearNum" = Table.AddColumn(#"Added FiscalYearPeriodName", "Fiscal Year", each if [FiscalYearPeriodNum] <= 7 then Date.Year([Date]) else Date.Year([Date]) - 1, Int64.Type),
#"Added FiscalYearPeriodID" = Table.AddColumn(#"Added FiscalYearNum", "FiscalYearPeriodID", each ([Fiscal Year] * 100) + [FiscalYearPeriodNum], Int64.Type),
#"Added FiscalYearPeriodCombined" = Table.RemoveColumns(Table.AddColumn(#"Added FiscalYearPeriodID", "Fiscal Year Period", each Text.Combine({Text.PadStart(Number.ToText([FiscalYearPeriodNum]), 2, "0"), [FiscalYearPeriodName]}, "-"), type text),{"FiscalYearPeriodNum", "FiscalYearPeriodName"})
in
#"Added FiscalYearPeriodCombined"You may also need the function below:
(input) =>
let
values = {
{1, "Jul"},
{2, "Aug"},
{3, "Sep"},
{4, "Oct"},
{5, "Nov"},
{6, "Dec"},
{7, "Jan"},
{8, "Feb"},
{9, "Mar"},
{10, "Apr"},
{11, "May"},
{12, "Jun"},
{input, "Undefined"}
},
Result = List.First(List.Select(values, each _{0}=input)){1}
in
Result