1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| let
TableDefSeasons = Table.FromRecords({[Saison="Basse", DébutPériode="01/01", FinPériode="04/04"], [Saison="Moyenne", DébutPériode="05/04", FinPériode="30/06"], [Saison="Haute", DébutPériode="01/07", FinPériode="31/12"]}),
TransformTableDefSeasons =
let
fnDaysCodesMDDList = (startTxt, endTxt) =>
let
fnSplit = each List.Transform(Text.Split(_, "/"), Number.From),
startList = fnSplit(startTxt),
endList = fnSplit(endTxt),
monthsList = {startList{1} .. endList{1}},
daysList = {{startList{0} .. 31}} & List.Transform(List.Skip(monthsList, 2), each {1 .. 31}) & {{1 .. endList{0}}}
in
List.TransformMany(List.Zip({monthsList, daysList}), each _{1}, (x, y) => x{0} * 100 + y),
AddColumnsDaysCodeList = Table.AddColumn(TableDefSeasons, "CodeJourMJJ", each fnDaysCodesMDDList([DébutPériode],[FinPériode]), type list)
in
Table.ExpandListColumn(AddColumnsDaysCodeList, "CodeJourMJJ"),
Source = #table(type table [Date=date], List.Transform(List.Dates(#date(2000,1,1), 150000, #duration(1,0,0,0)), each {_})),
AddColumnDaysCode = Table.AddColumn(Source, "CodeJourMJJ", each Date.Month([Date])*100 + Date.Day([Date])),
MergeDefSeasons = Table.NestedJoin(AddColumnDaysCode, {"CodeJourMJJ"}, TransformTableDefSeasons, {"CodeJourMJJ"}, "DefSaison", JoinKind.LeftOuter),
DeleteColumnDaysCode = Table.RemoveColumns(MergeDefSeasons,{"CodeJourMJJ"}),
DevelopSeason = Table.ExpandTableColumn(DeleteColumnDaysCode, "DefSaison", {"Saison"}, {"Saison"})
in
DevelopSeason |
Partager