Szűrőmódosító függvények használata
A függvény használatakor CALCULATE
szűrőmódosítási függvényeket adhat meg, amelyek lehetővé teszik, hogy a szűrők hozzáadásánál többet is el lehessen végezni.
Szűrők eltávolítása
Szűrőkifejezésként használja a REMOVEFILTERS
DAX-függvényt CALCULATE
a szűrők szűrőkörnyezetből való eltávolításához. Ez a függvény szűrők eltávolítására képes egyetlen tábla egy vagy több, vagy akár minden oszlopából.
Megjegyzés
A REMOVEFILTERS
függvény viszonylag új. A DAX korábbi verzióiban a DAX-függvénnyel vagy változatokkal eltávolította a ALL
szűrőket, beleértve a ALLEXCEPT
és a ALLNOBLANKROW
DAX-függvényt is. Ezek a függvények egyszerre viselkednek szűrőmódosítókként és olyan függvényekként, amelyek különálló értékek táblaobjektumait adják vissza. Ezeket a függvényeket azért említjük itt, mert valószínűsíthetően találkozni fog olyan dokumentációval és képletpéldákkal, ahol a szűrők eltávolítása ezek használatával történik.
A következő példában egy új mértéket fog hozzáadni a Sales táblához, amely kiértékeli a Revenue mértéket, de ezt úgy teszi, hogy eltávolítja a szűrőket a Sales Territory táblából. A mértéket pénznemként formázza úgy, hogy a tizedesjegyek száma kettő legyen.
Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))
Most adja hozzá a Revenue Total Region (Az összes régió bevétele) mértéket a jelentés 2. oldalán található mátrixos vizualizációhoz. A mátrixos vizualizáció a Sales Territory (Értékesítési terület) tábla sorait három oszlopba csoportosítja: Group (Csoport), Country (Ország) és Region (Régió).
Figyelje meg, hogy a Revenue Total Region (Az összes régió bevétele) értékei megegyeznek. Ez a teljes bevétel értéke.
Bár ez az eredmény önmagában nem hasznos, de egy arányban nevezőként használva kiszámítható vele a végösszeg százalékos értéke. Ezért most felül fogja írni a Revenue Total Region (Az összes régió bevétele) mérték definícióját az alábbi definícióval. (Ez az új definíció módosítja a mérték nevét, és két változót deklarál. Ügyeljen arra, hogy a mértéket két tizedesjegyet tartalmazó százalékos értékként formázza.)
Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory')
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalRegionRevenue
)
Győződjön meg arról, hogy a mátrixos vizualizáció ekkor a Revenue % Total Region (Bevétel %-os aránya az összes régió esetében) értékeket jeleníti meg.
Most létre fog hozni egy újabb mértéket, de ezúttal egy régióhoz tartozó bevétel százalékos arányát számítja ki a régió és az ország bevételének hányadosaként.
A feladat elvégzése előtt figyelje meg, hogy a Southwest (Délnyugat) régióhoz tartozó Revenue % Total Region (Bevétel %-os aránya az összes régió esetében) értéke 22,95 százalék. Vizsgálja meg a cella szűrőkörnyezetét. Váltson adatnézetre, majd a Mezők panelen válassza ki az Értékesítési terület táblát.
Alkalmazza az alábbi oszlopszűrőket:
- Group (Csoport) – North America (Észak-Amerika)
- Country (Ország) – United States (Egyesült Államok)
- Region (Régió) – Southwest (Délnyugat)
Figyelje meg, hogy a szűrők csupán egyetlen sorra szűkítik le a táblát. Amíg átgondolja az új célkitűzést a régió és az ország bevételi arányának létrehozásához, törölje a Region (Régió) oszlop szűrőjét.
Figyelje meg, hogy most öt sor látható, és mindegyik sor az Egyesült Államokhoz tartozik. Ennek megfelelően, ha törli a Region (Régió) oszlop szűrőit, miközben megtartja a Country (Ország) és a Group (Csoport) oszlop szűrőit, akkor új szűrőkörnyezettel fog rendelkezni a régió országa esetében.
Az alábbi mértékdefinícióban megfigyelheti, hogyan törölhet vagy távolíthat el egy szűrőt az oszlopból. A DAX-logikában ez egy kis és apró változás a Revenue % Total Region mértékképletben: A REMOVEFILTERS
függvény most eltávolítja a Szűrőket a Régió oszlopból a Sales Territory tábla összes oszlopa helyett.
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
Adja hozzá a Revenue % Total Country mértéket a Sales táblához, majd formázza százalékként két tizedesjegygel. Adja hozzá az új mértéket a mátrixos vizualizációhoz.
Figyelje meg, hogy az Egyesült Államok régióihoz tartozó értékek kivételével minden érték 100%. Ennek oka az, hogy az Adventure Works vállalatnál az Egyesült Államok régiókra van osztva, míg a többi ország nincs.
Megjegyzés
A táblázatos modellek nem támogatják a változó mélységű, vagyis hézagos hierarchiákat. Ezért az általános tervezési megközelítés a szülő (vagy egyéb előd) értékek megismétlése a hierarchia alacsonyabb szintjein. Ausztrália például nem rendelkezik régióval, így az ország/régió érték a régió neveként ismétlődik. Mindig jobb megoldás értelmezhető értékeket tárolni, mint üresen hagyni egy mezőt.
A következő példában az utolsó mértéket fogja létrehozni. Adja hozzá a Revenue % Total Group (Bevétel %-os aránya az összes csoport esetében) mértéket, majd százalékos értékként formázza úgy, hogy a tizedesjegyek száma kettő legyen. Ezután adja hozzá az új mértéket a mátrixos vizualizációhoz.
Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS(
'Sales Territory'[Region],
'Sales Territory'[Country]
)
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalGroupRevenue
)
Amikor eltávolítja a szűrőket a Sales Territory tábla Régió és Ország oszlopából, a mérték a régió bevételét a csoport bevételének arányában számítja ki.
Szűrők megőrzése
A DAX-függvény szűrőkifejezésként KEEPFILTERS
használható a függvényben a CALCULATE
szűrők megőrzéséhez.
A feladathoz tartozó útmutatóért váltson a jelentés 1. oldalára. Ezután módosítsa a Revenue Red mértékdefiníciót a KEEPFILTERS
függvény használatához.
Revenue Red =
CALCULATE(
[Revenue],
KEEPFILTERS('Product'[Color] = "Red")
)
Figyelje meg, hogy a táblavizualizációban csak egyetlen Revenue Red (Bevétel – Vörös) érték szerepel. Ennek az az oka, hogy a logikai szűrőkifejezés megőrzi a Product tábla Color oszlopában meglévő szűrőket. A vöröstől eltérő színek azért üresek, mert a szűrőkörnyezetek és a szűrőkifejezések e két szűrő esetében lettek egyesítve. A fekete és a piros szín metszi egymást, és mivel mindkettő nem lehet TRUE
egyszerre, a kifejezés nem szűrhető terméksorok nélkül. Csak akkor lehetséges, hogy mindkét piros szűrő egyszerre lehet TRUE
, ami megmagyarázza, hogy miért jelenik meg az egyetlen Revenue Red érték.
Inaktív kapcsolatok használata
Az inaktív modellkapcsolatok csak akkor propagálhatnak szűrőket, ha a USERELATIONSHIP
DAX-függvényt szűrőkifejezésként továbbítja a CALCULATE
függvénynek. Ha ezt a függvényt inaktív kapcsolat létrehozására használja, az aktív kapcsolat automatikusan inaktívvá válik.
Tekintsen meg egy olyan például szolgáló mértékdefiníciót, amely inaktív kapcsolatot használ a Revenue (Bevétel) mérték kiszállítási dátumok szerinti számításához:
Revenue Shipped =
CALCULATE (
[Revenue],
USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)
Kapcsolatok működésének módosítása
A modellkapcsolat viselkedését módosíthatja egy kifejezés kiértékelésekor úgy, hogy a CROSSFILTER
DAX-függvényt szűrőkifejezésként továbbítja a CALCULATE
függvénynek. Ez egy speciális képesség.
A CROSSFILTER
függvény módosíthatja a szűrés irányát (mindkettőről egyetlenre vagy egyről mindkettőre), és akár letilthatja a kapcsolatot.