Szűrőmódosító függvények használata

Befejeződött

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.