Ugrás a fő tartalomra

Power BI DAX alapok sum() és sumx() függvények

Power BI DAX alapok sum() és sumx() függvények


A SUM() és a SUMX() függvények a DAX nyelvben hasonló célra szolgálnak, de eltérő módon működnek. Nézzük meg a különbségeket és a használati eseteket!

A fő különbség az X végű iterátoros függvény és az többi normál aggregációs függvény között az, hogy az iterátoroknak sorkontextusuk van , ami azt jelenti, hogy a függvény bármikor „tudatában van” annak, hogy melyik sorra hivatkozik, és ezen lépked végig . 


SUM() vs. SUMX() – Főbb különbségek

TulajdonságSUM()SUMX()
MűködésEgy adott oszlop összegét számítja ki.Egy kifejezést számol ki soronként, majd az eredményeket összegzi.
BemenetCsak egy oszlopot fogad el.Egy táblát és egy kifejezést fogad el.
Hogyan számol?Egy oszlop összes értékét összeadja.Minden egyes sorban kiszámolja a kifejezést, majd az eredményeket összegzi.
Felhasználási példaHa egy oszlopban lévő értékeket kell egyszerűen összegezni.Ha az összegzést egy számított értékre kell alkalmazni.

Példa a különbség bemutatására

Tegyük fel, hogy van egy 'Sales' nevű táblánk, amely tartalmazza a következő oszlopokat:

ProductQuantityPrice
A2100
B3150
C1200

A teljes eladott mennyiséget és az eladások összegét szeretnénk kiszámítani.

SUM() használata

Ha a teljes eladott mennyiséget akarjuk kiszámítani:

---DAX

TotalQuantity = SUM(Sales[Quantity])

Eredmény:
👉 2 + 3 + 1 = 6

Viszont ha a teljes bevételt így próbáljuk számolni:

---DAX

TotalRevenue = SUM(Sales[Price])

Ez hibás eredményt adna, mert az egyes termékek árát adja össze, nem a teljes bevételt.

SUMX() használata

A teljes bevétel kiszámítása helyesen:

---DAX

TotalRevenue = SUMX(Sales, Sales[Quantity] * Sales[Price])

Lépések:

  1. Minden sorban kiszámolja az egyes tételek értékét
    • A: 2 × 100 = 200
    • B: 3 × 150 = 450
    • C: 1 × 200 = 200
  2. Összegzi az eredményeket:
    • 200 + 450 + 200 = 850

Összegzés: Mikor melyiket használd?

SUM() – Ha egy oszlop meglévő értékeit kell összegezni.
SUMX() – Ha minden egyes sorban egy számított értéket kell előbb kiszámolni, majd ezt kell összegezni.


Előnyök és korlátok

SzempontSUM() előnyeSUMX() előnyeSUMX() hátránya
EgyszerűségKönnyen használható.Rugalmasabb, komplex számításokra alkalmas.Összetettebb megírás.
TeljesítményGyors, mert egy teljes oszlopon végez összeadást.Testreszabható számításokat tesz lehetővé.Lassabb lehet nagy tábláknál, mert soronként számol.
FunkcionalitásCsak egy oszlopra alkalmazható.Bármilyen kifejezést támogat.Több számítási erőforrást igényel.



💡 Tipp: Ha egy oszlop közvetlen összegére van szükséged, használd a SUM() függvényt. Ha viszont soronként kell számítást végezni, akkor a SUMX() a megfelelő választás.


Hasonló elv vonatkozik a többi X végű függvényre is.

A DAX-ban tehát több olyan függvény is létezik, amely „X” végződésű, és egy táblán végzett soronkénti számítást követően aggregálja az eredményt. Ezek az iterátor függvények (iterators), amelyek egy adott oszlop vagy kifejezés minden egyes sorát feldolgozzák.

Gyakori „X” végződésű DAX függvények:

FüggvényLeírás
SUMX()Minden egyes soron végrehajt egy kifejezést, majd az eredményeket összeadja.
AVERAGEX()Minden egyes sorban kiszámol egy kifejezést, majd annak átlagát veszi.
MAXX()Minden sorban kiszámolja a kifejezést, és az eredmények közül a legnagyobbat adja vissza.
MINX()Minden sorban kiszámolja a kifejezést, és az eredmények közül a legkisebbet adja vissza.
COUNTX()Megszámolja az érvényes (nem üres) kifejezések számát a sorokban.
COUNTAX()Megszámolja az érvényes (nem üres) szöveges és numerikus értékeket egy táblában.
PRODUCTX()Minden egyes sorban kiszámolja a kifejezést, majd az eredmények szorzatát adja vissza.
MEDIANX()A számított értékek mediánját adja vissza.
VARX.P()A teljes populációra vonatkozó szórásnégyzetet számolja ki a soronként számított kifejezések alapján.
VARX.S()A mintára vonatkozó szórásnégyzetet számolja ki a soronként számított kifejezések alapján.
STDEVX.P()A teljes populáció szórását számolja ki a soronként számított kifejezések alapján.
STDEVX.S()A minta szórását számolja ki a soronként számított kifejezések alapján.


Példa a használatra

Tegyük fel, hogy van egy 'Sales' tábla az alábbi oszlopokkal:

ProductQuantityPrice
A2100
B3150
C1200

Ha a termékek egyedi árait akarjuk átlagolni:

--DAX

AvgPrice = AVERAGEX(Sales, Sales[Price])

Eredmény:
👉 (100 + 150 + 200) / 3 = 150

Ha az átlagos eladási értéket akarjuk kiszámítani:

---DAX

AvgSales = AVERAGEX(Sales, Sales[Quantity] * Sales[Price])

Lépések:

  • A: 2 × 100 = 200
  • B: 3 × 150 = 450
  • C: 1 × 200 = 200
  • Átlag: (200 + 450 + 200) / 3 = 283.33


Mikor használjunk „X” végződésű függvényeket?

Ha egy számítást minden egyes sorra alkalmaznunk kell
Ha egy oszlop egyszerű aggregálása nem elég (pl. SUM helyett SUMX)
Ha egy tábla alapján történő számításra van szükség



💡 Tipp: Az X végződésű függvények rugalmasabbak, de nagyobb számítási erőforrást igényelnek, ezért érdemes optimalizálni a modellek teljesítményét.






Megjegyzések