az időszak-kezelő függvények rendszerezése

2018-09-13    Excel 2016
A bővítmény dátum-kezelő függvényeinek egy része meghatározott időszak dátumait vizsgálja. Ez az időszak lehet egy dátumegység, például év, negyedév, hónap, de lehet a felhasználó által, határ-napokkal deklarált időintervallum is. Ezeket a függvényeket a bővítmény a semmitmondó „időbeliintelligencia-függvényeknek” nevezi. Mi, szerényen, csak maradjunk az időszak-kezelő függvények elnevezésnél!
Összesen harminchárom függvényről van szó. Ez a bővítmény 2016-os verziójának készlete. Először tekintsük át a függvények, ABC rendbe szedett, listáját.
DAX, időszak-kezelő függvények ABC sorrendben
Ahogy a képen látjuk az időszak-kezelő függvények többsége családos, de találunk közöttük egyedülállókat is. A családosak neve két részből áll. A kék betűs előtagból és a kötöjellel kezdődő utótagból. Például a CLOSINGBALANCE család háromtagú: CLOSINGBALANCEMONTH, CLOSINGBALANCEQUARTER és CLOSINGBALANCEYEAR.
Az időszak-kezelő függvények dátum-argumentumában nem csak a mezőnevet, de a táblanevet is meg kell adnunk, ’táblanév’[mezőnév] formában. A táblanév aposztrófjai elhagyhatók, ha a név nem tartalmaz szóközt és ékezetes magyar karaktereket. A táblanév hiányára a következő üzenet figyelmeztet: A következő elem értéke nem állapítható meg: „<mezőnév>”. Vagy nem létezik „<mezőnév>” elem, vagy nincs „<mezőnév>” nevű oszlophoz tartozó aktuális sor.
Az időszak-kezelő függvények bemutatásakor meg kell különböztetnünk egy dátumegység naptári és a táblában tárolt dátumait. Vegyük például a 2017-es év januári dátumait. A naptárban ennek a dátumegységnek a legkorábbi dátuma 2017-01-01, de a táblában tárolt dátumok között a legkorábbi csak 2017-01-25. A táblában álló dátumokat a „tárolt” jelzővel különböztetjük meg a naptárban állóktól!
Az időszak-kezelő függvénnyel elemzett dátumegység a pivot tábla sor- vagy oszlop mezőjének az a tétele, amelyhez az időszak-kezelő függvényt tartalmazó egyéni összesítés egy meghatározott előfordulása tartozik. Másként fogalmazva, az a dátumegység-tétel, amelyet az időszak-kezelő függvényt tartalmazó egyéni összesítés egy konkrét előfordulása, a pivot táblában elfoglalt pozíciójával, a sor- vagy oszlopterületen meghatároz, az „az elemzett dátumegység”.
Minden időszak-kezelő függvény egy vagy több dátumot keres egy meghatározott dátumegységben. Ez a dátum-tartomány a „vizsgált dátumegység”, amelyet a függvény típusa, argumentumai, illetve az elemzett dátumegység határoz meg. Tehát az elemzett dátumegység és a vizsgált dátumegység az időszak-kezelő függvények esetében nem szinonimák, hanem önálló fogalmak!
Egy példa segítségével megpróbálom a két fogalom különbségét szemléltetni. Van egy adatbázis-táblázatom, amelynek neve: A. Ebből a táblázatból csatolással táblát hoztam létre, amelyet összekapcsoltam a naptár-táblával. Az így kialakított adatbázist pivot táblákkal elemzem. Egyéni összesítésekkel megszámláltattam az egyes hónapokat megelőző- (P_MONTH) és az azokat követő hónapok (N_MONTH) dátumait. Az előző hónap dátumait a PREVIOUSMONTH, a következő hónap dátumait NEXTMONTH függvény szolgáltatta. Az egymezős virtuális táblák rekordjait a COUNTROWS függvénnyel számoltattam meg.
DAX, időszak-kezelő függvények, fogalmak
A kép közepén álló adatbázis-táblázatot egy-egy pivot tábla fogja közre. Mindkét elemzőtáblában a szürke nyíllal jelölt tételt figyeljük! A P_MONT és az N_MONT egyéni összesítés 3-as és 1-s értékei a 2015-ös év januárját határozzák meg a pivot tábla sor-területén. Ez a tétel a két időszak-kezelő függvény elemzett dátumegysége. A két függvény vizsgált dátumegysége, amelyekre a piros nyilak mutatnak már eltérő: a PREVIOUSMONTH függvényé a 2014-es év decembere, a NEXTMONTH függvényé a 2015-ös év februárja.
Az időszak-kezelő függvények meghatározott dátumot vagy dátumokat keresnek egy mezőben, de némelyik nem a dátumot, illetve dátumokat adja eredményül, hanem a dátumokat tartalmazó rekordokban elvégzi a felhasználó által előírt műveleteket. Tehát eredményüket vizsgálva az időszak-kezelő függvények három csoportba sorolhatók: [1] egyetlen dátumot visszaadók, [2] dátumokat eredményezők és [3] a dátum alapján kiválasztott rekordokat feldolgozók.
Utóbbi csoportba tartozik OPENINGBALANCE, a CLOSINGBALANCE és a TOTAL függvénycsalád. Az OPENINGBALANCE függvény az elemzett dátumot megelőző, a CLOSINGBALANCE és a TOTAL az elemzett dátum dátumegységét vizsgálják. Az OPENINGBALANCE és a CLOSINGBALANCE család tagjai a dátumegység legkésőbbi dátumát, a TOTAL függvénycsalád tagjai a dátumegység összes tárolt dátumát az elemzett dátumig bezárólag, tartalmazó rekordokat dolgozzák fel. Mindhárom függvénycsaládnak van hónapos, negyedéves és éves változata. Mivel alapvetően a napok vizsgálatára szolgáló függvényekről van szó, naptár-tábla nélkül is használhatók.
DAX, meghatározott napok rekordjait feldolgozó időszak-kezelő függvények
Amit fontos megjegyeznünk: az OPENINGBALANCE függvénycsalád az elemzett napot megelőző hónap vagy negyedév vagy év tárolt, legkésőbbi dátumát tartalmazó rekordokat dolgozza fel.
A további időszak-kezelő függvények dátumot vagy dátumokat adnak eredményül. Először tekintsük át az egyetlen dátumot eredményező függvényeket.
DAX, egyetlen dátumot eredményező időszak-kezelő függvények
Az ábra tanulsága szerint ezek a függvények az elemzett dátumegységet vizsgálják és a NEXTDAY és a PREVIOUSDAY függvényeket leszámítva, az elemzett dátumegység tárolt legkorábbi illetve legkésőbbi dátumát adják eredményül.
A dátumokat eredményező időszak-kezelő függvények a vizsgált időintervallumban előforduló dátumokat adják eredményül. Kivétel a napok elemzésére szolgáló DATES függvénycsalád, amely az elemzett napot tartalmazó dátumegység tárolt dátumait adja eredményül az elemzett nappal bezárólag.
A dátumokat eredményező függvények között is találunk hetek és félévek elemzésére is alkalmas függvényeket: DATESINPERIOD, DATESBETWEEN.
A DATEADD és a PARALLELPERIOD függvényekkel az elemzett dátumegység egy időben eltolt megfelelőjét vizsgálhatjuk. Ez lehet az elemzett dátumegységet megelőző/követő, tetszőleges sorszámú dátumegység.
A DATESINPERIOD függvény a vizsgált időszak első napjának, a DATESBETWEEN függvény az első és utolsó napjának, dátumegységektől független megadását teszik lehetővé.
DAX, egy időszak dátumait eredményező időszak-kezelő függvények
Miután a függvényeket eredményük szerinti csoportosításban rendszereztük, keressünk más, az osztályozásra alkalmas közös tulajdonságokat!
A TOTAL és a DATES függvénycsalád rokonsága szembeötlő, nemcsak tagjaik elnevezése, de az elemzendő és a vizsgált dátumegységeik is azonosak, sőt a keresett dátumok is megegyeznek.
DAX, a TOTAL és a DATES függvény-család
Tehát mindkét függvénycsalád tagjai az elemzett napot tartalmazó dátumegység dátumait gyűjtik össze az elemzett nappal bezárólag. A különbség csupán annyi, hogy a TOTAL függvények a megtalált dátumokat tartalmazó rekordokban kiértékelik az argumentumukkal meghatározott kifejezést, a DATES függvények pedig a megtalált dátumokat adják eredményül.
margitfalvi.arpad@gmail.com