a DAX alapjai
2019-09-06    Excel 2019
A bővítmény képleteiben használandó operátor- és függvény-készletet, valamint a használatukat leíró szemantikai- és szintaktikai sza­bály-rendszert „Data Analysis Expressions”, röviden DAX-nak nevezzük. Az angol kifejezés jelentése „adatelemző kifejezések”.
    A DAX képletnek is egyenlőségjellel (=) kell kezdődnie, de az előjel (-, +), mint képlet-jelző a bővítményben hibát eredményez!
    A PowerPivot és a program aritmetikai (^, *, /, +, -), összehasonlító (<, <=, =, >=, >, <>) és szöveg-összefűző (&) operátorai azonosak, de a logikai műveletek deklarálása már eltérő.
DAX, logikai műveletek
Az IN operátorral csoportot deklarálhatunk, amelynek elemei logikai VAGY viszonyban állnak egymással. Az elemeket kapcsos zárójelek kö­zött, pontosvesszővel elválasztva kell felsorolni. A csoport tagjai azonos adattípusú konstansok vagy kifejezések. A szövegeket és a dá­tu­mo­kat idézőjelzni kell. Például: IN { ”Vác” ; ”Érd” ; ”Ózd” ; ”Fót” }. Az IN műveletet VAGY láncolásnak is nevezhetjük, mert a csoportot a VAGY operátorral is képezni tud­juk: ”Vác” || ”Érd” || ”Ózd” || ”Fót”. Az IN operátor általános alakja: <mezőnév vagy kifejezés> IN { elem1 ; elem2 ; elem3 … elemn }. A logikai művelet akkor ad IGAZ eredményt ha a csoport valamelyik eleme egyenlő az IN operátort másik ol­da­lán álló adat­tal.
    Az IN operátorral deklarált elemek tagadása a kifejezéssel tör­té­nik. A kifejezés jelentése, az előző példánál maradva: a város nem Vác, nem Érd, nem Ózd és nem is Fót. Természetesen a logikai ope­rá­to­rok mel­lett a DAX-nak is vannak logikai függvényei.
    DAX-képletben a százalék jel (%) nem használható.
    A dátum-konstansokat, mint az Excelben, idézőjelek között kell beírnunk. A bővítmény képleteiben is használhatjuk a perjeles for­má­tu­mot: évszám két számjeggyel, perjel, hónapszám vezető nulla nélkül, perjel, napszám vezető nulla nélkül (éé/h/n). A perjel helyett kötőjelet is al­kal­maz­ha­tunk.
    A képletben szereplő üres bejegyzések kezelése több ponton eltér a programban megszokottól.
DAX, üres bejegyzések és a nulla kezelése
A táblázatból leszűrhető legfontosabb következtetés: a DAX képlet kiértékelése „üres ered-mény”-re is vezethet. És ez nem csak üres be­jegy­zé­sű rekordok feldolgozásakor fordulhat elő! Másként fogalmazva: nem minden DAX képlet ad eredményt.
    A műveletek végrehajtási sorrendje megegyezik a programban megszokottal, de a PowerPivot először az ÉS (&&) logikai műveletet hajt­ja végre és azután a VAGY-ot (||)!
    A DAX képletben névvel azonosított objektumok a táblák, a mezők és az összesítések. Az objektum-nevek nem tartalmazhatnak vezető, il­let­ve záró szóközt, vezérlő karaktereket és a DAX foglalt karaktereit.
a DAX foglalt karakterei
A táblaneveket aposztrófok között, a mezőneveket és az összesítések neveit szögletes zárójelek között kell a képletbe beírni. Ha a táb­la­név nem tartalmaz ékezetes karaktert és szóközt, akkor az aposztrófok elhagyhatók.
    A mezőnevek állhatnak önállóan vagy a táblanévvel együtt: mezőnév], ’táblanév’[mezőnév]. Utóbbi forma használata, számos függvény esetében, előírás. A bővítmény ezt az azonosítót „minősített névként” emlegeti
    A bővítmény név-követő szolgáltatása nem teljeskörű, ezért egy név módosítását követően ellenőrizni kell, hogy a PowerPivot el­vé­gez­te-e az objektum minden előfordulásában az átnevezést!
    A bővítmény képleteiben csak teljes mezőkre hivatkozhatunk, adattartományokra nem, de a kifejezésekben szűrőkkel szabályozhatjuk a mű­veletek hatókörét.
    Na és mi a helyzet a DAX függvényeivel, Tanító bácsi? Igazad van Pistike! Elmondom a legfontosabb tulajdonságaikat. A DAX függ­vény-nevek nincsenek magyarra fordítva! Tehát a SZUM az SUM, az ÁTLAG az AVERAGE, a HA az IF és így tovább.
    Nincsenek „kötetlen” argumentum-számú függvények. Az Excelben a leggyakrabban használt statisztikai függvényekkel (összeg, átlag, számok darabszáma…) akár kétszázötvenöt cellát vagy tartományt is megvizsgálhatunk, a DAX-ban azonban csak egyetlen mezőt. Ma­gya­rul, a DAX SUM függvénye egy-argumentumos.
    A DAX egyes függvényei gazda-szolga viszonyban állnak egymással. A szolga-függvény a képletben csak gazda-függvényének meg­ha­tá­ro­zott argumentumában szerepelhet, önállóan vagy más függvényben nem.
    A DAX függvény eredménye lehet egyetlen adat vagy egy virtuális tábla. Előbbit a bővítmény skaláris értéknek, utóbbit hol táblázatnak, hol táblának nevezi. A virtuális tábla a számítógép operatív tárjában tárolt adatszerkezet, amelyben az eredményként kapott adatok névvel azo­no­sí­tott „mezőkben” állnak és a logikailag összetartozó adatok „rekordokat” képeznek. Néhány függvény speciális virtuális táblát ered­mé­nyez, amely csak egyetlen rekordot, illetve egyetlen mezőt tartalmaz.
    A virtuális tábla az adatfeldolgozás egy részeredménye, mert a DAX képlet kiértékelése csak egyetlen adatot eredményezhet. Erre a tény­re figyelmeztet a bővítmény az alábbi képen látható üzenetében.
DAX, hibaüzenet virtuális táblát adó eredmény esetén
Az első mondat hülyeség, a második értelmetlen! Magyarul: A képlet hibás, mert kiértékelése egyetlen adat helyett, virtuális táblát ered­mé­nye­zett! A táblázat és a tábla fogalmak a bővítmény kezelő felületének nyelvezetében szinonimák. A virtuális táblát eredményező függ­vé­nyek tehát a DAX specialitásai. Képletben csak egy másik függvénybe ágyazottan szerepelhetnek.
    A DAX hat adattípussal dolgozik: szöveg, igaz/hamis, pénznem, egész szám, tizedes tört szám és dátumidő. Természetesen ezek a bő­vít­mény adattípusai! A dátumidő típus a PowerPivot sajátossága: a tábla forrásában álló dátumok a nulla óra nulla perc nulla másodperc idő­pont­tal, míg az időértékek az ezernyolcszázkilencvenkilenc december harmincadikai dátummal kiegészítve jelennek meg a táblában.
a DAX dátum és időkezelése, példa
Tanító bácsi! Mi ez az ezernyolcszázkilencvenkilences dátum?! A bővítmény dátum- és időkezelése hasonló a programéhoz, Pistike! A dá­tu­mok sorszámként, az időpontok nulla és egy közé eső tört-számként vannak tárolva. A bővítmény azonban felismeri a történelmi dá­tu­mo­kat is, ezért a nullát (1899-12-31) és a negatív számokat is fel kell használnia az 1900-01-01 előtti dátumok tárolására. A legkorábbi be­ol­vas­ha­tó dátum az időszámításunk kezdete, tehát 0001-01-01, ami -693 593-nak felel meg.
    A képlet kiértékelésekor az eltérő adattípusú operandusokat a bővítmény, ha lehetséges, azonos típusúra konvertálja. A következő táb­lá­zat a különböző típusú adatokkal végzet aritmetikai művelet eredményének típusát mutatja.
adattípus konverzió a képlet kiértékelésekor
A táblázat a különböző típusú adatokkal történő aritmetikai műveletek eredményének típusát mutatja. A műveleti jel bal oldalán a sor adat­tí­pu­sa, jobb oldalán az oszlop adattípusa áll. Tehát a táblázat első sora mutatja, milyen adattípusú eredményt kapunk, ha egészhez törtet adunk, ha egészhez pénzt adunk, ha egészhez dátumot adunk. A táblázat második sorában az áll, milyen eredményt kapunk ha egészből törtet, ha egészből pénzt, ha egészből dátumot vonunk ki…
    A táblázat tehát minden lehetséges variációt kétszer tartalmaz. Ha az eredmény típusára a két elem felcserélése nincs hatással, akkor az adott páros második előfordulásában, az áttekinthetőséget javítva, az eredményt már nem tüntettem fel. A DAX a képletben álló szö­veg­ként megadott számokat egésznek vagy törtnek, a logikai értékeket egész számoknak tekinti.
    A különböző adattípusú operandusok sikertelen homogenizálása hibaüzenetet generál.
DAX hibaüzenet, konvertálási hiba a képlet kiértékelésekor
A DAX-ot folyamatosan fejlesztik. Például az IN operátort a 2019-es verzióban vezették be, de a nyelv függvény-készlete is folyamatosan bő­vül. Erre a körülményre is fegyelemmel kell lennünk, ha nem a legfrissebb változattal dolgozunk!
letöltés pdf-ben
margitfalvi.arpad@gmail.com