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


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.

Szűrőkörnyezet
Sorkörnyezet
CALCULATETABLE függvény
Szűrőfüggvények