// ultimátna časová tabuľka pre čas, v1.00 // stiahnuté z webu www.powerpivot.sk let granularita = 3, // 1 = hodiny, 2 = minuty, 3 = sekundy vlastnyIntervalMinuty = 20, vlastnyIntervalMedzihodinovyMinuty = 35, pracovnaDobaZaciatok = #time(9, 0, 0), pracovnaDobaKoniec = #time(17, 0, 0), jazyk = "sk-SK", // slovenčina = sk-SK, čeština = cs-CZ, angličtina = en-US nazvyStlpcovBezDiakritiky = false, // zadajte true, ak chcete mať názvy stĺpcov bez diakritiky (ľahšie sa tak píšu vzorce) pocetRiadkov = if granularita = 1 then 24 else if granularita = 2 then 24*60 else if granularita = 3 then 24*60*60 else error [Message = "Nie je možné vygenerovať časovú tabuľku.", Detail ="Nepodporovaný typ granularity"], 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 {"xxx", "xxx"}, castDna = if jazyk = "sk-SK" then {"doobeda", "poobede"} else if jazyk = "cs-CZ" then {"dopoledne", "odpoledne"} else if jazyk = "en-US" then {"AM", "PM"} else {"xxx", "xxx"}, podporovanyJazyk = List.Contains({"sk-SK", "cs-CZ", "en-US"}, jazyk), Zdroj = List.Times(#time(0, 0, 0), pocetRiadkov, if granularita = 1 then #duration(0, 1, 0, 0) else if granularita = 2 then #duration(0, 0, 1, 0) else if granularita = 3 then #duration(0, 0, 0, 1) else error [Message = "Nie je možné vygenerovať časovú tabuľku.", Detail ="Nepodporovaný typ granularity"]), #"Konvertované na tabuľku" = Table.FromList(Zdroj, Splitter.SplitByNothing(), null, null, ExtraValues.Error), #"Premenované stĺpce" = Table.RenameColumns(#"Konvertované na tabuľku",{{"Column1", "Čas"}}), #"Pridané vlastné16" = Table.AddColumn(#"Premenované stĺpce", "ID času", each if granularita = 1 then Time.ToText([Čas], "HH") else if granularita = 2 then Time.ToText([Čas], "HHmm") else if granularita = 3 then Time.ToText([Čas], "HHmmss") else null), #"Pridaný index" = Table.AddIndexColumn(#"Pridané vlastné16", "Index", 0, 1, Int64.Type), #"Vložená hodina" = Table.AddColumn(#"Pridaný index", "Hodina", each Time.Hour([Čas]), Int64.Type), #"Vložená minúta" = Table.AddColumn(#"Vložená hodina", "Minúta", each Time.Minute([Čas]), Int64.Type), #"Vložený počet minút od začiatku" = Table.AddColumn(#"Vložená minúta", "Počet minút od začiatku", each Number.RoundDown(Duration.TotalMinutes([Čas] - #time(0, 0, 0)))), #"Vložená sekunda" = Table.AddColumn(#"Vložený počet minút od začiatku", "Sekunda", each Time.Second([Čas]), type number), #"Vložený počet sekúnd od začiatku" = Table.AddColumn(#"Vložená sekunda", "Počet sekúnd od začiatku", each Number.RoundDown(Duration.TotalSeconds([Čas] - #time(0, 0, 0)))), #"Vložená polhodina" = Table.AddColumn(#"Vložený počet sekúnd od začiatku", "Polhodina", each if [Minúta]<30 then 1 else 2), #"Vložená štvrťhodina" = Table.AddColumn(#"Vložená polhodina", "Štvrťhodina", each if [Minúta] < 15 then 1 else if [Minúta] < 30 then 2 else if [Minúta] < 45 then 3 else 4), #"Vložená desaťminúta" = Table.AddColumn(#"Vložená štvrťhodina", "Desaťminúta", each if [Minúta] < 10 then 1 else if [Minúta] < 20 then 2 else if [Minúta] < 30 then 3 else if [Minúta] < 40 then 4 else if [Minúta] < 50 then 5 else 6), #"Vložená päťminúta" = Table.AddColumn(#"Vložená desaťminúta", "Päťminúta", each if [Minúta] < 5 then 1 else if [Minúta] < 10 then 2 else if [Minúta] < 15 then 3 else if [Minúta] < 20 then 4 else if [Minúta] < 25 then 5 else if [Minúta] < 30 then 6 else if [Minúta] < 35 then 7 else if [Minúta] < 40 then 8 else if [Minúta] < 45 then 9 else if [Minúta] < 50 then 10 else if [Minúta] < 55 then 11 else 12), #"Vložený vlastný interval" = Table.AddColumn(#"Vložená päťminúta", "Vlastný interval", each Number.IntegerDivide([Minúta], vlastnyIntervalMinuty) + 1), #"Vložený vlastný interval medzihodinový" = Table.AddColumn(#"Vložený vlastný interval", "Vlastný interval medzihodinový", each Number.IntegerDivide([Počet minút od začiatku], vlastnyIntervalMedzihodinovyMinuty) + 1), #"Vložený začiatok hodiny" = Table.AddColumn(#"Vložený vlastný interval medzihodinový", "Začiatok hodiny", each Time.StartOfHour([Čas]), type time), #"Vložený koniec hodiny" = Table.AddColumn(#"Vložený začiatok hodiny", "Koniec hodiny", each Time.EndOfHour([Čas]), type time), #"Vložený začiatok polhodiny" = Table.AddColumn(#"Vložený koniec hodiny", "Začiatok polhodiny", each #time(0, ([Polhodina]-1) * 30, 0)), #"Vložený začiatok štvrťhodiny" = Table.AddColumn(#"Vložený začiatok polhodiny", "Začiatok štvrťhodiny", each #time(0, ([Štvrťhodina]-1) * 15, 0)), #"Vložený začiatok desaťminúty" = Table.AddColumn(#"Vložený začiatok štvrťhodiny", "Začiatok desaťminúty", each #time(0, ([Desaťminúta]-1) * 10, 0)), #"Vložený začiatok päťminúty" = Table.AddColumn(#"Vložený začiatok desaťminúty", "Začiatok päťminúty", each #time(0, ([Päťminúta]-1) * 5, 0)), #"Vložený začiatok vlastného intervalu" = Table.AddColumn(#"Vložený začiatok päťminúty", "Začiatok vlastný interval", each #time(0, ([Vlastný interval]-1) * vlastnyIntervalMinuty, 0)), #"Vložený začiatok vlastného intervalu medzihodinového" = Table.AddColumn(#"Vložený začiatok vlastného intervalu", "Začiatok vlastný interval medzihodinový", each #time(Number.IntegerDivide(([Vlastný interval medzihodinový] - 1) * vlastnyIntervalMedzihodinovyMinuty, 60), Number.Mod(([Vlastný interval medzihodinový] - 1) * vlastnyIntervalMedzihodinovyMinuty, 60), 0)), #"Vložená hodina polhodina" = Table.AddColumn(#"Vložený začiatok vlastného intervalu medzihodinového", "Hodina polhodina", each #time([Hodina], ([Polhodina]-1) * 30, 0)), #"Vložená hodina štvrťhodina" = Table.AddColumn(#"Vložená hodina polhodina", "Hodina štvrťhodina", each #time([Hodina], ([Štvrťhodina]-1) * 15, 0)), #"Vložená hodina desaťminúta" = Table.AddColumn(#"Vložená hodina štvrťhodina", "Hodina desaťminúta", each #time([Hodina], ([Desaťminúta]-1) * 10, 0)), #"Vložená hodina päťminúta" = Table.AddColumn(#"Vložená hodina desaťminúta", "Hodina päťminúta", each #time([Hodina], ([Päťminúta]-1) * 5, 0)), #"Vložená hodina vlastný interval" = Table.AddColumn(#"Vložená hodina päťminúta", "Hodina vlastný interval", each #time([Hodina], ([Vlastný interval]-1) * vlastnyIntervalMinuty, 0)), #"Vložená časť dňa" = Table.AddColumn(#"Vložená hodina vlastný interval", "Časť dňa", each if [Hodina] < 12 then castDna{0} else castDna{1}), #"Vložená pracovná doba" = Table.AddColumn(#"Vložená časť dňa", "Pracovná doba", each if [Čas] >= pracovnaDobaZaciatok and [Čas] < pracovnaDobaKoniec then anoNie{0} else anoNie{1}), #"Zmenený typ" = Table.TransformColumnTypes(#"Vložená pracovná doba",{{"Čas", type time}, {"Polhodina", Int64.Type}, {"Štvrťhodina", Int64.Type}, {"Desaťminúta", Int64.Type}, {"Začiatok polhodiny", type time}, {"Začiatok štvrťhodiny", type time}, {"Začiatok desaťminúty", type time}, {"Pracovná doba", type text}, {"Päťminúta", Int64.Type}, {"Začiatok päťminúty", type time}, {"Hodina polhodina", type time}, {"Hodina štvrťhodina", type time}, {"Hodina desaťminúta", type time}, {"Hodina päťminúta", type time}, {"Časť dňa", type text}, {"Vlastný interval", Int64.Type}, {"Začiatok vlastný interval", type time}, {"Hodina vlastný interval", type time}, {"ID času", type text}, {"Počet minút od začiatku", Int64.Type}, {"Počet sekúnd od začiatku", Int64.Type}, {"Vlastný interval medzihodinový", Int64.Type}, {"Začiatok vlastný interval medzihodinový", type time}, {"Sekunda", Int64.Type}}), nazvyStlpcovSK = { "Čas", "ID času", "Index", "Hodina", "Minúta", "Počet minút od začiatku", "Sekunda", "Počet sekúnd od začiatku", "Polhodina", "Štvrťhodina", "Desaťminúta", "Päťminúta", "Vlastný interval", "Vlastný interval medzihodinový", "Začiatok hodiny", "Koniec hodiny", "Začiatok polhodiny", "Začiatok štvrťhodiny", "Začiatok desaťminúty", "Začiatok päťminúty", "Začiatok vlastný interval", "Začiatok vlastný interval medzihodinový", "Hodina polhodina", "Hodina štvrťhodina", "Hodina desaťminúta", "Hodina päťminúta", "Hodina vlastný interval", "Časť dňa", "Pracovná doba" }, nazvyStlpcovCZ = { "Čas", "ID času", "Index", "Hodina", "Minuta", "Počet minut od začátku", "Sekunda", "Počet sekund od začátku", "Polhodina", "Čtvrthodina", "Desetiminuta", "Pětiminuta", "Vlastní interval", "Vlastní interval mezihodinový", "Začátek hodiny", "Konec hodiny", "Začátek polhodiny", "Začátek čtvrthodiny", "Začátek desetiminuty", "Začátek pětiminuty", "Začátek vlastní interval", "Začátek vlastní interval mezihodinový", "Hodina polhodina", "Hodina čtvrthodina", "Hodina desetiminuta", "Hodina pětiminuta", "Hodina vlastní interval", "Čásť dne", "Pracovní doba" }, nazvyStlpcovEN = { "Time", "Time ID", "Index", "Hour", "Minute", "Minute Sequence Number", "Second", "Second Sequence Number", "Half Hour", "Quarter Hour", "Ten-minute", "Five-minute", "Custom Interval", "Custom Interval Cross-hour", "Start of Hour", "End of Hour", "Start of Half Hour", "Start of Quarter Hour", "Start of Ten-minute", "Start of Five-minute", "Start of Custom Interval", "Start of Custom Interval Cross-hour", "Hour Half Hour", "Hour Quarter Hour", "Hour Ten-minute", "Hour Five-minute", "Hour Custom Interval", "Time of Day", "Working Hours" }, nazvyStlpcovPovodne = nazvyStlpcovSK, nazvyStlpcov = if jazyk = "sk-SK" then nazvyStlpcovSK else if jazyk = "cs-CZ" then nazvyStlpcovCZ else if jazyk = "en-US" then nazvyStlpcovEN 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ý typ", List.Zip({nazvyStlpcovPovodne, nazvyStlpcovFinal})), vysledok = Table.Buffer(finalnePremenovanie) in vysledok