Ez a szakasz azt ismerteti, hogyan hozhat létre szűrőket a DAX-képletekben. A képleteken belül szűrők létrehozásával korlátozhatja, hogy milyen értékek kerülnek felhasználásra a forrásadatok számításaiban. Ehhez meg kell adnia egy táblázatot a képlet bemeneteként, majd meg kell adnia egy szűrőkifejezést. A megadott szűrőkifejezés az adatok lekérdezésére szolgál, és a forrásadatoknak csak egy részét adja vissza. A szűrő dinamikusan alkalmazandó minden alkalommal, amikor frissíti a képlet eredményét, az adatok aktuális környezetétől függően.
Tartalom
Szűrő létrehozása képletben használt táblázatban
A táblázatot bemenetként használó képletekben alkalmazhat szűrőket. Táblanév megadása helyett a SZŰRŐ függvénnyel definiálhatja a tábla sorainak egy részhalmazát. Ezt az alkészletet a rendszer ezután átadja egy másik függvénynek olyan műveletekhez, mint az egyéni összesítések.
Tegyük fel például, hogy van egy olyan adattáblája, amely a viszonteladók rendelési adatait tartalmazza, és ki szeretné számolni, hogy az egyes viszonteladók mennyit értékesítettek. Szeretné azonban csak azoknak a viszonteladóknak az értékesítési összegét megjeleníteni, akik több egységben értékesítették a magasabb értékű termékeit. A DAX-mintamunkafüzeten alapuló következő képlet egy példát mutat arra, hogyan hozható létre ez a számítás szűrő használatával:
=SUMX(
FILTER ('ResellerSales_USD'; 'ResellerSales_USD'[Quantity] > 5 &&
'ResellerSales_USD'[ProductStandardCost_USD] > 100),
'ResellerSales_USD'[SalesAmt]
)
A képlet első része a Power Pivot egyik összesítő függvényét határozza meg, amely táblázatot használ argumentumként. A SZUMX függvény egy táblázat alapján összeget számít ki.
A képlet második része felsorolja
SUMX,FILTER(table, expression),hogy mely adatokat kell használni.SUMXTáblázatot vagy kifejezést igényel, amelynek eredménye egy táblázat. Itt nem az összes adatot használjuk táblázatban, hanem a függvénytFILTERhasználjuk arra, hogy a táblázat mely sorait használja.
A szűrőkifejezés két részből áll: az első rész azt a táblát nevezi meg, amelyre a szűrő vonatkozik. A második rész egy szűrőfeltételként használandó kifejezést határoz meg. Ebben az esetben azokra a viszonteladókra szűr, akik több mint 5 darabot értékesítettek, valamint azokra a termékekre, amelyek drágája meghaladja a 10 000 forintot. A && operátor egy logikai ÉS operátor, amely azt jelzi, hogy a feltétel mindkét részének teljesülnie kell ahhoz, hogy a sor a szűrt alhalmazba tartozzon.A képlet harmadik része mondja meg a
SUMXfüggvénynek, hogy mely értékeket kell összeadni. Ebben az esetben csak az értékesítési összeget kell használnia.
Vegye figyelembe, hogy a táblázatot visszaadó függvények (például a SZŰRŐ) soha nem adják vissza közvetlenül a táblázatot vagy a sorokat, hanem mindig be vannak ágyazva egy másik függvénybe. A SZŰRŐ függvényről és a szűréshez használt egyéb függvényekről további információt (példákkal) a Filter Functions (DAX) című témakörben talál.Megjegyzés
A szűrőkifejezésre hatással van az a környezet, amelyben használják. Ha például szűrőt használ egy mértékben, és a mértéket egy kimutatásban vagy kimutatásdiagramban használja, a visszaadott adatok részhalmazát befolyásolhatják a felhasználó által a kimutatásban alkalmazott további szűrők vagy szeletelők. A kontextusról további információt a Kontextus a DAX-képletekben című témakörben talál.
Szűrők, amelyek eltávolítják az ismétlődéseket
Az adott értékekre való szűrésen kívül egy másik táblázatból vagy oszlopból származó egyedi értékkészletet is visszaadhat. Ez akkor lehet hasznos, ha meg szeretné számolni egy oszlopban lévő egyedi értékeket, vagy ha más műveletekhez szeretné használni az egyedi értékek listáját. A DAX két függvényt biztosít különböző értékek visszaadására: a DISTINCT függvényt és a VALUES függvényt.
- A DISTINCT függvény megvizsgál egy, a függvény argumentumaként megadott egyetlen oszlopot, és egy új oszlopot ad vissza, amely csak a különböző értékeket tartalmazza.
- Az ÉRTÉKEK függvény is visszaadja az egyedi értékek listáját, de az Ismeretlen tagot is visszaadja. Ez akkor hasznos, ha két olyan táblázat értékeit használja, amelyeket kapcsolat köt össze, és egy érték hiányzik az egyik táblából, de megtalálható a másikból. Az Ismeretlen tagról további információt a Context in DAX Formulas (Környezet a DAX-képletekben) című témakörben talál.
Mindkét függvény egy teljes értékoszlopot ad vissza; Ezért a függvények értéklisták lekérésére szolgálnak, amelyeket aztán átad egy másik függvénynek. A következő képlettel például lekérheti egy adott viszonteladó által értékesített termékek listáját az egyedi termékkulcs használatával, majd a COUNTROWS függvénnyel megszámlálhatja a listában szereplő termékeket:
=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))
A környezet hatása a szűrőkre
Amikor DAX-képletet ad egy kimutatáshoz vagy kimutatásdiagramhoz, a kontextus befolyásolhatja a képlet eredményét. Ha PowerPivot-táblázatban dolgozik, a környezet az aktuális sor és annak értékei. Ha kimutatással vagy kimutatásdiagrammal dolgozik, a környezet az olyan műveletek által meghatározott adathalmazt vagy részhalmazt jelenti, mint a szeletelés vagy a szűrés. A kimutatás vagy kimutatásdiagram kialakítása is sajátos kontextust teremt. Ha például létrehoz egy eladásokat régió és év szerint csoportosító kimutatást, a kimutatásban csak az adott régiókra és évekre vonatkozó adatok fognak megjelenni. Ezért a kimutatáshoz adott mértékek kiszámítása az oszlop- és sorfejlécek, valamint a mértékképletben lévő esetleges szűrők összefüggésében történik.
További információ: Környezet a DAX-képletekben.
Szűrők eltávolítása
Bonyolult képletek használatakor hasznos lehet tudni, hogy pontosan mik az aktuális szűrők, vagy módosíthatja a képlet szűrő részét. A DAX számos olyan függvényt tartalmaz, amellyel eltávolíthatja a szűrőket, és megadhatja, hogy mely oszlopok maradjanak meg az aktuális szűrőkörnyezet részeként. Ez a szakasz áttekintést nyújt arról, hogy a függvények hogyan befolyásolják a képlet eredményét.
Az összes szűrő felülbírálása az ALL függvénnyel
A ALL függvénnyel felülbírálhatja a korábban alkalmazott szűrőket, és a tábla összes sorát visszaadhatja az összesítő vagy egyéb műveletet végrehajtó függvénynek. Ha táblázat helyett egy vagy több oszlopot használ argumentumként ALL, a ALL függvény az összes sort visszaadja, figyelmen kívül hagyva a környezeti szűrőket.
Megjegyzés
Ha ismeri a relációs adatbázisokkal kapcsolatos terminológiát, úgy is gondolhatja, hogy ALL az összes tábla bal oldali külső illesztését generálja.
Tegyük fel például, hogy az Értékesítés és a Termékek tábla segítségével szeretne létrehozni egy képletet, amely kiszámítja az aktuális termék értékesítéseinek összegét és az összes termék értékesítésének hányadosat. Figyelembe kell vennie, hogy ha a képletet egy mértékben használja, akkor előfordulhat, hogy a kimutatás felhasználója szeletelővel szűr egy adott termékre, a terméknév feltüntetésével a sorokban. Ezért a nevező valódi értékének szűrőktől és szeletelőktől függetlenül történő megállapításához fel kell vennie az ALL függvényt a szűrők felülbírálásához. Az alábbi képlet például bemutatja, hogyan bírálhatja felül a korábbi szűrők hatását az ALL függvénnyel:
=SZUM (Értékesítés[Mennyiség])/SUMX(Értékesítés[Mennyiség], SZŰRŐ(Értékesítés, ALL(Termékek)))
- A képlet első része, a SZUM (Értékesítés[Mennyiség]) kiszámítja a számlálót.
- Az összegzés figyelembe veszi az aktuális környezetet, ami azt jelenti, hogy ha a képletet egy számított oszlophoz adja, a program a sorkörnyezetet alkalmazza, ha pedig a képletet mértékként adja hozzá egy kimutatáshoz, a kimutatásban (a szűrőkörnyezetben) alkalmazott szűrők is érvényesek lesznek.
- A képlet második része kiszámítja a nevezőt. Az ALL függvény felülbírálja a
Productstáblára esetlegesen alkalmazott szűrőket.
További információt (részletes példákkal) az ALL függvény ismertetése tartalmaz.
Egyes szűrők felülbírálása az ALLEXCEPT függvénnyel
Az ALLEXCEPT függvény is felülbírálja a meglévő szűrőket, de megadhatja, hogy a meglévő szűrők egy részét megőrizze a program. Az ALLEXCEPT függvény argumentumaként elnevezett oszlopok határozzák meg, hogy mely oszlopok legyenek továbbra is szűrve. Ha a legtöbb oszlop szűrőit felül szeretné bírálni, de nem az összeset, kényelmesebb megoldás az ALLEXCEPT függvénynél. Az ALLEXCEPT függvény különösen akkor hasznos, ha olyan kimutatásokat hoz létre, amelyek sok különböző oszlopra vannak szűrve, és szabályozni szeretné a képletben használt értékeket. További információért, beleértve az ALLEXCEPT függvény kimutatásban való használatát is, lásd az ALLEXCEPT függvényt.