PowerBI DAX használat: GROUPBY() vs. ADDCOLUMNS() + SUMMARIZE()
🧠 Alapok röviden
A DAX-ban több módon is lehet aggregált táblákat létrehozni.
A három leggyakrabban használt függvény:
-
SUMMARIZE() -
ADDCOLUMNS() -
GROUPBY()
Mindhárom táblát ad vissza, és nem számszerű értéket, tehát jellemzően táblakifejezésekben használjuk őket, pl. CALCULATETABLE() vagy SUMX() belsejében.
⚙️ SUMMARIZE()
A SUMMARIZE() függvény a “klasszikus” csoportosító függvény.
Olyan, mint az SQL GROUP BY, de rugalmasabb — létrehozhat több oszlopot is, és csoportosítás után aggregálhat.
Szintaxis:
Példa:
➡️ Csoportosítja a táblát termék + év szerint, és kiszámolja az összesített eladásokat.
⚙️ ADDCOLUMNS() + SUMMARIZE()
ADDCOLUMNS()-t gyakran kombináljuk SUMMARIZE()-zal, ha összetett vagy kontextusfüggő számításokat szeretnénk a csoportosított táblához hozzáadni.
Példa:
➡️ Ez ugyanazt az eredményt adja, mint a fenti SUMMARIZE() példában — de:
-
tiszta logikai szétválasztás: először csoportosít (
SUMMARIZE), -
majd hozzáad számított oszlopot (
ADDCOLUMNS).
💡 Mikor hasznos?
Ha az aggregálás összetettebb számításokat igényel, vagy kontextusváltás szükséges (CALCULATE(), szűrőfeltételek stb.).
⚙️ GROUPBY()
A GROUPBY() egy újabb generációs DAX függvény, amely a “strict” aggregálást szolgálja,
és a célja: nagy adathalmazokon hatékonyabb aggregáció előre definiált táblakörnyezetben.
Szintaxis:
De a legfontosabb:
➡️ GROUPBY() nem értelmezi a DAX kontextust (pl. CALCULATE-filtereket) automatikusan!
Ha számított oszlopot adunk meg, az csak az aktuális csoporton belül dolgozik, nem az egész modellre kiterjesztve.
Példa:
CURRENTGROUP() az aktuális csoport mini-táblája — ez kötelező, mert a GROUPBY() nem látja a teljes táblát, csak a csoport saját sorait.
🔍 Különbségek mélyebben
| Szempont | SUMMARIZE() | ADDCOLUMNS() + SUMMARIZE() | GROUPBY() |
|---|---|---|---|
| Funkció | Klasszikus csoportosítás | Csoportosítás + kiegészítő számítások | Szigorú, alacsony szintű aggregáció |
| Kifejezés kontextus | Érti a szűrő- és sor-kontextust | Igen (ADDCOLUMNS miatt) | Nem automatikus – CURRENTGROUP() kell |
| Teljesítmény | Jó, de komplex méréseknél lassabb lehet | Közepes – minden CALCULATE() extra lekérdezés | Gyors nagy adatnál, ha jól van megírva |
| Rugalmasság | Nagy | Legnagyobb | Korlátozott, de precíz |
| Ajánlott használat | Egyszerű csoportosítás + összegzés | Ha extra számított mezőket akarsz | Nagy táblákhoz, előaggregálásra |
| Tipikus használat | Jelentés aggregáció | Összetett számítások (KPI, ratio) | Optimalizált ETL / DAX staging tábla |
🧩 Gyakorlati példa – különbség a kimenetben
1️⃣ SUMMARIZE:
✅ Egyszerű, jól olvasható
⚠️ Ha több aggregált mezőt adsz hozzá, “auto-execute” DAX context miatt redundáns lekérdezések jöhetnek.
2️⃣ ADDCOLUMNS + SUMMARIZE:
✅ Rugalmas: többféle számítás kontextus szerint
⚠️ Lassabb, mert minden CALCULATE() külön értékelést végez.
3️⃣ GROUPBY:
✅ Nagy táblán gyorsabb, mert nem terjeszti ki a filter kontextust
⚠️ Csak egyszerű aggregációkhoz jó — CALCULATE() nem működik benne!
🧠 Melyiket mikor használd?
| Szenárió | Javasolt függvény |
|---|---|
| Jelentéshez gyors, egyszerű összegzés | SUMMARIZE() |
| Többféle KPI, kontextusváltás szükséges | ADDCOLUMNS() + SUMMARIZE() |
| Előaggregált tábla (staging), nagy adat | GROUPBY() |
⚡ Összefoglalás
-
🔹
SUMMARIZE()→ általános és olvasható, a legtöbb esethez elég -
🔹
ADDCOLUMNS()+SUMMARIZE()→ kontextusérzékeny, de lassabb -
🔹
GROUPBY()→ gyors, de szigorúan kontrollált (nem támogat minden DAX-funkciót)
👉 Pro tipp: ha CALCULATE()-ot vagy szűrőváltást kell használnod, NE GROUPBY()-t válassz, hanem ADDCOLUMNS()-t.
Ha viszont hatalmas tábla-előfeldolgozást csinálsz (pl. aggregált staging tábla Power BI modellben), akkor GROUPBY() lesz a hatékonyabb megoldás.
Megjegyzések
Megjegyzés küldése