Szűrőkörnyezet módosítása
CALCULATE
A DAX függvénnyel módosíthatja a szűrőkörnyezetet a képletekben. A CALCULATE függvény szintaxisa a következő:
CALCULATE(<expression>, [[<filter1>], <filter2>]…)
A függvény esetében egy olyan kifejezést kell megadni, amely skaláris értéket és a szükséges számú szűrőt adja vissza. Ez a kifejezés lehet egy mérték (nevesített kifejezés) vagy bármely olyan kifejezés, amely szűrőkörnyezetben kiértékelhető.
A szűrők logikai kifejezések vagy táblakifejezések lehetnek. A szűrőkörnyezet módosításakor lehetőség van olyan szűrőmódosítási függvények átadására is, amelyek további vezérlőt biztosítanak.
Ha több szűrővel rendelkezik, a rendszer a logikai operátorral értékeli ki őket AND
, ami azt jelenti, hogy minden feltételnek egyidejűnek kell lennie TRUE
.
Megjegyzés
A CALCULATETABLE
DAX-függvény pontosan ugyanazt a funkciót hajtja végre, mint a függvény, azzal a CALCULATE
kivételrel, hogy módosítja a táblaobjektumot visszaadó kifejezésre alkalmazott szűrőkörnyezetet. Ebben a modulban a magyarázatok és példák a függvényt CALCULATE
használják, de ne feledje, hogy ezek a forgatókönyvek a CALCULATETABLE
függvényre is vonatkozhatnak.
Logikaikifejezés-szűrők alkalmazása
A logikai kifejezésszűrő olyan kifejezés, amely a vagy FALSE
a TRUE
értéket értékeli ki. A logikai szűrőknek a következő szabályoknak kell megfelelniük:
- Csak egyetlen oszlopra hivatkozhatnak.
- Nem hivatkozhatnak mértékre.
- Nem használhatnak olyan függvényeket, amelyek beolvasnak vagy visszaadnak egy olyan táblát, amely olyan összesítő függvényeket tartalmaz, mint a
SUM
.
Ebben a példában egy mértéket fog létrehozni. Először is töltse le és nyissa meg az Adventure Works DW 2020 M06.pbix fájlt. Ezután adja hozzá a következő mértéket a Sales táblához, amely egy piros termékek logikai kifejezésszűrőjének használatával szűri a Revenue mértéket.
Revenue Red = CALCULATE([Revenue], 'Product'[Color] = "Red")
Adja hozzá a Revenue Red (Bevétel – Vörös) mértéket a jelentés 1. oldalán található táblavizualizációhoz.
A következő példában az alábbi mérték többféle színnel szűri a Revenue (Bevétel) mértéket. Figyelje meg az operátor használatát, IN
majd a színértékek listáját.
Revenue Red or Blue = CALCULATE([Revenue], 'Product'[Color] IN {"Red", "Blue"})
Az alábbi mérték drága termékek szerint szűri a Revenue (Bevétel) mértéket. A drága termékek a 1000 dollárnál magasabb listaárú termékek.
Revenue Expensive Products = CALCULATE([Revenue], 'Product'[List Price] > 1000)
Táblakifejezés-szűrők alkalmazása
A táblakifejezés-szűrők táblaobjektumokat alkalmaznak szűrőként. Ez lehet egy modelltáblára mutató hivatkozás, de inkább egy táblaobjektumot visszaadó DAX-függvény.
FILTER
A DAX függvénnyel általában összetett szűrési feltételeket alkalmazhat, beleértve azokat is, amelyek logikai szűrőkifejezéssel nem határozhatók meg. A FILTER
függvény iterátorfüggvényként van besorolva, ezért egy táblát vagy táblakifejezést, valamint egy olyan kifejezést adna át, amelyet a tábla minden egyes sorához ki kell értékelnie.
A FILTER
függvény egy olyan táblaobjektumot ad vissza, amely pontosan ugyanazzal a szerkezettel rendelkezik, mint amelyet a tábla átadott. A sorok az átadott sorok részhalmazai, vagyis azok a sorok, amelyekben a kifejezés kiértékelése megtörtént.TRUE
Az alábbi példa egy táblaszűrő kifejezést mutat be, amely a függvényt FILTER
használja:
Revenue High Margin Products =
CALCULATE(
[Revenue],
FILTER(
'Product',
'Product'[List Price] > 'Product'[Standard Cost] * 2
)
)
Ebben a példában a függvény szűri FILTER
a Product tábla összes olyan sorát, amely a szűrőkörnyezetben található. A szűrt tábla soraként jelenik meg minden olyan termék sora, amely esetében a listaár nagyobb, mint a normál költség duplája. Ezért a Revenue (Bevétel) mértéket a függvény által visszaadott összes termék esetében kiértékeli a FILTER
rendszer.
A függvénynek CALCULATE
átadott összes szűrőkifejezés táblaszűrő kifejezés. A logikaiszűrő-kifejezés olyan egyszerűsített jelölésrendszert biztosít, amellyel javítható az írási és olvasási élmény. A Microsoft Power BI belsőleg táblaszűrési kifejezésekre fordítja le a logikaiszűrő-kifejezéseket, és így fordítja le a Revenue Red (Bevétel – Vörös) mértékdefiníciót is.
Revenue Red =
CALCULATE(
[Revenue],
FILTER(
'Product',
'Product'[Color] = "Red"
)
)
Szűrési viselkedés
Két lehetséges standard eredmény jelenik meg, amikor szűrőkifejezéseket ad hozzá a CALCULATE
függvényhez:
- Ha az oszlopok (vagy táblák) nem szűrőkörnyezetben találhatók, a rendszer új szűrőket ad hozzá a szűrőkörnyezethez a
CALCULATE
kifejezés kiértékeléséhez. - Ha az oszlopok (vagy táblák) már szűrőkörnyezetben vannak, az új szűrők felülírják a meglévő szűrőket a
CALCULATE
kifejezés kiértékeléséhez.
Az alábbi példák bemutatják, hogyan működik a szűrőkifejezések hozzáadása a CALCULATE
függvényhez.
Megjegyzés
Egyik példában sincsenek szűrők alkalmazva a táblavizualizációra.
Az előző tevékenységhez hasonlóan a Revenue Red (Bevétel – Vörös) mérték egy régiók szerint csoportosító és a bevételt megjelenítő táblavizualizációhoz lett hozzáadva.
Mivel a Termék tábla Szín oszlopában nincs szűrő, a mérték kiértékelése új szűrőt ad hozzá a szűrőkörnyezethez. Az első sorban a 2 681 324,79 dolláros érték az ausztráliai régióban eladott, vörös színnel jelzett termékekre vonatkozik.
A táblavizualizáció első oszlopának RégiórólSzínre váltása eltérő eredményt fog eredményezni, mivel a Product tábla Szín oszlopa már szűrőkörnyezetben van.
A Revenue Red mérték képlete úgy értékeli ki a Revenue mértéket, hogy hozzáad egy szűrőt a Product tábla Color (to red) oszlopához. Ennek következtében a szín szerint csoportosító vizualizációban a mértékképlet egy új szűrővel írja felül a szűrőkörnyezetet.
Az eredmény kívánt vagy nem kívánt érték is lehet. A következő egység bevezeti a KEEPFILTERS
DAX-függvényt, amely egy szűrőmódosítási függvény, amellyel a szűrőket megőrizheti, és nem felülírhatja őket.