Dátum tábla (Power Pivot / Power BI)

A legjobb gyakorlat szerint akár Power Pivotot, akár Power BI-t használunk mindig létre kell hoznunk az egy saját dátum táblát függetlenül attól, hogy a riportokhoz szükséges dátum attribútumok megtalálhatóak-e az adatmodellben vagy sem. (Ennek okáról itt olvashat: Miért építsünk mindig külön dátum táblát?)

Megj.: Mind a Power Pivot mind a Power BI tartalmaz beépített dátum táblát arra az esetre, ha nem hoznánk létre, de ennek borzalmas a teljesítménye (különösen a Power Pivot-é) és felhasználói szempontból sem kényelmes a használata. Úgyhogy nem használjuk. (A miértről majd részletesen írok egy külön cikket is, mert ez is megér egy misét)

Helyette saját dátum táblát építünk. Vagy Excellel, vagy Power Query-vel, vagy DAX-szal, vagy használjuk az adattárház dátum tábláját, stb. Akármelyik utat is választjuk, a dátum táblának meg kel felelnie a következő követelményeknek:

  • Mindig teljes évet tartalmazzon: Hiába csak május 23.-án történt az első tranzakció, dátum táblának az év elejétől kell tartalmaznia minden napot
  • Ne tartalmazzon lyukat: Tartalmazza az év összes napját még akkor is ha a hétvégéken sosem értékesítünk. Ha lyukakat tartalmaz a dátum tábla, akkor nem fogunk tudni szép grafikonokat csinálni, de ami még ennél is rosszabb, hogy rosszul fognak számolni a DateAdd (), SamePeriodLastYear() és egyéb idősor kalkuláló függvényeink. A Power BI nem is enged olyan dátum táblát létrehozni, amely lyukakat tartalmaz, de a Power Pivot igen.
  • Ne tartalmazzon duplikációkat: A dátum táblában egy nap csak egyszer szerepeljen
  • Legyen benne egy dátum típusú oszlop: E nélkül nem tudnánk használni a DAX idősor kalkuláló (Time Intelligence) függvényeit
  • Szereplejen benne a vállalatnál használt dátumtípusok összes előfordulása: Ha az adattárház egész számként tárolja a dátumot (ÉÉÉÉHHNN: 20200503), ha valamelyik forrásrendszer ÉÉÉÉ.HHH (2020.003) formátumban tárolja a hónapot, akkor ezeket az alteregókat vegyük fel a dátum táblába, mert így fogjuk tudni csak a közös dátumtáblára felfűzni az összes rendszer adatait.
  • Tartalmazzon minden szöveges oszlophoz egy sorrend oszlopot is, ha az oszlop ABC szerint rendezve eltérő sorrendet mutatna az időszak természetes sorrendjétől.
  • Tartalmazza a napok összes fontos jellemzőjét: Hétvége/hétköznap, áthelyezett munkanap, banki munkanap, stb. Minden olyan információt, ami az elemzésekhez, riportkészítéshez szükséges lehet.
  • Tartalmazza az időszakok nyelvi megfelelőit. Ha riportolunk angolul és magyarul is, akkor pl. a hónapok nevét tartalmazza angolul is és magyarul is
  • Tartalmazza az időszakok hosszú és rövid nevét: Pl.: január és jan. Grafikonokon csak a rövid megnevezéseket fogjuk tudni használni, szűrőkben szeletelőkben, táblázat soraiban elférnek a hosszú nevek is.
  • Tartalmazza az időszakokat évvel és év nélkül is. Pl.: 2020. január és január. Ha több éven keresztül átívelő idősort feszítünk ki egy grafikonra akkor az elsőt kell használnunk, ha évek közötti szezonalitást vizsgálunk, vagy csak egy éven belüli adatokat használunk, akkor a másodikat.
  • Tartamazza a speciális vizualizációhoz/szűrésekhez szükséges oszlopokat:
    • Utolsó (aktuális) hónap/nap jelző (szűrésekhez hogy mindig az aktuális hónap adatát mutassa a dashboard)
    • Hét/hónap/negyedév utolsó napja (kötésekhez, vizualizációkhoz)
    • távolság az aktuális hónaptól (Power BI csuszkához)
    • ...
  • Csak azokat az éveket tartalmazza, amelyre van adat az adatbázisban. Gyakori hiba, hogy készítünk egy dátum táblát ami 1900. január elsejétől 2999. december 31.-ig tartalmaz minden napot. Ez egyfelöl nagyon nehezen használható szűrőket eredményez (hiszen a felhasználóknak mindig 1900. január 1-től kell görgetniük az aktuális évtől) másrészről a FILTER() és idősor kalkuláló (Time intelligence) függvényeknek be kell járniuk a teljes táblát és ennek borzalmas lesz a teljesítménye.
  • Legyen mindenki számára elérhető: Jó lenne, ha mindenki ugyanezt a dátum táblát használná, így megspórolnánk azt, hogy mindenki létrehozza a sajátját, és egységes képet tudnánk mutatni a vállalaton riportokon. Ehhez az szükséges, hogy mindenki elérje a dátum táblát és mindenki tudja is, hogy hol van. Ha van adattárházunk akkor ott a helye (Persze csak akkor, ha MINDEN felhasználó kap jogosultságot a dátum táblához). Ha ez nem megoldható, akkor betehetjük egy template Power Pivot / Power BI sablonfájlba, eltárolhatjuk Excelben valamilyen mindenki számára elérhető helyen (SharePoint, Onedrive, ...) 
  • Power Pivot/Power BI oldalon legyen megjelölve dátum táblaként. Ez lehetőséget fog biztosítani arra, hogy
    • a táblákat és a dátum táblát ne csak a dátum típusú oszloppal lehessen összekötni. Ha ugyanis nem dátum típusú oszloppal kötünk, akkor dátum táblaként jelölés nélkül nem fognak működni az idősor kalkulációk (Time intelligence)
    • Javítsuk a felhasználói élményt azáltal, hogy a felhasználóknak ne kelljen szenvedniük a Power Pivot és Power BI által létrehozott automatikus dátum hierarchiáktól.

Kővári Attila - BI projekt

Önkiszolgáló BI WORKSHOP

Tudjon meg többet az itt elhangzottakról! Jelentkezzen a 2020. december 10-11.-i Power Pivot videókurzusra!  Részletek >>

hozzászólás

Ránéztem az asztali álló naptáramra bekötöttem virtuálisan a dátumtáblába, és megjelentek ilyenek is, hogy hányadik nap az évben az adott nap, hány nap van még hátra, mikor kel a nap (óó:mm), mikor nyugszik. De ezek márcsak fűszerek. :-) Köszönjük a sok tapasztalati infót. - "...ahogy a nagykönyvben meg van írva." :-)

Új hozzászólás