Megosztás a következőn keresztül:


CALCULATE

A következőkre vonatkozik:Számított oszlopSzámított táblaMértékVizualizá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 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á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.

SzűrőkörnyezetSorkörnyezetCALCULATETABLE függvénySzűrőfüggvények