Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Számított oszlop
Számított tábla
Mérték
Vizualizációszámítási
Egy kifejezés kiértékelése módosított szűrőkörnyezetben.
Jegyzet
Itt található a CALCULATETABLE függvény is. Pontosan ugyanazt a funkciót hajtja végre, kivéve, ha módosítja a szűrőkörnyezetet, egy táblaobjektumotvisszaadó kifejezésre alkalmazva.
Szintaxis
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Paraméterek
| Kifejezés | Definíció |
|---|---|
expression |
A kiértékelendő kifejezés. |
filter1, filter2,… |
(Nem kötelező) Szűrőket vagy szűrőmódosító függvényeket definiáló logikai kifejezések vagy táblakifejezések. |
Az első paraméterként használt kifejezés mértékként működik.
A szűrők lehetnek:
- Logikai szűrőkifejezések
- Táblaszűrő kifejezések
- Szűrőmódosítási függvények
Ha több szűrőt használ, azokat a AND (&&) logikai operátorral értékelheti ki, ami azt jelenti, hogy minden feltételnek a (||) logikai operátornak OR kell lennieTRUE, ami azt jelenti, hogy bármelyik feltétel igaz lehet. További információ: DAX operátorok > logikai operátorai.
Logikai szűrőkifejezések
A logikai kifejezésszűrők olyan kifejezések, amelyek kiértékelése TRUE vagy FALSE. Több szabályt kell követnie:
Egyetlen táblából származó oszlopokra hivatkozhat.
Nem hivatkozhat mértékekre.
Beágyazott függvényt nem használhat CALCULATE .
Nem használhat olyan függvényeket, amelyek beolvasnak vagy visszaadnak egy táblát, hacsak nem adja át őket argumentumként az aggregációs függvényeknek.
Tartalmazhat olyan összesítő függvényt, amely skaláris értéket ad vissza. Például:
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Táblaszűrő kifejezés
A táblakifejezés-szűrő egy táblaobjektumot alkalmaz szűrőként. Lehet, hogy egy modelltáblára mutató hivatkozás, de valószínűbb, hogy egy táblaobjektumot visszaadó függvény. A FILTER függvény használatával összetett szűrési feltételeket alkalmazhat, beleértve azokat is, amelyeket logikai szűrőkifejezéssel nem definiálhat.
Szűrőmódosító függvények
A szűrőmódosító függvényekkel nem csupán szűrőket adhat hozzá. A szűrőkörnyezet módosításakor további vezérlést biztosítanak.
| Funkció | Cél |
|---|---|
| REMOVEFILTERS | Távolítsa el az összes szűrőt vagy szűrőt egy tábla egy vagy több oszlopából, vagy egyetlen tábla összes oszlopából. |
| ALL 1, , ALLEXCEPTALLNOBLANKROW | Szűrők eltávolítása egy vagy több oszlopból vagy egyetlen tábla összes oszlopából. |
| KEEPFILTERS | Szűrő hozzáadása a meglévő szűrők eltávolítása nélkül ugyanazon az oszlopon. |
| USERELATIONSHIP | Inaktív kapcsolat létesítése a kapcsolódó oszlopok között, ebben az esetben az aktív kapcsolat automatikusan inaktívvá válik. |
| CROSSFILTER | Módosítsa a szűrő irányát (mindkettőről egy vagy mindkettőre), vagy tiltsa le a kapcsolatot. |
1 A ALL függvény és változatai szűrőmódosítóként és táblaobjektumokat visszaadó függvényként is működnek. Ha az eszköz támogatja a függvényt REMOVEFILTERS , használja a szűrők eltávolításához.
Visszaadott érték
A kifejezésből származó érték.
Megjegyzések
Szűrőkifejezések megadásakor a CALCULATE függvény módosítja a szűrőkörnyezetet a kifejezés kiértékeléséhez. Minden szűrőkifejezés esetében két szabványos eredmény létezik, ha a szűrőkifejezés nincs beburkolva a KEEPFILTERS függvénybe:
- Ha az oszlopok vagy táblák nincsenek a szűrőkörnyezetben, a rendszer új szűrőket ad hozzá a szűrőkörnyezethez a kifejezés kiértékeléséhez.
- Ha az oszlopok vagy táblák már a 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.
CALCULATE A függvény szűrők nélküli használata egy adott követelményt valósít meg. A sorkörnyezetet áttűnés a szűrőkörnyezetbe. Erre az áttűnésre akkor van szükség, ha a modelladatokat összegző kifejezéseket (nem modellmértékeket) sorkörnyezetben kell kiértékelni. Ez a forgatókönyv egy számított oszlop képletében vagy egy iterátorfüggvényben lévő kifejezés kiértékelésekor fordulhat elő. Ha a sorkörnyezetben modellmértékeket használ, a környezetváltás automatikus.
-
Ez a függvény nem támogatott DirectQuery módban, ha számított oszlopokban vagy sorszintű biztonsági (RLS) szabályokban használják.
Példák
A cikkben szereplő példák az Adventure Works DW 2020 Power BI Desktop-modellel használhatók. A modell lekéréséhez tekintse meg DAX mintamodell.
Az alábbi Sales tábla mértékdefiníciója bevételi eredményt ad, de csak a kék színnel rendelkező termékek esetében.
Blue Revenue =
CALCULATE ( SUM ( Sales[Sales Amount] ), 'Product'[Color] = "Blue" )
| Kategória | Értékesítési összeg | Kék bevétel |
|---|---|---|
| Kiegészítők | 1 272 057,89 USD | 165 406,62 USD |
| Kerékpárok | 94 620 526,21 USD | 8 374 313,88 USD |
| Ruházat | 2 117 613,45 USD | 259 488,37 USD |
| Összetevők | 11 799 076,66 USD | 803 642,10 USD |
| Összes | 109 809 274,20 dollár | 9 602 850,97 usd |
A CALCULATE függvény kiértékeli a Sales tábla Sales Amount oszlopának összegét egy módosított szűrőkörnyezetben. Új szűrőt ad hozzá a Termék tábla Szín oszlophoz, vagy a szűrő felülírja az oszlopra már alkalmazott szűrőt.
Az alábbi Sales tábla mértékdefiníciója az összes értékesítési csatorna értékesítéseinek arányát eredményezi.
Revenue % Total Channel =
DIVIDE (
SUM ( Sales[Sales Amount] ),
CALCULATE (
SUM ( Sales[Sales Amount] ),
REMOVEFILTERS ( 'Sales Order'[Channel] )
)
)
| Csatorna | Értékesítési összeg | Bevétel % teljes csatorna |
|---|---|---|
| internet | 29 358 677,22 USD | 26.74% |
| Viszonteladó | 80 450 596,98 USD | 73.26% |
| Összes | 109 809 274,20 dollár | 100.00% |
A DIVIDE függvény egy olyan kifejezést oszt el, amely a Sales táblát összegzi, Értékesítési összeg oszlop értékét (a szűrőkörnyezetben) ugyanazzal a kifejezéssel egy módosított szűrőkörnyezetben. A CALCULATE függvény módosítja a szűrőkörnyezetet a REMOVEFILTERS függvénnyel, amely egy szűrőmódosító függvény. Eltávolítja a szűrőket a Értékesítési rendelés tábla Csatorna oszlopból.
Az alábbi Ügyfél tábla számított oszlopdefiníciója hűségosztályba sorolja az ügyfeleket. Ez egy nagyon egyszerű forgatókönyv: Ha az ügyfél által előállított bevétel kisebb, mint 2500 usd, akkor
Customer Segment =
IF (
CALCULATE (
SUM ( Sales[Sales Amount] ),
ALLEXCEPT ( Customer, Customer[CustomerKey] )
) < 2500,
"Low",
"High"
)
| Ügyfélszegmens | Ügyfélszám | Értékesítési összeg |
|---|---|---|
| Magas | 4,637 | 102 670 663,09 USD |
| Alacsony | 13,848 | 7 138 611,11 USD |
| Összes | 18,485 | 109 809 274,20 dollár |
Ebben a példában a sorkörnyezet szűrőkörnyezetté lesz konvertálva. Ezt környezetváltásinéven is ismert. A ALLEXCEPT függvény eltávolítja a szűrőket az összes Ügyfél táblaoszlopból, kivéve a CustomerKey oszlopot.