Megosztás a következőn keresztül:


DAX áttekintés

A Data Analysis Expressions (DAX) az Analysis Servicesben, a Power BI-ban és a Power Pivotban használt képletkifejezési nyelv az Excelben. DAX A képletek közé tartoznak a függvények, operátorok és értékek, 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 a DAXlegfontosabb fogalmainak alapszintű ismertetését ismerteti. Leírja, hogy DAX hogyan vonatkozik az azt használó összes termékre. 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 annak konkrét megvalósítását DAX.

Számítások

DAX a képleteket mértékekben, számított oszlopokban, számított táblákban és sorszintű biztonságban használják.

Intézkedések

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ék képletei használhatják az Automatikus összegzés funkcióval automatikusan létrehozott standard összesítő függvényeket, például COUNT vagy SUM, vagy meghatározhatja a saját képletét 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 az DAX SQL Server Management Studio (SSMS) lekérdezésében.

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ő.

További információ: Mértékek a Power BI DesktopbanMértékek az Analysis Services-benMé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 képletsávba:

= [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.

További információ: Számított oszlopok a Power BI DesktopbanSzámított oszlopok az Analysis ServicesbenSzá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 értékeket az új tábla oszlopaiba, 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 dátum tábla, ahol a rendelések esetén az OrderDate, szállítás esetén a ShipDate, és határidő esetén a DueDate mezők szerepelnek, 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 elnevezhetők és megjeleníthetők vagy elrejthetők, akárcsak bármely más tábla. A számított táblák újraszámolva lesznek, ha az adatokat lekérő táblák bármelyike frissül.

További információ: Számított táblák a Power BI DesktopbanSzámított táblák az Analysis Servicesben.

Sorszintű biztonság

A sorszintű biztonság esetén a DAX képletnek logikai TRUE/FALSE feltételként 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 a Customers 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 SUM csak az USA-beli ügyfelek számára adják vissza. A sorszintű biztonság nem érhető el a Power Pivotban az Excelben.

Ha a DAX képlet használatával sorszintű biztonságot határoz meg, 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.

További információ: Sorszintű biztonság (RLS) a Power BI-velSzerepkörök az Analysis Services-ben

Lekérdezések

DAX a lekérdezések létrehozhatók és futtathatók az SQL Server Management Studióban (SSMS) és olyan nyílt forráskódú eszközökben, mint a DAX Studio (daxstudio.org). A DAX számítási képletekkel ellentétben, amelyek csak táblázatos adatmodellekben hozhatók létre, DAX lekérdezések az Analysis Services többdimenziós modelljeivel is futtathatók. DAX a lekérdezések írása gyakran egyszerűbb és hatékonyabb, mint a többdimenziós adatkifejezések (MDX) lekérdezései.

A DAX lekérdezés a T-SQL SELECT utasításához hasonló utasítás. A lekérdezés legalapvetőbb típusa DAX 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 azokat a termékeket sorolja fel, amelyeknél a SafetyStockLevel értéke 200-nál kisebb, az EnglishProductName szerint növekvő sorrendben.

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ókért tekintse meg DAX a lekérdezéseket.

Képletek

DAX A 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 Szerkesztőt DAX . 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 DAX képletek alapjaival.

A képlet alapjai

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.

Képlet Definíció
= 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:

  1. Minden képletnek egyenlőségjellel (=) kell kezdődnie.

  2. Beírhat vagy kiválaszthat egy függvénynevet, vagy beírhat egy kifejezést.

  3. 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.

  4. 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.

  5. 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.

  6. A képlet elfogadásához nyomja le az ENTER billentyűt.

Jegyzet

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ék esetén az ENTER billentyűt lenyomva menti a mértékdefiníciót a táblához. Ha egy képlet érvénytelen, hibaüzenet jelenik meg.

Ebben a példában vizsgáljunk meg egy képletet a Days in Current Quarter nevű mértékben.

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 COUNTROWS a Dátum tábla sorainak számát számítja ki
() A nyitó és záró zárójel argumentumokat határoz meg.
DATESBETWEEN A DATESBETWEEN 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átumtáblát. A táblák egyetlen idézőjelben vannak.
[Date] Az Idő táblázat Dátum oszlopát határozza meg. Az oszlopok szögletes zárójelben szerepelnek.
,
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átumtáblát.
[Date] Az Idő táblázat Dátum oszlopát határozza meg.
,
ENDOFQUARTER A ENDOFQUARTER függvény
'Date' Megadja a dátumtáblát.
[Date] Az Idő táblázat Dátum oszlopát határozza meg.

Képlet automatikus kiegészítésének használata

Az Automatikus kiegészítés funkció segít az érvényes képletszintaxis bevitelében, azáltal, hogy lehetőségeket kínál a képlet egyes elemeihez.

  • 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ójelét, és nem párosítja automatikusan a zárójeleket. 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 a hibák elhá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 függvények SUMXAVERAGEXMINX például egy táblát igényelnek 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. 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, olyan függvényeket biztosít, DAX 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 .

  • 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.

  • DAX A 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.

Összesítő fü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 dátum- és időfüggvények DAX a Microsoft Excel dátum- és időfüggvényeihez hasonlóak. 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őfunkciói visszaadnak bizonyos adattípusokat, értékeket keresnek a kapcsolódó táblázatokban, é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 pénzügyi függvények DAX olyan képletekben használatosak, 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. A ISERROR függvény például TRUE 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 műveleteket azért, hogy információt adjanak vissza a kifejezés értékeiről. A TRUE függvény például azt jelzi, hogy egy kiértékelt kifejezés TRUE értéket ad-e vissza. További információ: Logikai függvények.

Matematikai és trigonometriai függvények

A matematikai függvények DAX 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.

További funkciók

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.

Kapcsolatok funkciói

A kapcsolatfüggvények DAX 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, valamint 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övegfüggvények

A DAX szövegfüggvényei nagyon hasonlóak az Excelben található társaikhoz. Visszaadhatja a sztring egy részét, kereshet szöveget egy sztringben, vagy összefűzheti a sztringértékeket. DAX emellett 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

Az időintelligencia-függvények segítségével DAX olyan számításokat hozhat létre, amelyek beépített ismereteket használnak a naptárakról és dátumokról. 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. Például a ADDCOLUMNS használatával számított oszlopokat adhat hozzá egy adott táblához, vagy a SUMMARIZECOLUMNS függvénnyel egy csoportok feletti összegző táblát adhat vissza. További információ: Táblázatkezelési függvények.

Változók

A kifejezésen belül változókat VARhasználatával hozhat létre. 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 használata a DAX képletekben 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 ezután adattípussá DAX alakulnak a számítás időtartamára és kimenetére vonatkozóan. Képlet létrehozásakor DAX a képletben használt kifejezések automatikusan meghatározzák a visszaadott érték adattípusát.

DAX a következő adattípusokat támogatja:

Adattípus a modellben Adattípus a DAX-ban Leírás
Whole Number 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.
Decimal Number 64 bit (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–-2,23E -308

Nulla

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 Booleán Igaz vagy Hamis érték.
Text Zsinór Unicode karakter adatsorozat. Lehetnek szöveges formátumban ábrázolt karakterláncok, 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.
Currency Valuta 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.
Variant Változat Olyan kifejezésekhez, például DAX mértékekhez használatos, amelyek különböző adattípusokat adhatnak vissza. Egy egész számot vagy sztringet visszaadó mérték például DAX típusvariáns lesz.
N/A Üres Az üres adattípus olyan adattípus, amely az DAX SQL nullértékeit jelöli és helyettesíti. Az BLANK függvénnyel üreset hozhat létre, és az ISBLANK logikai függvény használatával tesztelheti az üreseket.

A táblázatos adatmodellek a Tábla adattípust is tartalmazzák számos DAX függvény bemeneteként vagy kimeneteként. A függvény például bemenetként vesz fel egy táblát, FILTER é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 különösen a DAX képletek alkalmazásának módjával. 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 = 1 & 2képlet például egy 12-es karakterlánc eredményt ad vissza. A = "1" + "2"képlet azonban 3 egész számot ad vissza.

Jegyzet

A sztring adattípusokkal kapcsolatos számítások 64kb-ra korlátozhatók.

Kontextus

A környezet fontos fogalom a képletek létrehozásakor DAX . 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.

Sor kontextusa

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 oszlopból , a Teherforgalomból és az Adóból származó értékeket ad össze 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ény használatával 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 a régióhoz tartozó aktuális adókulcsot a Régió táblából, és hozzáadja a Fuvardíj 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

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.

Egyetlen DAX 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 a EARLIERcímű témakörben találja.

Összegzésként a függvény az EARLIER 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. DAX automatikusan betáplálta az értékeket a két ciklus között, így összetett összesítéseket 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 képletet, amelyet egy mértékben használnak, minden cella esetében más lekérdezési környezetben értékel ki a rendszer.

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 alkalmazhatók az oszlopra Asztalon, vagy a prezentációs rétegre (jelentések, kimutatások). 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 valós időben hozhatnak létre szűrőket szeletelők vagy jelentésszűrők hozzáadásával a sor- és oszlopfejlécekhez. 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 a 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

Képlet létrehozásakor DAX a képletet először érvényes szintaxissal teszteli a rendszer, 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 el, hogy lássa, hogyan működik a kontextus. 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.

Üzemeltetők

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 egy logikai TRUE"FALSE" é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 képletekben használt operátorokkal kapcsolatos részletes információkért tekintse meg DAXaz DAX operátorokat.

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 teljesen minősített 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ó, akkor a képletben hiba jelenik meg (a hibát tartalmazó cellákban lévő adatérték helyett #ERROR sztring). Ha többet szeretne megtudni a táblák, oszlopok és egyéb objektumok elnevezési követelményeiről, tekintse meg az elnevezési követelményeket a szintaxisbanDAX.

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 LOOKUPVALUE függvény használatával egy képletben 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ényhez szükség van arra, hogy kapcsolat legyen a táblák vagy több tábla között a hivatkozott oszlopok megkereséséhez és az értelmes eredmények visszaadásához. 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. USERELATIONSHIP függvény egy vagy több, adott számításhoz 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 értékelődnek ki, amikor egy felhasználó hozzáadja a mértéket egy kimutatáshoz, vagy amikor megnyit egy jelentést; ahogy a felhasználó módosítja a környezetet, a mérték által visszaadott értékek változnak. 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.

Frissítések

DAX állandóan fejlesztve van. 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 DAX Power BI Desktop frissítéseivel egybeforrt függvényhivatkozás 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 DAX az érvénytelen képletet tartalmazó teljes oszlopot jelöli. Az utolsó esetben szürkével jelenik meg az oszlop, DAX amely azt jelzi, hogy az oszlop feldolgozatlan állapotban van.

Alkalmazások és eszközök

Power BI Desktop

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 DAX számítási képletek létrehozásához.

Power Pivot az Excelben

Power Pivot az Excelben

Az Excel-modellek tervezőjében található Power Pivot egy szerkesztőt DAX tartalmaz a számítási képletek létrehozásához DAX .

Visual Studio

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

SQL Server Management Studio

Az SQL Server Management Studio (SSMS) az Analysis Services használatának alapvető eszköze. Az SSMS tartalmaz egy lekérdezésszerkesztőt DAX a táblázatos és a többdimenziós modellek lekérdezéséhez.

DAX Stúdió

DAX Studio ikon

DAX A Studio egy nyílt forráskódú ügyféleszköz, amellyel lekérdezéseket hozhat létre és futtathat DAX az Analysis Services, a Power BI Desktop és a Power Pivot használatával az Excel-modellekben.

Táblázatos szerkesztő

Táblázatos szerkesztő ikon

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 szintaxiskiemeléssel rendelkező szerkesztőt, amely megkönnyíti a mértékek, a számított oszlopok és a számított táblakifejezések szerkesztését.

Tananyagok

A DAXtanulása során 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 használatával DAXkapcsolatos tanulságokat tartalmazzák. Íme néhány további erőforrás:

Videos

Használja DAX a Power BI Desktop képzési tervében .

Alberto Ferrari és Marco Russo (Microsoft Press) DAX végleges útmutatója. 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.

A könyv végleges útmutatója a DAX könyvképhez

Közösség

DAX egy élénk közösség mindig hajlandó megosztani a szakértelmüket. A Microsoft Power BI Community egy speciális vitafórumot is kínál a DAX parancsokhoz és tippekhezDAX.