3 szempont, amit a hét hierarchia tervezéskor figyelembe kell vennie!
Egy üzletileg értékes hét hierarchia beillesztése az idő dimenzióba csak látszólag egyszerű feladat. Amikor eldönti, hogy adattárháza, vagy üzleti intelligencia rendszerének adatait hét szinten is ki akarja mutatni, akkor három dologról kell döntenie:
- Mikor, melyik napon kezdődjön az év első hete,
- Hogyan aggregálja a heteket év szintre,
- Hogyan hasonlítsa össze a heteket idősorosan
Melyik napon kezdődik az év első hete?
A kérdés talán triviálisnak tűnhet, hiszen az ember azt gondolja, hogy pontosan definiálva van, hogy mikor kezdődik az év első hete. De vajon tényleg triviális-e?
Ha megnézi a naptárt az asztalán, vagy megnyitja az Outlook-ot, bizony előfordul, hogy eltérő eredményeket kap. Pedig a hetek kezdete szabványosítva van, csak ehhez nem mindenki alkalmazkodik...
Az éve első hete lehet:
- január 1-ét tartalmazó hét
- január első teljes hete
- január 4-ét tartalmazó hét.
Az Outlook alapértelmezésként a január 1-ét tartalmazó hét módszerét támogatja (1.), az asztali naptáram a január első teljes hete módszerét (2.), az ISO szabvány pedig a január 4.-ét tartalmazó hét módszerét. (3.)
(1), (3)
(2)
Az ISO 8601-es szabvány
Az ISO 8601-es szabvány kifejezetten az adatelemekkel, adatcsere formátumokkal, információcserével és a dátumok és időpontok ábrázolásával foglalkozik. A szabvány szerint az év első hete az a hét, amely tartalmazza az év első csütörtökét, (vagy január 4.-ét).
Másképpen fogalmazva, ha január elseje hétfőre, keddre, szerdára vagy csütörtökre esik, akkor január elseje az 1. hétre esik, ha nem, akkor az 52. vagy 53. hétre.
Megj.: Ha megkérdezzük az elemzőket vagy a kontrollereket, hogy ők hogyan határozzák meg, az év első hetét, akkor nagy valószínűséggel azt válaszolják, hogy az év leső hete, az a hét ahová a több nap esik. Ez a pongyola megfogalmazás ekvivalens az ISO 8601-es szabvány ajánlásával.
Nézzük, hogy az egyes módszerek szerint hogyan alakul ki az év első hete:
Ha január 1. csütörtökre esik
Ha január 1. Péntekre esik
Miután eldöntötte, hogy mikor kezdődjön az adattárházban az év első hete, már csak azt kell eldöntenie, hogy hogyan aggregálja fel a heteket. Másképpen fogalmazva, hogyan építse fel a nap-hét-év hierarchiát.
Hetek aggregálása
Ha megnézi a fenti két ábrát, akkor már láthatja, hogy bármelyik módszert választja a hetek nem aggregálhatóak a naptári évbe! Az első (vagy az utolsó) hét egyik fele, vagy az egyik vagy a másik évbe esik. (Kivéve, ha az év első napja hétfőre esik)
Mutatok egy rossz példát: Az Analysis Services a beépített server Time dimenzióját úgy építi fel, hogy csonka heteket generál:
Hibás elgondolás: 4 napos hét nincs!
Ha eszerint a módszer szerint építi fel hierarchiát, akkor a heteket semmire nem fogja tudni majd használni. Legalábbis arra nem, amire az elemzők szeretnék. Mert bár ez így technikailag helyes, üzletileg nem sok értelme van! Miért?
Mert nincs 4 napos hét. Egy hét mindig 7 napos! És amikor a felhasználók hetek mentén elemeznek, akkor ezt a törvényszerűséget ki akarják használni! Ugyanis egy 4 napos hét összevetése egy 7 napos héttel olyan, mintha almát hasonlítanánk körtéhez.
Képzeljen el egy olyan lekérdezést, amely mindig az utolsó 4 hét átlagát adja vissza. És képzelje el azt is, mi történik ha az utolsó négy hétbe beleesik egy 4 napos és egy 3 napos hét (a két 7 napos hét helyett)...
Szumma szummárum a naptári hetek nem aggregálhatóak naptári évbe! Ne építsen naptári Év-Hét-Nap hierarchiát! Pénzügyit igen,ha a pénzügyi év a pénzügy év első hetének hétfőjével indul, de naptárit ne.
Módszerek hetek aggregálására
- Nincs aggregálva (nincs bekötve a naptári év alá)
- Speciális év hierarchia (ISO szerint)
Nincs aggregálás
Az első és legegyszerűbb megoldás, ha a heteket nem aggregálja fel év szintre. Azaz a Nap-Hét-Év hierarchia helyett csak a Nap-Hét hierarchiát épít (vagyis készít egy hét attribútumot, amely tartalmazza az összes hetet: 2007-W01; 2007-W02, …)
Első hallásra talán eretnek gondolatnak tűnik, hogy ne készítsen év-hét hierarchiát, de gondolja csak végig, hogy mire használják az üzleti felhasználók a heteket?
Az üzleti felhasználók a heteket rendszerint a heti teljesítmények mérésre használják: Mennyi volt az árbevétel az előző héten, mennyi volt ez a megelőző héthez viszonyítva, Mennyi bevételt termeltünk az előző 12 hétben és mennyi várható a következő 12 hétben, ...
Ezen igények kielégítéséhez nem kell év hierarchia. Sőt, jobb is ha nem készítünk, mert heteket hasonlítunk hetekhez, amelyek átnyúlnak az évek határain. S, ha felhasználói arra kíváncsiak, hogy mennyi volt az első hét 2003-ra eső része és mennyi volt 2004-re eső része, akkor a riport készítésekor az első hét mellé ágyazzák be a naptári éveket, és megkapják a várt eredményt
Speciális év hierarchia
A másik megoldás, hogy egy speciális év hierarchiát készít. Azaz létrehoz fiktív éveket, és oda aggregálja a heteket. Talán első hallásra ez is eretnek módszernek tűnik, de mindjárt elmagyarázom, hogy miért nem az:
Nézze meg, hogy az elemzők az Ön cégénél hogyan határozzák meg az év összesen forgalmát a hetekből: fogják és összeadják őket. Lévén hogy nincs jobb eszközük,s csak heti adatok állnak rendelkezésükre, más lehetőségük nem nagyon van. Aztán ezt a hetek összegeként kapott évet vagy korrigálják, vagy nem. Minden esetre az ő számukra nem idegen ez a hetekből összeállított speciális év összesen. (persze önnek majd jól el kell különíteni ezt a fiktív évet a tényleges naptári évtől)
Vizsgáljuk meg mit mond az ISO 8601-es szabvány a hetek felösszegzéséről: A szabvány szerint az ISO heteket ISO évekbe kell összegezni. Azaz az ISO év az év első hetének hétfőjével indul és a következő ISO év előtti vasárnappal zárul. (Tehát az ISO év nem január elsejével kezdődik, hanem január első hetének első napjával, ami lehet december 29 és január 4 között bármi!)
Azaz az ISO is úgy oldja meg a problémát, hogy fiktív éveket hoz létre. A fenti példánál maradva 2003. december 29. –e az ISO szerint leírható, mint „2004-W01-1” azaz a 2004-es ISO év első hetének első napja.
Váltsunk témát és nézzük meg, hogy hogyan hasonlíthatjuk össze hetek teljesítményét. Például az 53. hét teljesítményét az előző év 53. hetének teljesítményével...
Hetek idősoros összehasonlítása
Most, hogy már meghatározta, hogy melyik napon kezdődik az év első hete, tudja, hogy milyen hierarchiát épít a hetekre, már csak egy dolgot kell végig gondolnia: Hogyan számítsa ki a hetek kumulált értékét és előző év azonos hetétől való eltérését. Kezdjük a kumulálttal (YTD).
Kumulásás
A heteken nehéz YTD-et számolni, hiszen a hetek nem az év elején kezdődnek. Ha megkérdez egy elemzőt, hogy mit jelent neki a 10. heti YTD (Year to Date) érték, akkor kapásból rávágja, hogy az év elejétől a 10. hétig kumulált értéket. Ha ezt meg akarja valósítani, akkor össze kell adnia az első 10 hetet és ehhez hozzá kell adnia (vagy le kell vonnia) a hét csonka részét (amelyik átnyúlik az éven). Ennek megoldása MDX-ben nem tartozik a legtriviálisabb feladatok közé…
Előző év azonos hete.
Az előző év azonos hetének megvalósítása technológiai szempontból két módszer is kínálkozik: Az egyik, hogy visszalép az időben 52 hetet (LAG() MDX függvény), a másik veszi az előző év annyiadik hetét, ahányadik hét a mostani (ParallelPeriod() MDX függvény) Azaz ha ma a 10. hét van akkor veszi az előző év 10. hetét.
A problémák az 53 hetes éveknél kezdődnek. A ParallelPeriod() az 53. hétre nem ad vissza semmit, a LAG(52) pedig az 53. hétre az év 1. hetét fogja visszaadni, aztán az 53. hétre már a 2.-at és így tovább. Talán a LAG()választása szerencsésebb mert - ha nem is szépen - de vele legalább le fogja tudja kezelni a csonka heteket. (iif 53. hét then...)
Összefoglalás.
Egy üzletileg értelmezhető hét hierarchia beillesztése az idő dimenzióba csak látszólag egyszerű feladat. Egy jó hierarchia elkészítéséhez körül kell járnia, hogy mikor kezdődik az év első hete, hogyan fogja a heteket felaggregálni év szintre és azt is, hogy hogyan fogja őket idősorosan összehasonlítani. Persze, ha a pénzügyi éve mindig az első hét hétfőjével indul, akkor mindezek nem jelentenek problémát. De általában nem ez a helyzet.
Sok sikert a megvalósításhoz!
Felhasznált irodalom:
Kapcsolódó anyagok:
Kővári Attila - BI projekt
Új hozzászólás