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, , 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 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