< návrat zpět

MS Excel


Téma: PowerPivot - kalendář a 30min časy rss

Zaslal/a 3.4.2020 13:16

Ahoj všem,
dá se prosím nějak v PowerPivot (nebo klidně i jinde) vytvořit tabulka, kde bych měl zobrazeny data na určité období (v řádu x let) a současně každý den rozpadlý na jednotlivé 30min intervaly?
Něco v podobě:
3.4.2020 00:00:00
3.4.2020 00:30:00
3.4.2020 01:00:00
...
31.12.2025 23:30:00

Zkoušel jsem v PowerPivot využít fci Tabulka kalendářních dat (proto zmíněno v úvodu) ale nepodařilo se mi doplnit intervaly. Jen 1 den 1 řádek :/
V makru se mi nedaří zkombinovat cykly a výsledek je víceméně stejný jako v PP

Ve finále tabulka bude doplněna do dat.modelu v PP. Zatím ji chci připravit na 5let dopředu, teoreticky se pak někdy v budoucnu rozšíří (hudba budoucnosti:) )

Moc děkuji za každé tipy, jak toho docílit!

Zaslat odpověď >

icon #046352
eLCHa
Power query, např. něco takového
let
Casy = let
Zdroj = { Number.From(0)..Number.From(47) },
#"Převedené na tabulku" = Table.FromList(Zdroj, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Přidané: Vlastní" = Table.AddColumn(#"Převedené na tabulku", "CAS", each Time.From([Column1] * Number.From(#time(0,30,0))), type time),
#"Přidané: Vlastní1" = Table.AddColumn(#"Přidané: Vlastní", "PAR", each 1, Int8.Type),
#"Odebrané sloupce" = Table.RemoveColumns(#"Přidané: Vlastní1",{"Column1"})
in
#"Odebrané sloupce",
Zdroj = List.Dates(#date(2020, 1, 1), Duration.Days(#date(2021, 1, 1) - #date(2020, 1, 1)), #duration(1, 0, 0, 0)),
#"Převedené na tabulku" = Table.FromList(Zdroj, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Přejmenované sloupce" = Table.RenameColumns(#"Převedené na tabulku",{{"Column1", "DATUM"}}),
#"Změněný typ" = Table.TransformColumnTypes(#"Přejmenované sloupce",{{"DATUM", type date}}),
#"Přidané: Vlastní" = Table.AddColumn(#"Změněný typ", "PAR", each 1, Int8.Type),
#"Sloučené dotazy" = Table.NestedJoin(#"Přidané: Vlastní",{"PAR"},Casy,{"PAR"},"Casy",JoinKind.LeftOuter),
#"Rozbalené Casy" = Table.ExpandTableColumn(#"Sloučené dotazy", "Casy", {"CAS"}, {"CAS"}),
#"Odebrané sloupce" = Table.RemoveColumns(#"Rozbalené Casy",{"PAR"}),
#"Přidané: Vlastní1" = Table.AddColumn(#"Odebrané sloupce", "DATUM_CAS", each DateTime.From(Number.From([DATUM]) + Number.From([CAS])), type datetime)
in
#"Přidané: Vlastní1"
citovat
#046354
MePExG
Dobrý deň. Najskôr trochu k Vašej požiadavke. Zdrojové údaje tj. dátum s časom zaokrúhlite na 30 minút, aby sa to dalo pripojiť. Nezdá sa mi vhodné mať v jednej tabuľke dátumy a časy po 30 min. Skôr by som navrhoval dátum od času oddeliť do dvoch stĺpcov a tie prepojiť na dve tabuľky tj. zvlášť kalendár dátum a z toho vyplývajúce stĺpce rok, kvartál, mesiac, týždeň, deň, aktuálny RMQD, atď. a druhá tabuľka čas, ktorá buď bude rovno obsahovať zaokrúhlené časy na 30 min, alebo všetky časy napr. na minúty a v druhom stĺpci zaokrúhlené na 30 minúty a k tomu sa dajú pridať vypočítavané stĺpce, doobeda, poobede, pracovná doba, atď (pozor na zlomky minút [sekundy] aj tie treba odrezať pred pripojením poľa). Túto tabuľku časov pripojíte k času udalosti a môžete analyzovať dátumové a časové intervaly nezávisle od seba. ...a keď už pre nič iné, tak to urobte pre optimalizáciu modelu. Ćím menej jedinečných hodnôt tj. dátumy a časy na rok 365 riadkov tabuľka dátumov a 48 tabuľka časov, a v jednom poli sa to násobí tj. 365*48=17520 jedinečných dátumo-časov.citovat
#046357
avatar

eLCHa napsal/a:

Power query, např. něco takového
let
Casy = let
Zdroj = { Number.From(0)..Number.From(47) },
#"Převedené na tabulku" = Table.FromList(Zdroj, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Přidané: Vlastní" = Table.AddColumn(#"Převedené na .....


Děkuji za tip. Zkusil jsem přes Power Query a mám hotovo (do řádků jsem si dal data, do sloupců časy. Ty jsem pak zkopíroval na všechny řádky a přes PQ provedl převedení sloupců s časy na řádky a dostal jsem, co jsem potřeboval). Moc děkuji za tip a nakopnutí! 1citovat
#046358
avatar

mepexg napsal/a:

Dobrý deň. Najskôr trochu k Vašej požiadavke. Zdrojové údaje tj. dátum s časom zaokrúhlite na 30 minút, aby sa to dalo pripojiť. Nezdá sa mi vhodné mať v jednej tabuľke dátumy a časy po 30 min. Skôr by som navrhoval dátum od času oddeliť do dvoch stĺpcov a tie prepojiť na dve tabuľky tj. zvlášť kalendár dátum a z toho vyplývajúce stĺpce rok, kvartál, ......


Dobrý den, děkuji moc za podnět! Tento "kalendář" chci využít jako jedinečný identifikátor a "bod" na který budu moci napojit různé další zdroje dat. Zkouším vytvořit jeden rozsáhlejší report, u kterého jsem objevil i relace a propojování x zdrojů dat do jednoho "balíku" a teď se s tím vším zkouším naučit pracovat. A onen kalendář je aktuálně asi jediný identifikátor, který je shodný u všech zdrojů a chci jej použít pro vzájemné propojení a požití časových filtrů. Když jsem využil intervaly ze zdrojových dat, tak ne u všech mi do fungovalo a doufám, že díky tomuto se pohnu trochu dálcitovat
#046359
avatar
a co k předchozímu datu přičítat hodnotu 1/48citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje