KISZÁMÍT
A következőre vonatkozik: Számított oszlop Számított tábla Mérték vizualizáció számítása
Egy kifejezés kiértékelése módosított szűrőkörnyezetben.
Feljegyzés
Itt található a CALCULATETABLE függvény is. Pontosan ugyanazt a funkciót hajtja végre, kivéve, ha módosítja a táblaobjektumot visszaadó kifejezésre alkalmazott szűrőkörnyezetet.
Syntax
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Paraméterek
Időszak | Definíció |
---|---|
kifejezés | 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 az AND (&> logikai operátor) használatával lehet kiértékelni őket, ami azt jelenti, hogy minden feltételnek IGAZ, vagy az OR (||) logikai operátornak kell lennie, ami azt jelenti, hogy bármelyik feltétel igaz lehet.
Logikai szűrőkifejezések
A logikaikifejezés-szűrők olyan kifejezések, amelyek a kiértékelés során igaz vagy hamis értéket adnak vissza. 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ő 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ők táblaobjektumokat alkalmaznak 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.
Függvény | 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. |
KERESZTSZŰRŐ | Módosítsa a szűrő irányát (mindkettőről egy vagy mindkettőre), vagy tiltsa le a kapcsolatot. |
1 Az 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, jobb, ha szűrők eltávolítására használja.
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 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ül használt 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éplete vagy egy iterátorfüggvényben lévő kifejezés kiértékelése esetén 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 Értékesítési tábla mértékdefiníciója bevételi eredményt hoz létre, 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 a DAX-mintamodellt.
Blue Revenue =
CALCULATE(
SUM(Sales[Sales Amount]),
'Product'[Color] = "Blue"
)
Kategória | Értékesítési összeg | Kék bevétel |
---|---|---|
Tartozékok | 1 272 057,89 USD | 165 406,62 USD |
Kerékpárok | 94 620 526,21 USD | 8 374 313,88 USD |
Clothing | 2 117 613,45 USD | 259 488,37 USD |
Összetevők | 11 799 076,66 USD | 803 642,10 USD |
Teljes | 109 809 274,20 USD | 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 oszlopához, vagy a szűrő felülírja az oszlopra már alkalmazott szűrőt.
Az alábbi Értékesítési tábla mértékdefiníciója az összes értékesítési csatornán az értékesítések arányát eredményezi.
Csatorna | Értékesítési összeg | Bevétel %- teljes csatorna |
---|---|---|
Internet | 29 358 677,22 USD | 26.74% |
Reseller | $80,450,596.98 | 73.26% |
Teljes | 109 809 274,20 USD | 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ábla Sales Amount oszlopértékét (a szűrőkörnyezetben) ugyanazzal a kifejezéssel osztja el 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ény használatával, amely egy szűrőmódosító függvény. Eltávolítja a szűrőket a Sales Order tábla Csatorna oszlopábó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 dollár, alacsony, ellenkező esetben magas.
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ásnak nevezzük. Az ALLEXCEPT függvény a CustomerKey oszlop kivételével az összes Ügyfél táblaoszlopból eltávolítja a szűrőket.
Kapcsolódó tartalom
Szűrőkörnyezet
Sorkörnyezet
CALCULATETABLE függvény
Szűrőfüggvények