CALCULATE
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 lényegében megegyezik a mértékkel.
A szűrők lehetnek:
- Logikai szűrőkifejezések
- Táblaszűrő kifejezések
- Szűrőmódosítási függvények
Több szűrő esetén a AND (&&
) logikai operátorhasználatával lehet kiértékelni, ami azt jelenti, hogy minden feltételnek TRUE
, vagy a OR (||
) logikai operátornak kell lennie, ami azt jelenti, hogy bármelyik feltétel igaz lehet.
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 is be kell tartaniuk:
- Egyetlen táblából származó oszlopokra hivatkozhatnak.
- Nem hivatkozhatnak a mértékekre.
- Beágyazott CALCULATE függvényt nem használhatnak.
A Power BI Desktop 2021. szeptemberi kiadásától kezdve a következők is érvényesek:
- Nem használhatnak olyan függvényeket, amelyek beolvasnak vagy visszaadnak egy táblát, hacsak nem adnak át argumentumokat az összesítő függvényeknek.
-
tartalmazhatnak olyan összesítési 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énnyel összetett szűrőfeltételeket alkalmazhat, beleértve azokat is, amelyeket nem lehet logikai szűrőkifejezéssel definiálni.
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á. További vezérlést biztosítanak a szűrőkörnyezet módosításakor.
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, ALLEXCEPT, ALLNOBLANKROW | 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 REMOVEFILTERS függvényt, érdemesebb szűrőket eltávolítani.
Visszaadott érték
A kifejezés eredménye.
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 lehetséges standard eredmény érhető el, 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, akkor 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.
A szűrők nélküli CALCULATE függvény egy adott követelményt ér el. A sorkörnyezetet áttűnés a szűrőkörnyezetbe. Erre akkor van szükség, ha egy modelladatokat összegző kifejezést (nem modellmértéket) 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ő. Vegye figyelembe, hogy ha 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
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.
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.
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.
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% |
Revenue % Total Channel =
DIVIDE(
SUM(Sales[Sales Amount]),
CALCULATE(
SUM(Sales[Sales Amount]),
REMOVEFILTERS('Sales Order'[Channel])
)
)
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"
)
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.
Kapcsolódó tartalom
SzűrőkörnyezetSorkörnyezetCALCULATETABLE függvénySzűrőfüggvények