// ultimátna časová tabuľka, v2.05 // stiahnuté z webu www.powerpivot.sk let pociatocnyRok = 2020, koncovyRok = 2023, // zadajte Date.Year(DateTime.FixedLocalNow()) pre aktuálny rok jazyk = "sk-SK", // angličtina = en-US, čeština = cs-CZ, nemčina = de-DE, rakúska nemčina = de-AT nazvyStlpcovBezDiakritiky = false, // zadajte true, ak chcete mať názvy stĺpcov bez diakritiky (ľahšie sa tak píšu vzorce) fiskalnyRokZaciatokMesiac = 3, fiskalnyRokPredpona = "FY", polrokPredpona = "H", kvartalPredpona = "Q", mesiacPredpona = "M", tyzdenPredpona = "W", pociatocnyDatum = #date(pociatocnyRok, 1, 1), koncovyDatum = #date(koncovyRok, 12, 31), trvanie = Duration.Days(Duration.From(koncovyDatum - pociatocnyDatum)) + 1, anoNie = if jazyk = "sk-SK" then {"áno", "nie"} else if jazyk = "cs-CZ" then {"ano", "ne"} else if jazyk = "en-US" then {"yes", "no"} else if jazyk = "de-DE" or jazyk = "de-AT" then {"ja", "nein"} else {"xxx", "xxx"}, podporovanyJazyk = List.Contains({"sk-SK", "cs-CZ", "en-US", "de-DE", "de-AT"}, jazyk), fxWeekOfCalendar = (Data as date) as number => let Weekday = Date.DayOfWeek(Data) + 1, Part1 = Number.From(Data) - Weekday + 11, Part2 = Number.From(#date(Date.Year(Date.From(Number.From(Data) + 4 - Weekday)),1,1)), Part3 = (Part1 - Part2) / 7, Tranc = Part3 - Number.Mod(Part3, 1) in Tranc, Zdroj = if podporovanyJazyk then List.Dates(pociatocnyDatum, trvanie, #duration(1, 0, 0, 0)) else error [Message = "Nie je možné vygenerovať časovú tabuľku.", Detail ="Nepodporovaný jazyk"], #"Konvertované na tabuľku" = Table.FromList(Zdroj, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Premenované stĺpce" = Table.RenameColumns(#"Konvertované na tabuľku",{{"Column1", "Dátum"}}), #"Zmenený typ" = Table.TransformColumnTypes(#"Premenované stĺpce",{{"Dátum", type date}}), #"Vložené ID dátumu" = Table.AddColumn(#"Zmenený typ", "ID dátumu", each Date.Year([Dátum]) * 10000 + Date.Month([Dátum]) * 100 + Date.Day([Dátum]), Int64.Type), #"Vložený rok" = Table.AddColumn(#"Vložené ID dátumu", "Rok", each Date.Year([Dátum]), Int64.Type), #"Vložený polrok" = Table.AddColumn(#"Vložený rok", "Polrok", each if Date.Month([Dátum]) < 7 then 1 else 2, Int64.Type), #"Vložený rok-polrok" = Table.AddColumn(#"Vložený polrok", "Rok-Polrok", each Text.From([Rok]) & "-" & polrokPredpona & Text.From([Polrok]), type text), #"Vložený štvrťrok" = Table.AddColumn(#"Vložený rok-polrok", "Štvrťrok", each Date.QuarterOfYear([Dátum]), Int64.Type), #"Vložený rok-štvrťrok" = Table.AddColumn(#"Vložený štvrťrok", "Rok-Štvrťrok", each Text.From([Rok]) & "-" & kvartalPredpona & Text.From([Štvrťrok]), type text), #"Vložený mesiac" = Table.AddColumn(#"Vložený rok-štvrťrok", "Mesiac", each Date.Month([Dátum]), Int64.Type), #"Vložený rok-mesiac" = Table.AddColumn(#"Vložený mesiac", "Rok-Mesiac", each Text.From([Rok]) & "-" & Text.PadStart(Text.From([Mesiac]), 2, "0"), type text), #"Vložený deň" = Table.AddColumn(#"Vložený rok-mesiac", "Deň", each Date.Day([Dátum]), Int64.Type), #"Vložený týždeň v roku" = Table.AddColumn(#"Vložený deň", "Týždeň", each Date.WeekOfYear([Dátum]), Int64.Type), #"Vložený týždeň ISO" = Table.AddColumn(#"Vložený týždeň v roku", "Týždeň ISO", each fxWeekOfCalendar([Dátum]), Int64.Type), #"Vložený rok ISO" = Table.AddColumn(#"Vložený týždeň ISO", "Rok ISO", each Date.Year(Date.AddDays([Dátum], 26 - [Týždeň ISO]))), #"Vložený rok-týždeň" = Table.AddColumn(#"Vložený rok ISO", "Rok-Týždeň", each Text.From([Rok]) & "-" & tyzdenPredpona & Text.PadStart(Text.From([Týždeň]), 2, "0")), #"Vložený rok-týždeň ISO" = Table.Buffer(Table.AddColumn(#"Vložený rok-týždeň", "Rok-Týždeň ISO", each Text.From([Rok ISO]) & "-" & tyzdenPredpona & Text.PadStart(Text.From([Týždeň ISO]), 2, "0"))), #"Počet týždňov v predchádzajúcich rokoch" = (stlpce as list) as table => let Zdroj = #"Vložený rok-týždeň ISO", #"Odstránené ostatné stĺpce" = Table.SelectColumns(Zdroj, stlpce), #"Zoskupené riadky" = Table.Buffer(Table.Sort(Table.Group(#"Odstránené ostatné stĺpce", {stlpce{0}}, {{"Max týždeň", each List.Max(Table.Column(_, stlpce{1})), type number}}), {stlpce{0}, Order.Ascending})), Indexovane = Table.AddIndexColumn(#"Zoskupené riadky", "Index", 1, 1), #"Pridané vlastné" = Table.AddColumn(Indexovane, "Počet týždňov v predchádzajúcich rokoch", each List.Sum(List.Range(Indexovane[Max týždeň], 0, [Index] - 1)), Int64.Type), vysledok = Table.ReplaceValue(#"Pridané vlastné", null, 0, Replacer.ReplaceValue, {"Počet týždňov v predchádzajúcich rokoch"}) in vysledok, zoskupeneRokyTyzdne = Table.Buffer(#"Počet týždňov v predchádzajúcich rokoch"({"Rok", "Týždeň"})), #"Vložený počet týždňov v predchádzajúcich rokoch" = Table.AddColumn(#"Vložený rok-týždeň ISO", "Počet týždňov v predchádzajúcich rokoch", each Table.SelectRows(zoskupeneRokyTyzdne, (PTPR) => [Rok] = PTPR[Rok])[Počet týždňov v predchádzajúcich rokoch]{0}), #"Vložené poradové číslo týždňa od začiatku" = Table.AddColumn(#"Vložený počet týždňov v predchádzajúcich rokoch", "Poradové číslo týždňa od začiatku", each [Počet týždňov v predchádzajúcich rokoch] + [Týždeň]), zoskupeneRokyTyzdneISO = Table.Buffer(#"Počet týždňov v predchádzajúcich rokoch"({"Rok ISO", "Týždeň ISO"})), #"Vložený počet ISO týždňov v predchádzajúcich rokoch" = Table.AddColumn(#"Vložené poradové číslo týždňa od začiatku", "Počet ISO týždňov v predchádzajúcich rokoch", each Table.SelectRows(zoskupeneRokyTyzdneISO, (PTPR) => [Rok ISO] = PTPR[Rok ISO])[Počet týždňov v predchádzajúcich rokoch]{0}), #"Vložené poradové číslo ISO týždňa od začiatku" = Table.AddColumn(#"Vložený počet ISO týždňov v predchádzajúcich rokoch", "Poradové číslo ISO týždňa od začiatku", each [Počet ISO týždňov v predchádzajúcich rokoch] + [Týždeň ISO]), #"Vložený začiatok roka" = Table.AddColumn(#"Vložené poradové číslo ISO týždňa od začiatku", "Začiatok roka", each Date.StartOfYear([Dátum]), type date), #"Vložený koniec roka" = Table.AddColumn(#"Vložený začiatok roka", "Koniec roka", each Date.EndOfYear([Dátum]), type date), #"Vložený začiatok štvrťroka" = Table.AddColumn(#"Vložený koniec roka", "Začiatok štvrťroka", each Date.StartOfQuarter([Dátum]), type date), #"Vložený koniec štvrťroka" = Table.AddColumn(#"Vložený začiatok štvrťroka", "Koniec štvrťroka", each Date.EndOfQuarter([Dátum]), type date), #"Vložený začiatok mesiaca" = Table.AddColumn(#"Vložený koniec štvrťroka", "Začiatok mesiaca", each Date.StartOfMonth([Dátum]), type date), #"Vložený koniec mesiaca" = Table.AddColumn(#"Vložený začiatok mesiaca", "Koniec mesiaca", each Date.EndOfMonth([Dátum]), type date), #"Vložený názov mesiaca" = Table.AddColumn(#"Vložený koniec mesiaca", "Názov mesiaca", each Date.MonthName([Dátum], jazyk), type text), #"Vložené dni v mesiaci" = Table.AddColumn(#"Vložený názov mesiaca", "Dni v mesiaci", each Date.DaysInMonth([Dátum]), Int64.Type), #"Vložený začiatok týždňa" = Table.AddColumn(#"Vložené dni v mesiaci", "Začiatok týždňa", each Date.StartOfWeek([Dátum]), type date), #"Vložený koniec týždňa" = Table.AddColumn(#"Vložený začiatok týždňa", "Koniec týždňa", each Date.EndOfWeek([Dátum]), type date), #"Vložený týždeň v mesiaci" = Table.AddColumn(#"Vložený koniec týždňa", "Týždeň v mesiaci", each Date.WeekOfMonth([Dátum]), Int64.Type), #"Vložený deň v týždni" = Table.AddColumn(#"Vložený týždeň v mesiaci", "Deň v týždni", each Date.DayOfWeek([Dátum], Day.Monday) + 1, Int64.Type), #"Vložený deň v roku" = Table.AddColumn(#"Vložený deň v týždni", "Deň v roku", each Date.DayOfYear([Dátum]), Int64.Type), #"Vložený názov dňa" = Table.AddColumn(#"Vložený deň v roku", "Názov dňa", each Date.DayOfWeekName([Dátum], jazyk), type text), #"Vložený víkend" = Table.AddColumn(#"Vložený názov dňa", "Víkend", each if [Deň v týždni] >= 6 then anoNie{0} else anoNie{1}, type text), #"Vložený prestupný rok" = Table.AddColumn(#"Vložený víkend", "Prestupný rok", each if Date.IsLeapYear([Dátum]) then anoNie{0} else anoNie{1}, type text), #"Vložený UNIX timestamp" = Table.AddColumn(#"Vložený prestupný rok", "UNIX timestamp", each Duration.TotalSeconds(DateTime.From([Dátum]) - #datetime(1970, 1, 1, 0, 0, 0)), Int64.Type), #"Vložený fiškálny rok" = Table.AddColumn(#"Vložený UNIX timestamp", "Fiškálny rok", each if [Dátum] < #date(Date.Year([Dátum]), fiskalnyRokZaciatokMesiac, 1) then [Rok] else [Rok] + 1, Int64.Type), #"Vložený fiškálny mesiac" = Table.AddColumn(#"Vložený fiškálny rok", "Fiškálny mesiac", each Number.Mod([Mesiac] + 12 - fiskalnyRokZaciatokMesiac, 12) + 1, Int64.Type), #"Vložený fiškálny štvrťrok" = Table.AddColumn(#"Vložený fiškálny mesiac", "Fiškálny štvrťrok", each Number.RoundDown(([Fiškálny mesiac] - 1) / 3) + 1, Int64.Type), #"Vložený fiškálny polrok" = Table.AddColumn(#"Vložený fiškálny štvrťrok", "Fiškálny polrok", each Number.RoundDown(([Fiškálny štvrťrok] - 1) / 2, 0) + 1, Int64.Type), #"Vložený fiškálny rok report" = Table.AddColumn(#"Vložený fiškálny polrok", "Fiškálny rok report", each fiskalnyRokPredpona & Text.From([Fiškálny rok])), #"Vložený fiškálny rok prelom" = Table.AddColumn(#"Vložený fiškálny rok report", "Fiškálny rok prelom", each fiskalnyRokPredpona & Text.From([Fiškálny rok]) & "/" & Text.From([Fiškálny rok] + 1)), #"Vložený fiškálny rok prelom krátky" = Table.AddColumn(#"Vložený fiškálny rok prelom", "Fiškálny rok prelom krátky", each fiskalnyRokPredpona & Number.ToText([Fiškálny rok] - 2000, "D2") & "/" & Number.ToText([Fiškálny rok] + 1 - 2000, "D2")), #"Vložený fiškálny polrok report" = Table.AddColumn(#"Vložený fiškálny rok prelom krátky", "Fiškálny polrok report", each fiskalnyRokPredpona & Text.From([Fiškálny rok]) & "-" & polrokPredpona & Text.From([Fiškálny polrok])), #"Vložený fiškálny štvrťrok report" = Table.AddColumn(#"Vložený fiškálny polrok report", "Fiškálny štvrťrok report", each fiskalnyRokPredpona & Text.From([Fiškálny rok]) & "-" & kvartalPredpona & Text.From([Fiškálny štvrťrok])), #"Vložený fiškálny mesiac report" = Table.AddColumn(#"Vložený fiškálny štvrťrok report", "Fiškálny mesiac report", each fiskalnyRokPredpona & Text.From([Fiškálny rok]) & "-" & mesiacPredpona & Text.PadStart(Text.From([Fiškálny mesiac]), 2, "0")), #"Vložený je aktuálny dátum" = Table.AddColumn(#"Vložený fiškálny mesiac report", "Je aktuálny dátum", each if [Dátum] = Date.From(DateTime.FixedLocalNow()) then anoNie{0} else anoNie{1}), #"Vložené poradové číslo polroka od začiatku" = Table.AddColumn(#"Vložený je aktuálny dátum", "Poradové číslo polroka od začiatku", each ([Rok] - pociatocnyRok) * 2 + [Polrok]), #"Vložené poradové číslo štvrťroka od začiatku" = Table.AddColumn(#"Vložené poradové číslo polroka od začiatku", "Poradové číslo štvrťroka od začiatku", each ([Rok] - pociatocnyRok) * 4 + [Štvrťrok]), #"Vložené poradové číslo mesiaca od začiatku" = Table.AddColumn(#"Vložené poradové číslo štvrťroka od začiatku", "Poradové číslo mesiaca od začiatku", each ([Rok] - pociatocnyRok) * 12 + [Mesiac]), #"Stĺpce so zmeneným poradím" = Table.ReorderColumns(#"Vložené poradové číslo mesiaca od začiatku",{"Dátum", "ID dátumu", "Rok", "Rok ISO", "Polrok", "Rok-Polrok", "Poradové číslo polroka od začiatku", "Štvrťrok", "Rok-Štvrťrok", "Poradové číslo štvrťroka od začiatku", "Mesiac", "Rok-Mesiac", "Názov mesiaca", "Poradové číslo mesiaca od začiatku", "Deň", "Deň v týždni", "Názov dňa", "Týždeň", "Rok-Týždeň", "Počet týždňov v predchádzajúcich rokoch", "Poradové číslo týždňa od začiatku", "Týždeň ISO", "Rok-Týždeň ISO", "Počet ISO týždňov v predchádzajúcich rokoch", "Poradové číslo ISO týždňa od začiatku", "Začiatok roka", "Koniec roka", "Začiatok štvrťroka", "Koniec štvrťroka", "Začiatok mesiaca", "Koniec mesiaca", "Začiatok týždňa", "Koniec týždňa", "Dni v mesiaci", "Týždeň v mesiaci", "Deň v roku", "Víkend", "Prestupný rok", "UNIX timestamp", "Fiškálny rok", "Fiškálny polrok", "Fiškálny štvrťrok", "Fiškálny mesiac", "Fiškálny rok report", "Fiškálny rok prelom", "Fiškálny rok prelom krátky", "Fiškálny polrok report", "Fiškálny štvrťrok report", "Fiškálny mesiac report", "Je aktuálny dátum"}), #"Pridaný index" = Table.AddIndexColumn(#"Stĺpce so zmeneným poradím", "Index", 1, 1), #"Zmenený typ1" = Table.TransformColumnTypes(#"Pridaný index",{{"Index", Int64.Type}, {"Fiškálny rok report", type text}, {"Fiškálny rok prelom", type text}, {"Fiškálny rok prelom krátky", type text}, {"Fiškálny polrok report", type text}, {"Fiškálny štvrťrok report", type text}, {"Fiškálny mesiac report", type text}, {"Rok ISO", Int64.Type}, {"Rok-Týždeň ISO", type text}, {"Rok-Týždeň", type text}, {"Počet týždňov v predchádzajúcich rokoch", Int64.Type}, {"Poradové číslo týždňa od začiatku", Int64.Type}, {"Počet ISO týždňov v predchádzajúcich rokoch", Int64.Type}, {"Poradové číslo ISO týždňa od začiatku", Int64.Type}, {"Je aktuálny dátum", type text}, {"Poradové číslo polroka od začiatku", Int64.Type}, {"Poradové číslo štvrťroka od začiatku", Int64.Type}, {"Poradové číslo mesiaca od začiatku", Int64.Type}}), nazvyStlpcovSK = { "Dátum", "ID dátumu", "Rok", "Rok ISO", "Polrok", "Štvrťrok", "Mesiac", "Názov mesiaca", "Deň", "Deň v týždni", "Názov dňa", "Týždeň", "Týždeň ISO", "Rok-Týždeň", "Rok-Týždeň ISO", "Počet týždňov v predchádzajúcich rokoch", "Poradové číslo týždňa od začiatku", "Počet ISO týždňov v predchádzajúcich rokoch", "Poradové číslo ISO týždňa od začiatku", "Začiatok roka", "Koniec roka", "Začiatok štvrťroka", "Koniec štvrťroka", "Začiatok mesiaca", "Koniec mesiaca", "Začiatok týždňa", "Koniec týždňa", "Dni v mesiaci", "Týždeň v mesiaci", "Deň v roku", "Prestupný rok", "Fiškálny rok", "Fiškálny polrok", "Fiškálny štvrťrok", "Fiškálny mesiac", "Rok-Polrok", "Rok-Štvrťrok", "Rok-Mesiac", "Víkend", "Fiškálny rok report", "Fiškálny rok prelom", "Fiškálny rok prelom krátky", "Fiškálny polrok report", "Fiškálny štvrťrok report", "Fiškálny mesiac report", "Index", "Je aktuálny dátum", "Poradové číslo polroka od začiatku", "Poradové číslo štvrťroka od začiatku", "Poradové číslo mesiaca od začiatku" }, nazvyStlpcovCZ = { "Datum", "ID datumu", "Rok", "Rok ISO", "Pololetí", "Čtvrťletí", "Měsíc", "Názov měsíce", "Den", "Den v týdnu", "Názov dne", "Týden", "Týden ISO", "Rok-Týden", "Rok-Týden ISO", "Počet týdnů v předchozích letech", "Pořadové číslo týdne od začátku", "Počet ISO týdnů v předchozích letech", "Pořadové číslo ISO týdne od začátku", "Začátek roku", "Konec roku", "Začátek čtvrťletí", "Konec čtvrťletí", "Začátek měsíce", "Konec měsíce", "Začátek týdne", "Konec týdne", "Dny v měsíci", "Týden v měsíci", "Den v roku", "Přestupní rok", "Fiskální rok", "Fiskální pololetí", "Fiskální čtvrťletí", "Fiskální měsíc", "Rok-Pololetí", "Rok-Čtvrťletí", "Rok-Měsíc", "Víkend", "Fiskální rok report", "Fiskální rok přelom", "Fiskální rok přelom krátky", "Fiskální pololetí report", "Fiskální čtvrťletí report", "Fiskální měsíc report", "Index", "Je aktuální datum", "Pořadové číslo pololetí od začátku", "Pořadové číslo čtvrťletí od začátku", "Pořadové číslo měsíce od začátku" }, nazvyStlpcovEN = { "Date", "Date ID", "Year", "Year ISO Number", "Semester", "Quarter", "Month", "Month Name", "Day", "Day of Week", "Day Name", "Week", "Week ISO Number", "Year-Week", "Year-Week ISO", "Number of Weeks in Previous Years", "Week Sequence Number", "Number of ISO Weeks in Previous Years", "ISO Week Sequence Number", "Start of Year", "End of Year", "Start of Quarter", "End Of Quarter", "Start of Month", "End of Month", "Start of Week", "End of Week", "Days in Month", "Week of Month", "Day of Year", "Is Leap Year", "Fiscal Year", "Fiscal Semester", "Fiscal Quarter", "Fiscal Month", "Year-Semester", "Year-Quarter", "Year-Month", "Weekend", "Fiscal Year Report", "Fiscal Year Turn Of", "Fiscal Year Turn Of Short", "Fiscal Semester Report", "Fiscal Quarter Report", "Fiscal Month Report", "Index", "Is current date", "Semester Sequence Number", "Quarter Sequence Number", "Month Sequence Number" }, nazvyStlpcovDE = { "Datum", "Datum ID", "Jahr", "Jahrnummer ISO", "Halbjahr", "Vierteljahr", "Monat", "Monatsname", "Tag", "Wochentagsnummer", "Tagsname", "Woche", "Wochennummer ISO", "Jahr-Woche", "Jahr-Woche ISO", "Anzahl von Wochen in vergangenen Jahren", "Wochensordinalzahl", "Anzahl von ISO Wochen in vergangenen Jahren", "ISO Wochensodinalzahl", "Anfang des Jahres", "Ende des Jahres", "Anfang des Vierteljahres", "Ende des Vierteljahres", "Anfang des Monats", "Ende des Monats", "Anfang der Woche", "Ende der Woche", "Tagsanzahl in Monat", "Woche in Monat", "Tag des Jahres", "Ist Schaltjahr", "Geschäftsjahr", "Geschäftshalbjahr", "Geschäftsvierteljahr", "Geschäftsmonat", "Jahr-Halbjahr", "Jahr-Vierteljahr", "Jahr-Monat", "Wochenende", "Geschäftsjahr Report", "Geschäftsjahreswechsel", "Geschäftsjahreswechsel kurz", "Geschäftshalbjahr Report", "Geschäftsvierteljahr Report", "Geschäftsmonat Report", "Index", "Ist aktuelles Datum", "Halbjahresordinalzahl", "Vierteljahresordinalzahl", "Monatsordinalzahl" }, nazvyStlpcovPovodne = nazvyStlpcovSK, nazvyStlpcov = if jazyk = "sk-SK" then nazvyStlpcovSK else if jazyk = "cs-CZ" then nazvyStlpcovCZ else if jazyk = "en-US" then nazvyStlpcovEN else if jazyk = "de-DE" or jazyk = "de-AT" then nazvyStlpcovDE else error [Message = "Nie je možné vygenerovať časovú tabuľku.", Detail ="Nepodporovaný jazyk"], nazvyStlpcovFinal = if nazvyStlpcovBezDiakritiky then List.Transform(nazvyStlpcov, each Text.FromBinary(Text.ToBinary(_, 1251), TextEncoding.Ascii)) else nazvyStlpcov, finalnePremenovanie = Table.RenameColumns(#"Zmenený typ1", List.Transform(nazvyStlpcovPovodne, each { _, nazvyStlpcovFinal{List.PositionOf(nazvyStlpcovPovodne, _)}})), vysledok = Table.Buffer(finalnePremenovanie) in vysledok