A DAX áttekintése
Az Adatelemzési kifejezések (DAX) az Analysis Servicesben, a Power BI-ban és a Power Pivotban az Excelben használt képletkifejezési nyelv. A DAX-képletek olyan függvényeket, operátorokat és értékeket tartalmaznak, amelyek speciális számításokat és lekérdezéseket hajtanak végre a táblázatos adatmodellek kapcsolódó tábláiban és oszlopaiban lévő adatokon.
Ez a cikk csak alapszintű bevezetést nyújt a DAX legfontosabb fogalmaiba. A DAX-ot az azt használó összes termékre vonatkozóan írja le. Előfordulhat, hogy bizonyos funkciók nem vonatkoznak bizonyos termékekre vagy használati esetekre. Tekintse meg a termék dokumentációját, amely leírja a DAX konkrét megvalósítását.
Számítások
A DAX-képleteket mértékekben, számított oszlopokban, számított táblákban és sorszintű biztonságban használják.
Mértékek
A mértékek olyan dinamikus számítási képletek, amelyekben az eredmények a környezettől függően változnak. A mértékeket olyan jelentésekben használják, amelyek támogatják a modelladatok kombinálását és szűrését több attribútum, például Power BI-jelentés, Excel-kimutatás vagy Kimutatásdiagram használatával. A mértékek a modelltervező DAX-szerkesztőlécével hozhatók létre.
A mértékek képletei használhatják az Autoszum funkcióval automatikusan létrehozott standard összesítő függvényeket, például a DARAB vagy a SZUM funkciót, vagy saját képletet is meghatározhat a DAX-szerkesztőléc használatával. A nevesített mértékek argumentumként átadhatók más mértéknek.
Amikor képletet határoz meg egy mértékhez a szerkesztőlécen, az Elemleírás funkció előnézetet jelenít meg arról, hogy az aktuális környezetben milyen eredmények lennének az összeghez, máskülönben az eredmények nem jelennek meg azonnal bárhol. Azért nem látja azonnal a számítás (szűrt) eredményeit, mert a mérték eredménye nem határozható meg környezet nélkül. A mérték kiértékeléséhez egy jelentéskészítő ügyfélalkalmazás szükséges, amely biztosítja az egyes cellákhoz kapcsolódó adatok lekéréséhez szükséges környezetet, majd kiértékeli az egyes cellák kifejezését. Ez az ügyfél lehet Excel-kimutatás vagy Kimutatásdiagram, Power BI-jelentés vagy táblakifejezés egy DAX-lekérdezésben az SQL Server Management Studióban (SSMS).
Az ügyféltől függetlenül a rendszer külön lekérdezést futtat az eredmények minden celláját. Ez azt jelenti, hogy egy kimutatás sor- és oszlopfejléceinek minden kombinációja, illetve a Power BI-jelentések szeletelőinek és szűrőinek minden egyes kiválasztása az adatok egy másik részhalmazát hozza létre, amelyre a mérték számítva van. Használja például ezt a nagyon egyszerű mértékképletet:
Total Sales = SUM([Sales Amount])
Amikor egy felhasználó a TotalSales mértéket egy jelentésben helyezi el, majd egy Termék tábla Termékkategória oszlopát szűrőkbe helyezi, az értékesítési összeg összegét az egyes termékkategóriákhoz számítja ki és jeleníti meg.
A számított oszlopoktól eltérően a mérték szintaxisa tartalmazza a mérték képlet előtti nevét. Az imént megadott példában az Összes értékesítés név jelenik meg a képlet előtt. Miután létrehozott egy mértéket, a név és annak definíciója megjelenik a jelentéskészítési ügyfélalkalmazás mezőlistájában, és a perspektíváktól és szerepköröktől függően a modell minden felhasználója számára elérhető.
To learn more, see:
Mértékek a Power BI Desktopban
Mértékek az Analysis Servicesben
Mértékek a Power Pivotban
Számított oszlopok
A számított oszlop egy olyan oszlop, amelyet hozzáad egy meglévő táblához (a modelltervezőben), majd létrehoz egy DAX-képletet, amely meghatározza az oszlop értékeit. Ha egy számított oszlop érvényes DAX-képletet tartalmaz, a rendszer a képlet beírása után azonnal kiszámítja az egyes sorok értékeit. Az értékek ezután a memóriabeli adatmodellben lesznek tárolva. Például egy Dátum táblában, amikor a képlet be van írva a szerkesztőlécbe:
= [Calendar Year] & " Q" & [Calendar Quarter]
A táblázat minden sorának értékét úgy számítjuk ki, hogy a Naptári év oszlopból (ugyanabban a Dátum táblában) értékeket vesz fel, hozzáad egy szóközt és a Q nagybetűt, majd hozzáadja az értékeket a Naptár negyedéve oszlopból (ugyanabban a Dátum táblában). A számított oszlop minden sorának eredményét azonnal kiszámítjuk, és például 2017 1. negyedévében jelenik meg. Az oszlopértékeket csak akkor számítja újra a rendszer, ha a táblázatot vagy a kapcsolódó táblázatot feldolgozzák (frissítik), vagy a modell ki van ürítve a memóriából, majd újra betöltődik, például egy Power BI Desktop-fájl bezárásakor és újbóli megnyitásakor.
To learn more, see:
Számított oszlopok a Power BI Desktopban
Számított oszlopok az Analysis Servicesben
Számított oszlopok a Power Pivotban.
Számított táblák
A számított tábla egy képletkifejezésen alapuló számított objektum, amely ugyanazon modell más tábláinak egészéből vagy egy részéből származik. Ahelyett, hogy egy adatforrásból kérdezi le és tölti be az új tábla oszlopait, egy DAX-képlet határozza meg a tábla értékeit.
A számított táblák hasznosak lehetnek egy szerepjáték-dimenzióban. Ilyen például a Date tábla OrderDate, ShipDate vagy DueDate néven, az idegenkulcs-kapcsolattól függően. Ha explicit módon hoz létre számított táblát a ShipDate-hez, egy különálló táblát kap, amely a lekérdezésekhez elérhető, és ugyanúgy működik, mint bármely más tábla. A számított táblák akkor is hasznosak, ha szűrt sorkészletet, illetve más meglévő táblák oszlopainak egy részét vagy szuperhalmazát konfigurálják. Ez lehetővé teszi, hogy az eredeti táblázat érintetlen maradjon, miközben a tábla változatait hozza létre bizonyos forgatókönyvek támogatásához.
A számított táblák támogatják a más táblákkal való kapcsolatokat. A számított tábla oszlopai adattípusokkal, formázással és adatkategóriákhoz tartozhatnak. A számított táblák elnevezése és felszínre kerülése vagy elrejtése ugyanúgy, mint bármely más tábla esetében. A számított táblák újra lesznek számítva, ha az adatokat lekérő táblák bármelyike frissül vagy frissül.
To learn more, see:
Számított táblák a Power BI Desktopban
Számított táblák az Analysis Servicesben.
Sorszintű biztonság
Sorszintű biztonság esetén a DAX-képletnek logikai IGAZ/FAL Standard kiadás feltételnek kell kiértékelnie, amely meghatározza, hogy egy adott szerepkör tagjai milyen sorokat adhatnak vissza egy lekérdezés eredményeivel. Az Értékesítési szerepkör tagjai esetében például az Ügyfelek tábla a következő DAX-képlettel:
= Customers[Country] = "USA"
Az Értékesítési szerepkör tagjai csak az USA-beli ügyfelek adatait tekinthetik meg, és az összesítéseket, például a SUM-t csak az USA-beli ügyfelek kapják vissza. A sorszintű biztonság nem érhető el a Power Pivotban az Excelben.
Ha DAX-képlettel definiál sorszintű rendezéseket, egy engedélyezett sorkészletet hoz létre. Ez nem tagadja meg a többi sorhoz való hozzáférést; a rendszer egyszerűen nem adja vissza őket az engedélyezett sorkészlet részeként. Más szerepkörök is lehetővé teszik a DAX-képlet által kizárt sorok elérését. Ha egy felhasználó egy másik szerepkör tagja, és a szerepkör sorszintű biztonsága lehetővé teszi az adott sorkészlethez való hozzáférést, a felhasználó megtekintheti az adott sor adatait.
A sorszintű biztonsági képletek a megadott sorokra és a kapcsolódó sorokra is érvényesek. Ha egy tábla több kapcsolatból áll, a szűrők az aktív kapcsolat biztonságát alkalmazzák. A sorszintű biztonsági képletek a kapcsolódó táblákhoz definiált más képletekkel lesznek metszve.
To learn more, see:
Sorszintű biztonság (RLS) a Power BI-jal
Szerepkörök az Analysis Servicesben
Lekérdezések
DAX-lekérdezések hozhatók létre és futtathatók az SQL Server Management Studióban (SSMS) és nyílt forráskódú eszközökben, például a DAX Studióban (daxstudio.org). A CSAK táblázatos adatmodellekben létrehozható DAX-számítási képletekkel ellentétben a DAX-lekérdezések az Analysis Services többdimenziós modelljeivel is futtathatók. A DAX-lekérdezések gyakran könnyebben írhatók és hatékonyabbak, mint a többdimenziós adatkifejezések (MDX- lekérdezések).
A DAX-lekérdezések olyan utasítások, mint a T-SQL Standard kiadás LECT utasítása. A DAX-lekérdezés legalapvetőbb típusa egy kiértékelő utasítás. Például
EVALUATE
( FILTER ( 'DimProduct', [SafetyStockLevel] < 200 ) )
ORDER BY [EnglishProductName] ASC
Eredményként ad vissza egy táblát, amely csak a 200-nál kisebb Széf tyStockLevel értékkel rendelkező termékeket sorolja fel növekvő sorrendben az EnglishProductName szerint.
A lekérdezés részeként mértékeket is létrehozhat. A mértékek csak a lekérdezés időtartamára léteznek. További információ: DAX-lekérdezések.
Képletek
A DAX-képletek nélkülözhetetlenek a számított oszlopokban és mértékekben végzett számítások létrehozásához, valamint az adatok sorszintű biztonság használatával történő védelméhez. Számított oszlopok és mértékek képleteinek létrehozásához használja a modelltervező ablakának tetején található szerkesztőlécet vagy a DAX-szerkesztőt. A sorszintű biztonság képleteinek létrehozásához használja a Szerepkörkezelő vagy a Szerepkörök kezelése párbeszédpanelt. Az ebben a szakaszban található információk célja, hogy megismerkedjen a DAX-képletek alapjaival.
A képlet alapjai
A DAX-képletek lehetnek nagyon egyszerűek vagy meglehetősen összetettek. Az alábbi táblázat néhány példát mutat be a számított oszlopban használható egyszerű képletekre.
Formula | Definition |
---|---|
= TODAY() |
Egy számított oszlop minden sorában beszúrja a mai dátumot. |
= 3 |
A számított oszlop minden sorában beszúrja a 3 értéket. |
= [Column1] + [Column2] |
Hozzáadja az értékeket az [Oszlop1] és a [Oszlop2] ugyanazon sorában, és az eredményeket ugyanazon sor számított oszlopába helyezi. |
Akár egyszerű, akár összetett képletet hoz létre, a képletek létrehozásakor az alábbi lépéseket használhatja:
Minden képletnek egyenlőségjellel (=) kell kezdődnie.
Beírhat vagy kiválaszthat egy függvénynevet, vagy beírhat egy kifejezést.
Kezdje el beírni a kívánt függvény vagy név első néhány betűit, és az Automatikus kiegészítés megjeleníti az elérhető függvények, táblák és oszlopok listáját. A TAB billentyű lenyomásával elemet vehet fel az automatikus kiegészítési listából a képletbe.
Az Fx gombra kattintva megjelenítheti az elérhető függvények listáját. Ha ki szeretne jelölni egy függvényt a legördülő listából, a nyílbillentyűkkel jelölje ki az elemet, majd az OK gombra kattintva adja hozzá a függvényt a képlethez.
Adja meg az argumentumokat a függvénynek úgy, hogy kiválasztja őket a lehetséges táblák és oszlopok legördülő listájából, vagy beírja az értékeket.
Szintaxishibák keresése: győződjön meg arról, hogy az összes zárójel be van zárva, és az oszlopok, táblák és értékek helyesen vannak hivatkozva.
A képlet elfogadásához nyomja le az ENTER billentyűt.
Megjegyzés:
Egy számított oszlopban, amint beírja a képletet, és érvényesíti a képletet, az oszlop értékekkel lesz feltöltve. Egy mértékben az ENTER billentyűt lenyomva menti a mértékdefiníciót a táblával. Ha egy képlet érvénytelen, hibaüzenet jelenik meg.
Ebben a példában tekintsünk meg egy képletet egy Days in Current Quarter (Napok) nevű mértékben az aktuális negyedévben:
Days in Current Quarter = COUNTROWS( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER( LASTDATE('Date'[Date])), ENDOFQUARTER('Date'[Date])))
Ez a mérték egy hiányos időszak és az előző időszak összehasonlítási arányának létrehozására szolgál. A képletnek figyelembe kell vennie az eltelt időszak arányát, és össze kell hasonlítania az előző időszak azonos arányával. Ebben az esetben a [Days Current Quarter to Date]/[Days in Current Quarter] (Aktuális negyedév napjai) az aktuális időszakban eltelt arányt adja meg.
Ez a képlet a következő elemeket tartalmazza:
Képletelem | Leírás |
---|---|
Days in Current Quarter |
A mérték neve. |
= |
Az egyenlőségjel (=) elindítja a képletet. |
COUNTROWS |
A COUNTROWS megszámolja a Dátum tábla sorainak számát |
() |
A nyitó és záró zárójel argumentumokat határoz meg. |
DATESBETWEEN |
A DATESBETW Enterprise kiadás N függvény a Dátum tábla Dátum oszlopában szereplő egyes értékek utolsó dátuma közötti dátumokat adja vissza. |
'Date' |
Megadja a Dátum táblát. A táblák egyetlen idézőjelben vannak. |
[Date] |
A Dátum tábla Dátum oszlopát adja meg. Az oszlopok szögletes zárójelben vannak. |
, |
|
STARTOFQUARTER |
A STARTOFQUARTER függvény a negyedév kezdetének dátumát adja vissza. |
LASTDATE |
A LASTDATE függvény a negyedév utolsó dátumát adja vissza. |
'Date' |
Megadja a Dátum táblát. |
[Date] |
A Dátum tábla Dátum oszlopát adja meg. |
, |
|
ENDOFQUARTER |
Az ENDOFQUARTER függvény |
'Date' |
Megadja a Dátum táblát. |
[Date] |
A Dátum tábla Dátum oszlopát adja meg. |
Képlet automatikus kiegészítésének használata
Az Automatikus kiegészítés funkcióval érvényes képletszintaxisokat adhat meg, ha megadja a képlet egyes elemeire vonatkozó beállításokat.
Az Automatikus kiegészítés képletet egy meglévő, beágyazott függvényekkel rendelkező képlet közepén használhatja. A beszúrási pont előtti szöveg a legördülő listában lévő értékek megjelenítésére szolgál, és a beszúrási pont utáni összes szöveg változatlan marad.
Az automatikus kiegészítés nem adja hozzá a függvények záró zárójelét, és nem felel meg automatikusan a zárójeleknek. Győződjön meg arról, hogy az egyes függvények szintaktikailag helyesek, vagy nem tudja menteni vagy használni a képletet.
Több függvény használata képletben
Függvényeket ágyazhat be, ami azt jelenti, hogy az egyik függvény eredményeit egy másik függvény argumentumaként használja. Legfeljebb 64 függvényszintet ágyazhat be számított oszlopokba. A beágyazás azonban megnehezítheti a képletek létrehozását vagy hibaelhárítását. Számos függvényt úgy terveztek, hogy kizárólag beágyazott függvényekként használják. Ezek a függvények olyan táblát adnak vissza, amely nem menthető közvetlenül ennek eredményeként; táblafüggvény bemeneteként kell megadni. A SZUMX, AZ ÁTLAGX és a MINX függvényhez például egy tábla szükséges első argumentumként.
Funkciók
A függvény egy kifejezés nevesített képlete. A legtöbb függvény kötelező és opcionális argumentumokkal, más néven paraméterekkel rendelkezik bemenetként. A függvény végrehajtásakor a rendszer visszaad egy értéket. A DAX olyan függvényeket tartalmaz, amelyek segítségével dátumokkal és időpontokkal végezhet számításokat, feltételes értékeket hozhat létre, sztringekkel dolgozhat, kapcsolatokat alapuló kereséseket hajthat végre, és rekurzív számításokat hajthat végre egy táblán. Ha ismeri az Excel-képleteket, a függvények közül sok nagyon hasonlónak fog tűnni; A DAX-képletek azonban a következő fontos módokon különböznek:
A DAX-függvények mindig egy teljes oszlopra vagy táblára hivatkoznak. Ha csak egy tábla vagy oszlop adott értékeit szeretné használni, szűrőket is hozzáadhat a képlethez.
Ha sorról sorra kell testre szabnia a számításokat, a DAX olyan függvényeket biztosít, amelyek lehetővé teszik az aktuális sorérték vagy egy kapcsolódó érték paraméterként való használatát a környezettől függően eltérő számítások elvégzéséhez. A függvények működésének megismeréséhez tekintse meg a jelen cikkben található kontextust .
A DAX számos függvényt tartalmaz, amelyek egy táblát adnak vissza érték helyett. A tábla nem jelenik meg egy jelentéskészítő ügyfélben, hanem más függvények bemenetének megadására szolgál. Lekérhet például egy táblát, majd megszámolhatja benne a különböző értékeket, vagy dinamikus összegeket számíthat ki szűrt táblák vagy oszlopok között.
A DAX-függvények számos időintelligencia-függvényt tartalmaznak. Ezek a függvények lehetővé teszik a dátumtartományok meghatározását vagy kiválasztását, és dinamikus számításokat hajthat végre ezen dátumok vagy tartományok alapján. Összehasonlíthatja például az összegeket párhuzamos időszakokban.
Aggregátumfüggvények
Az aggregációs függvények kiszámítanak egy (skaláris) értéket, például a darabszámot, az összeget, az átlagot, a minimumot vagy a maximumot egy oszlop vagy táblázat összes sorához a kifejezés által meghatározott módon. További információ: Aggregációs függvények.
Dátum- és időfüggvények
A DAX dátum- és időfüggvényei hasonlóak a Microsoft Excel dátum- és időfüggvényeihez. A DAX-függvények azonban 1900. március 1-től kezdődő dátum/idő adattípuson alapulnak. További információ: Dátum- és időfüggvények.
Szűrőfüggvények
A DAX szűrőfüggvényei adott adattípusokat ad vissza, értékeket keresnek a kapcsolódó mesékben, és kapcsolódó értékek alapján szűrnek. A keresési függvények táblák és kapcsolatok, például egy adatbázis használatával működnek. A szűrési függvényekkel dinamikus számítások hozhatók létre az adatkörnyezetben. További információ: Szűrőfüggvények.
Pénzügyi függvények
A DAX pénzügyi függvényeit olyan képletekben használják, amelyek pénzügyi számításokat végeznek, például nettó jelenértéket és megtérülési rátát. Ezek a függvények hasonlóak a Microsoft Excelben használt pénzügyi függvényekhez. További információ: Pénzügyi függvények.
Információs függvények
Az információs függvény megvizsgálja az argumentumként megadott cellát vagy sort, és megmutatja, hogy az érték megfelel-e a várt típusnak. Az I Standard kiadás RROR függvény például IGAZ értéket ad vissza, ha a hivatkozott érték hibát tartalmaz. További információ: Információs függvények.
Logikai függvények
A logikai függvények egy kifejezésen hajtanak végre információkat a kifejezés értékeiről. A TRUE függvény például azt jelzi, hogy egy kiértékelt kifejezés IGAZ értéket ad-e vissza. További információ: Logikai függvények.
Matematikai és trigonometriai függvények
A DAX matematikai függvényei nagyon hasonlítanak az Excel matematikai és trigonometriai függvényeihez. A DAX-függvények által használt numerikus adattípusokban kisebb különbségek vannak. További információ: Matematikai és trig függvények.
Egyéb függvények
Ezek a függvények olyan egyedi műveleteket hajtanak végre, amelyek nem határozhatók meg azon kategóriák közül, amelyekhez a legtöbb más függvény tartozik. További információ: Egyéb függvények.
Kapcsolati függvények
A DAX kapcsolatfüggvényei lehetővé teszik egy másik kapcsolódó tábla értékeinek visszaadását, egy adott kifejezésben használandó kapcsolat megadását és a keresztszűrési irány megadását. További információ: Kapcsolatfüggvények.
Statisztikai függvények
A statisztikai függvények statisztikai eloszlásokhoz és valószínűséghez kapcsolódó értékeket számítanak ki, például szórást és permutációk számát. További információ: Statisztikai függvények.
Szöveges függvények
A DAX szövegfüggvényei nagyon hasonlóak az Excel megfelelőihez. Visszaadhatja a sztring egy részét, kereshet szöveget egy sztringben, vagy összefűzheti a sztringértékeket. A DAX függvényeket is biztosít a dátumok, időpontok és számok formátumának szabályozásához. További információ: Szövegfüggvények.
Időintelligencia-függvények
A DAX időintelligencia-függvényei lehetővé teszik a naptárak és dátumok beépített ismeretét használó számítások létrehozását. Az idő- és dátumtartományok aggregációkkal vagy számításokkal kombinálva értelmes összehasonlításokat hozhat létre az értékesítés, a leltár stb. összehasonlítható időszakaiban. További információ: Időintelligencia-függvények (DAX).
Táblázatkezelési függvények
Ezek a függvények egy táblát adnak vissza, vagy módosítják a meglévő táblákat. Az ADDCOLUMNS használatával például számított oszlopokat adhat hozzá egy adott táblához, vagy a SUMMARIZECOLUMNS függvénnyel egy csoportcsoporton keresztül adhat vissza összegző táblát. További információ: Táblázatkezelési függvények.
Variables
A var használatával változókat hozhat létre egy kifejezésen belül. A VAR technikailag nem függvény, hanem egy kulcsszó, amely egy kifejezés eredményét névvel ellátott változóként tárolja. Ez a változó ezután argumentumként átadható más mértékkifejezéseknek. Például:
VAR
TotalQty = SUM ( Sales[Quantity] )
Return
IF (
TotalQty > 1000,
TotalQty * 0.95,
TotalQty * 1.25
)
Ebben a példában a TotalQty névvel ellátott változóként továbbítható más kifejezéseknek. A változók bármilyen skaláris adattípust tartalmazhatnak, beleértve a táblákat is. A változók DAX-képletekben való használata rendkívül hatékony lehet.
Adattípusok
Számos különböző adatforrásból importálhat adatokat egy modellbe, amelyek különböző adattípusokat támogathatnak. Amikor adatokat importál egy modellbe, a rendszer az adatokat táblázatos modell adattípussá alakítja. Amikor a modelladatokat egy számításban használják, az adatok DAX-adattípussá alakulnak a számítás időtartamára és kimenetére vonatkozóan. DAX-képlet létrehozásakor a képletben használt kifejezések automatikusan meghatározzák a visszaadott érték adattípusát.
A DAX a következő adattípusokat támogatja:
Adattípus a modellben | Adattípus a DAX-ban | Leírás |
---|---|---|
Egész szám | 64 bites (nyolc bájtos) egész szám 1, 2 | Tizedesjegyeket nem tartalmazó számok. Az egész számok lehetnek pozitív vagy negatív számok, de -9 223 372 036 854 775 808 (-2^63) és 9 223 372 036 854 775 807 (2^63-1) közötti egész számnak kell lenniük. |
Tizedes tört | 64 bites (nyolc bájtos) valós szám 1, 2 | A valós számok olyan számok, amelyek tizedesjegyekkel rendelkezhetnek. A valós számok az értékek széles skáláját fedik le: Negatív értékek -1,79E +308 és -2,23E -308 között Eggyel sem Pozitív értékek 2,23E -308 és 1,79E + 308 között A jelentős számjegyek száma azonban legfeljebb 17 tizedesjegy lehet. |
Boolean | Boolean | Igaz vagy Hamis érték. |
SMS | Sztring | Unicode karakter adatsztring. Lehetnek szöveges formátumban ábrázolt sztringek, számok vagy dátumok. |
Date | Dátum/idő | Dátumok és időpontok elfogadott dátum-idő ábrázolásban. Az érvényes dátumok az 1900. március 1. utáni dátumok. |
Pénznem | Pénznem | A pénznem adattípusa -922 337 203 685 477 5808 és 922 337 203 685 477 5807 közötti értékeket tesz lehetővé négy rögzített pontosságú tizedesjegypel. |
N/A | Blank | Az üres adattípus a DAX-ban olyan adattípus, amely az SQL nullértékeit jelöli és helyettesíti. Üreset a BLANK függvénnyel hozhat létre, és az üreseket az ISBLANK logikai függvénnyel tesztelheti. |
A táblázatos adatmodellek számos DAX-függvény bemeneteként vagy kimeneteként a Table adattípust is tartalmazzák. A FILTER függvény például bemenetként vesz fel egy táblát, és egy másik táblát ad ki, amely csak a szűrési feltételeknek megfelelő sorokat tartalmazza. A táblafüggvények aggregációs függvényekkel való kombinálásával összetett számításokat végezhet dinamikusan definiált adathalmazokon.
Bár az adattípusok általában automatikusan vannak beállítva, fontos tisztában lenni az adattípusok és azok alkalmazásának módjával, különösen a DAX-képletekkel. A képletekben vagy váratlan eredményekben előforduló hibákat gyakran egy adott operátor használata okozza, amely nem használható argumentumban megadott adattípussal. A képlet = 1 & 2
például egy 12-es sztringeredményt ad vissza. A képlet = "1" + "2"
azonban 3 egész számot ad vissza.
Környezet
A környezet fontos fogalom a DAX-képletek létrehozásakor. A környezet lehetővé teszi a dinamikus elemzést, mivel a képletek eredményei az aktuális sor- vagy cellakijelölést, valamint a kapcsolódó adatokat is tükrözik. A környezet megértése és a környezet hatékony használata kritikus fontosságú a nagy teljesítményű, dinamikus elemzések készítéséhez és a képletek hibáinak elhárításához.
A táblázatos modellek képletei más kontextusban értékelhetők ki, más tervezési elemektől függően:
- Kimutatásban vagy jelentésben alkalmazott szűrők
- Képleten belül definiált szűrők
- Képleten belüli speciális függvényekkel megadott kapcsolatok
A környezetnek különböző típusai vannak: sorkörnyezet, lekérdezési környezet és szűrőkörnyezet.
Sorkörnyezet
A sorkörnyezet "az aktuális sor" néven is felfogható. Ha egy számított oszlopban hoz létre képletet, a képlet sorkörnyezete az aktuális sor összes oszlopának értékeit tartalmazza. Ha a tábla egy másik táblához kapcsolódik, a tartalom a másik táblából származó összes olyan értéket is tartalmazza, amely az aktuális sorhoz kapcsolódik.
Tegyük fel például, hogy létrehoz egy számított oszlopot, = [Freight] + [Tax]
amely két oszlop értékeit adja össze, a Teherforgalom és az Adó oszlopot ugyanabból a táblából. Ez a képlet automatikusan csak a megadott oszlopok aktuális sorából származó értékeket kapja meg.
A sorkörnyezet a táblák között definiált kapcsolatokat is követi, beleértve a számított oszlopban DAX-képletekkel definiált kapcsolatokat is annak meghatározásához, hogy a kapcsolódó táblák mely sorai vannak társítva az aktuális sorhoz.
Az alábbi képlet például a RELATED függvénnyel kér le egy adóértéket egy kapcsolódó táblából annak a régiónak a alapján, amelybe a rendelést szállították. Az adóértéket az aktuális táblában szereplő régió értékének használatával, a kapcsolódó táblában lévő régió keresése, majd az adott régióra vonatkozó adókulcs lekérése határozza meg a kapcsolódó táblából.
= [Freight] + RELATED('Region'[TaxRate])
Ez a képlet lekéri az aktuális régió adókulcsát a Régió táblából, és hozzáadja a Freight oszlop értékéhez. A DAX-képletekben nem kell tudnia vagy meg kell adnia a táblákat összekötő konkrét kapcsolatot.
Többsoros környezet
A DAX olyan függvényeket tartalmaz, amelyek egy tábla számításait iterálják. Ezek a függvények több aktuális sort is tartalmazhatnak, amelyek mindegyike saját sorkörnyezettel rendelkezik. Ezek a függvények lényegében lehetővé teszik olyan képletek létrehozását, amelyek rekurzívan hajtanak végre műveleteket egy belső és külső cikluson keresztül.
Tegyük fel például, hogy a modell tartalmaz egy Termékek táblát és egy Sales táblát. Előfordulhat, hogy a felhasználók át szeretnének haladni a teljes értékesítési táblán, amely több terméket érintő tranzakciókat tartalmaz, és megkeresik az egyes termékekhez rendelt legnagyobb mennyiséget egy tranzakcióban.
A DAX használatával egyetlen képletet hozhat létre, amely a megfelelő értéket adja vissza, és az eredmények automatikusan frissülnek, amikor egy felhasználó adatokat ad hozzá a táblákhoz.
= MAXX(FILTER(Sales,[ProdKey] = EARLIER([ProdKey])),Sales[OrderQty])
A képlet részletes példáját az EARLIER (KORÁBBI) című témakörben találja.
Összegzésként az EARLIER függvény az aktuális műveletet megelőző művelet sorkörnyezetét tárolja. A függvény mindig két kontextuskészletet tárol a memóriában: az egyik környezet a képlet belső ciklusának aktuális sorát, a másik pedig a képlet külső ciklusának aktuális sorát jelöli. A DAX automatikusan betáplálta az értékeket a két ciklus között, így összetett aggregátumokat hozhat létre.
Lekérdezési környezet
A lekérdezési környezet a képlethez implicit módon lekért adatok részhalmazára hivatkozik. Ha például egy felhasználó egy mértéket vagy mezőt helyez egy jelentésbe, a motor megvizsgálja a sor- és oszlopfejléceket, a szeletelőket és a jelentésszűrőket a környezet meghatározásához. A szükséges lekérdezések ezután modelladatokon futnak az adatok megfelelő részhalmazának lekéréséhez, a képlet által meghatározott számítások elvégzéséhez, majd a jelentés értékeinek feltöltéséhez.
Mivel a környezet a képlet helyétől függően változik, a képlet eredményei is változhatnak. Tegyük fel például, hogy létrehoz egy képletet, amely összegzi a Sales tábla Profit oszlopában lévő értékeket: = SUM('Sales'[Profit])
. Ha ezt a képletet a Sales tábla számított oszlopában használja, a képlet eredménye megegyezik a teljes táblában, mivel a képlet lekérdezési környezete mindig a Sales tábla teljes adatkészlete. Az eredmények minden régióban, minden termékben, minden évben és így tovább nyereséggel rendelkeznek.
A felhasználók azonban általában nem szeretnének több százszor ugyanazt az eredményt látni, hanem egy adott év, egy adott ország, egy adott termék vagy ezek valamilyen kombinációjának nyereségét szeretnék megkapni, majd végösszeget kapni.
A jelentésekben a környezet a mezők szűrésével, hozzáadásával vagy eltávolításával, valamint szeletelők használatával módosul. Minden módosítás esetében az a lekérdezési környezet, amelyben a mérték kiértékelése történik. Ezért ugyanazt a mértékben használt képletet egy másik lekérdezési környezetben értékeli ki a rendszer minden cellához.
Szűrőkörnyezet
A szűrőkörnyezet az egyes oszlopokban vagy egy kapcsolódó táblából lekért értékekben megengedett értékek készlete. A szűrők a tervező oszlopára vagy a bemutató rétegre (jelentések és kimutatások) alkalmazhatók. A szűrőket a képlet szűrőkifejezései is explicit módon definiálhatják.
A szűrőkörnyezet akkor lesz hozzáadva, ha az oszlopban vagy táblában megengedett értékekre vonatkozó szűrőkorlátokat ad meg egy képlet argumentumainak használatával. A szűrőkörnyezet más környezetekre is vonatkozik, például sorkörnyezetre vagy lekérdezési környezetre.
A táblázatos modellekben számos módon lehet szűrőkörnyezetet létrehozni. A modellt használó ügyfelek, például a Power BI-jelentések környezetében a felhasználók menet közben is létrehozhatnak szűrőket szeletelők vagy jelentésszűrők hozzáadásával a sor- és oszlopfejléceken. A szűrőkifejezéseket közvetlenül a képleten belül is megadhatja, megadhatja a kapcsolódó értékeket, szűrheti a bemenetként használt táblákat, vagy dinamikusan lekérheti a számításokban használt értékek kontextusát. Az egyes oszlopok szűrőit teljesen vagy szelektíven is törölheti. Ez nagyon hasznos a végösszegeket kiszámító képletek létrehozásakor.
Ha többet szeretne megtudni arról, hogyan hozhat létre szűrőket a képleteken belül, tekintse meg a FILTER függvényt (DAX).
Példa arra, hogyan törölhetők a szűrők a végösszegek létrehozásához, lásd az ALL függvényt (DAX).
Példák a szűrők képleteken belüli szelektív törlésére és alkalmazására: ALLEXCEPT.
Környezet meghatározása képletekben
DAX-képlet létrehozásakor a képletet először érvényes szintaxissal teszteli, majd teszteli, hogy a képletben szereplő oszlopok és táblák neve megtalálható-e az aktuális környezetben. Ha a képlet által megadott bármely oszlop vagy tábla nem található, a rendszer hibát ad vissza.
Az érvényesítés (és újraszámítási műveletek) során a környezet az előző szakaszokban leírtak szerint lesz meghatározva a modellben elérhető táblák, a táblák közötti kapcsolatok és az alkalmazott szűrők használatával.
Ha például most importált néhány adatot egy új táblába, és nem kapcsolódik semmilyen más táblához (és nem alkalmazott szűrőket), akkor az aktuális környezet a tábla teljes oszlopkészlete. Ha a táblát más táblákhoz való kapcsolatok kapcsolják össze, az aktuális környezet tartalmazza a kapcsolódó táblákat. Ha egy oszlopot ad hozzá a táblából egy olyan jelentéshez, amely szeletelőkkel és esetleg jelentésszűrőkkel rendelkezik, a képlet környezete a jelentés egyes celláiban lévő adatok részhalmaza.
A környezet egy hatékony fogalom, amely megnehezítheti a képletek hibaelhárítását is. Javasoljuk, hogy egyszerű képletekkel és kapcsolatokkal kezdje a környezet működését. Az alábbi szakasz néhány példát mutat be arra, hogyan használják a képletek a különböző típusú környezeteket az eredmények dinamikus visszaadásához.
Operators
A DAX-nyelv négy különböző típusú számítási operátort használ a képletekben:
- Összehasonlító operátorok az értékek összehasonlításához és logikai IGAZ\FAL Standard kiadás érték visszaadásához.
- Számtani operátorok numerikus értékeket visszaadó aritmetikai számítások végrehajtásához.
- Szövegösszefűzési operátorok két vagy több szöveges sztring összekapcsolásához.
- Logikai operátorok, amelyek két vagy több kifejezést egyesítenek egyetlen eredmény visszaadásához.
A DAX-képletekben használt operátorokról további információt a DAX-operátorok című témakörben talál.
Táblázatok és oszlopok használata
A táblázatos adatmodellek táblázatai az Excel-táblákhoz hasonlóan néznek ki, de az adatokkal és képletekkel való munkavégzésben különböznek:
- A képletek csak táblákkal és oszlopokkal működnek, az egyes cellákkal, tartományhivatkozásokkal vagy tömbökkel nem.
- A képletek kapcsolatokkal kérhetnek le értékeket a kapcsolódó táblákból. A beolvasott értékek mindig az aktuális sorértékhez kapcsolódnak.
- Nem lehetnek szabálytalan vagy "hibás" adatok, mint egy Excel-munkalapon. A táblák minden sorának azonos számú oszlopot kell tartalmaznia. Egyes oszlopokban azonban lehetnek üres értékek. Az Excel-adattáblák és a táblázatos modell adattáblái nem cserélhetők fel.
- Mivel minden oszlophoz adattípus van beállítva, az oszlop minden értékének azonos típusúnak kell lennie.
Hivatkozás a képletekben lévő táblákra és oszlopokra
Bármely táblára és oszlopra hivatkozhat a nevével. Az alábbi képlet például bemutatja, hogyan hivatkozhat két tábla oszlopaira a teljes név használatával:
= SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])
Amikor kiértékel egy képletet, a modelltervező először az általános szintaxist ellenőrzi, majd ellenőrzi a megadott oszlopok és táblák nevét az aktuális környezetben található lehetséges oszlopok és táblák alapján. Ha a név nem egyértelmű, vagy ha az oszlop vagy a tábla nem található, hibaüzenet jelenik meg a képletben (egy #ERROR sztringet a hiba által érintett cellák adatértéke helyett). A táblák, oszlopok és egyéb objektumok elnevezési követelményeiről a DAX-szintaxis elnevezési követelményei című témakörben olvashat bővebben.
Táblakapcsolatok
A táblák közötti kapcsolatok létrehozásával lehetővé teszi más táblák kapcsolódó értékeinek számításban való használatát. Egy számított oszlop használatával például meghatározhatja az aktuális viszonteladóhoz kapcsolódó összes szállítási rekordot, majd összesítheti az egyes szállítási költségeket. Sok esetben azonban előfordulhat, hogy nincs szükség kapcsolatra. A képletEK LOOKUPVALUE függvényével visszaadhatja a result_columnName azon sor értékét, amely megfelel a search_column és search_value argumentumban megadott feltételeknek.
Számos DAX-függvény megköveteli, hogy kapcsolat legyen a táblák vagy több tábla között, hogy megkeresse a hivatkozott oszlopokat, és értelmes eredményeket adjon vissza. Más függvények megpróbálják azonosítani a kapcsolatot; a legjobb eredmény érdekében azonban mindig létre kell hoznia egy kapcsolatot, ahol csak lehetséges. A táblázatos adatmodellek több kapcsolatot támogatnak a táblák között. A félreértések vagy helytelen eredmények elkerülése érdekében egyszerre csak egy kapcsolat van kijelölve aktív kapcsolatként, de szükség szerint módosíthatja az aktív kapcsolatot a számításokban szereplő adatok különböző kapcsolatainak megfordításához. Az U Standard kiadás RELATIONSHIP függvény egy vagy több, adott számításban használandó kapcsolat megadására használható.
A kapcsolatok használatakor fontos figyelembe venni az alábbi képlettervezési szabályokat:
Ha a táblákat egy kapcsolat köti össze, győződjön meg arról, hogy a kulcsként használt két oszlopnak egyező értékei vannak. A hivatkozási integritás nincs kényszerítve, ezért lehetséges, hogy egy kulcsoszlopban nem egyező értékek vannak, és továbbra is létre lehet hozni egy kapcsolatot. Ha ez történik, vegye figyelembe, hogy az üres vagy nem egyező értékek hatással lehetnek a képletek eredményeire.
Ha a modellben lévő táblákat kapcsolatok használatával csatolja, kibővítheti a hatókört vagy a környezetet, amelyben a képletek kiértékelése történik. Az új táblák, új kapcsolatok vagy az aktív kapcsolat változásai által okozott környezeti változások miatt az eredmények olyan módon változhatnak, ahogyan nem várható. További információkért lásd a cikkben található kontextust .
Feldolgozás és frissítés
A folyamat és az újraszámítás két különálló, de kapcsolódó művelet. Ezeket a fogalmakat alaposan át kell ismernie egy olyan modell tervezésekor, amely összetett képleteket, nagy mennyiségű adatot vagy külső adatforrásból származó adatokat tartalmaz.
A folyamat (frissítés) a modellben lévő adatokat külső adatforrásból származó új adatokkal frissíti.
Az újraszámítás a képletek eredményeinek frissítésének folyamata, hogy azok tükrözzék a képletek módosításait, és tükrözzék a mögöttes adatok változásait. Az újraszámítás a következő módokon befolyásolhatja a teljesítményt:
A számított oszlop értékeit a rendszer a modellben számítja ki és tárolja. A számított oszlop értékeinek frissítéséhez a modellt három feldolgozási parancs egyikével kell feldolgoznia : Teljes folyamat, Adatok feldolgozása vagy Folyamat újraszámítása. A képlet eredményét mindig újra kell számítani a teljes oszlopra, amikor módosítja a képletet.
A mértékek alapján kiszámított értékek dinamikusan lesznek kiértékelve, amikor egy felhasználó hozzáadja a mértéket egy kimutatáshoz, vagy megnyit egy jelentést; ahogy a felhasználó módosítja a környezetet, a mértékváltozás által visszaadott értékek. A mérték eredményei mindig a memóriában lévő gyorsítótár legfrissebb eredményeit tükrözik.
A feldolgozásnak és az újraszámításnak nincs hatása a sorszintű biztonsági képletekre, kivéve, ha az újraszámítás eredménye eltérő értéket ad vissza, így a sor lekérdezhető vagy nem kérdezhető le a szerepkör tagjai számára.
Updates
A DAX-ot folyamatosan fejlesztik. Az új és frissített függvények a következő elérhető frissítéssel jelennek meg, amely általában havonta történik. A szolgáltatások először frissülnek, majd olyan telepített alkalmazások, mint a Power BI Desktop, az Excel, az SQL Server Management Studio (SSMS) és a Visual Studio (SSDT) Analysis Services-projektbővítménye. Az SQL Server Analysis Services a következő kumulatív frissítéssel frissül. Az új függvényeket először a Power BI Desktop frissítéseivel egybeforrt DAX-függvény-referencia ismerteti.
Az SQL Server Analysis Services és az Excel korábbi verziói nem minden függvényt támogatnak.
Hibaelhárítás
Ha hiba jelenik meg egy képlet definiálásakor, a képlet tartalmazhat szintaktikai hibát, szemantikai hibát vagy számítási hibát.
A szintaktikai hibák a legegyszerűbben megoldhatók. Ezek általában hiányzó zárójelet vagy vesszőt foglalnak magukban.
A másik hibatípus akkor fordul elő, ha a szintaxis helyes, de a hivatkozott értéknek vagy oszlopnak nincs értelme a képlet kontextusában. Az ilyen szemantikai és számítási hibákat az alábbi problémák bármelyike okozhatja:
- A képlet nem létező oszlopra, táblára vagy függvényre hivatkozik.
- A képlet helyesnek tűnik, de amikor az adatmotor lekéri az adatokat, egy típuseltérést talál, és hibát jelez.
- A képlet helytelen számú vagy típusú argumentumot ad át egy függvénynek.
- A képlet egy másik, hibával rendelkező oszlopra hivatkozik, ezért az értékei érvénytelenek.
- A képlet egy nem feldolgozott oszlopra hivatkozik, ami azt jelenti, hogy metaadatokkal rendelkezik, de nincsenek tényleges adatok a számításokhoz.
Az első négy esetben a DAX az érvénytelen képletet tartalmazó teljes oszlopot jelöli. Az utolsó esetben a DAX kiszürkítve jelzi, hogy az oszlop feldolgozatlan állapotban van.
Alkalmazások és eszközök
Power BI Desktop
A Power BI Desktop egy ingyenes adatmodellezési és jelentéskészítési alkalmazás. A modelltervező tartalmaz egy DAX-szerkesztőt a DAX-számítási képletek létrehozásához.
Power Pivot az Excelben
Az Excel-modellek tervezőjében a Power Pivot tartalmaz egy DAX-szerkesztőt a DAX-számítási képletek létrehozásához.
Visual Studio
Az Analysis Services-projektbővítménnyel (VSIX) rendelkező Visual Studio Analysis Services-modellprojektek létrehozásához használható. A projektbővítménnyel telepített táblázatos modelltervező tartalmaz egy DAX-szerkesztőt.
SQL Server Management Studio
Az SQL Server Management Studio (SSMS) az Analysis Services használatának alapvető eszköze. Az SSMS tartalmaz egy DAX-lekérdezésszerkesztőt a táblázatos és a többdimenziós modellek lekérdezéséhez.
DAX Studio
A DAX Studio egy nyílt forráskódú ügyféleszköz, amellyel DAX-lekérdezéseket hozhat létre és futtathat az Analysis Services, a Power BI Desktop és a Power Pivot használatával az Excel-modellekben.
Tabular Editor
A Táblázatos szerkesztő egy nyílt forráskódú eszköz, amely intuitív, hierarchikus nézetet biztosít a táblázatos modell metaadataiban lévő összes objektumról. A táblázatos szerkesztő tartalmaz egy DAX-szerkesztőt szintaxiskiemeléssel, amely megkönnyíti a mértékek, a számított oszlopok és a számított táblakifejezések szerkesztését.
Képzési erőforrások
A DAX elsajátításakor a legjobb, ha a használni kívánt alkalmazást használja az adatmodellek létrehozásához. Az Analysis Services, a Power BI Desktop és a Power Pivot az Excelben mind tartalmaz olyan cikkeket és oktatóanyagokat, amelyek a MÉRTÉKEK, a számított oszlopok és a sorszűrők DAX használatával történő létrehozásáról tartalmaznak tanulságokat. Íme néhány további erőforrás:
A DAX használata a Power BI Desktop képzési tervében.
Alberto Ferrari és Marco Russo (Microsoft Press) végleges útmutatója a DAX-hoz . Ez a széles körű útmutató a második kiadásban az innovatív, nagy teljesítményű technikák alapjait nyújtja a kezdő adatmodellezők és BI-szakemberek számára.
Közösség
A DAX-nak élénk közössége mindig hajlandó megosztani szakértelmét. A Microsoft Power BI-közösség egy speciális vitafórumot kínál csak a DAX, a DAX-parancsok és a Tippek számára.