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 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 Alacsony; ellenkező esetben magas.

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.