USERELATIONSHIP() és CROSSFILTER() DAX Függvények használata
A USERELATIONSHIP() és CROSSFILTER() függvények haladó szintű DAX technikák, amelyeket összetett kapcsolatok és szűrési logikák kezelésére használunk Power BI-ban.
1️⃣ USERELATIONSHIP() – Alternatív kapcsolat aktiválása
A USERELATIONSHIP() függvényt akkor használjuk, ha egy táblák közötti inaktív kapcsolatot szeretnénk ideiglenesen aktívvá tenni egy számított mezőben vagy mértékben.
🔹 Példa: Két különböző dátum kapcsolat egy „Eladások” táblában
Tegyük fel, hogy van egy „Dátumok” nevű naptár táblánk és egy „Eladások” táblánk, amelyben két dátumoszlop van:
Eladások[Dátum]
→ az eladás dátuma (alapértelmezett kapcsolat)Eladások[Szállítási Dátum]
→ a szállítás dátuma
A „Dátumok” és „Eladások” között csak egy kapcsolat lehet aktív. Általában az eladás dátuma alapján kapcsolódnak, így a szállítás dátuma inaktív kapcsolatként szerepel.
🔹 Megoldás: A USERELATIONSHIP() használata az inaktív kapcsolat aktiválására
📌 Magyarázat:
- A
SUM(Eladások[Összeg])
az eladások összegét számolja. - USERELATIONSHIP() aktiválja a „Dátumok” és az „Eladások” közötti inaktív kapcsolatot, amely a
Szállítási Dátum
alapján történik. - Ennek eredményeként a kimutatásban a szállítási dátum szerinti eladási összeg jelenik meg.
✅ Használati esetek:
- Ha egy táblának több dátumoszlopa van (pl. rendelési dátum, szállítási dátum, számlázási dátum).
- Ha dinamikusan akarunk egy másik kapcsolatra számítást végezni, anélkül hogy módosítanánk a Power BI modell struktúráját.
2️⃣ CROSSFILTER() – A kapcsolat szűrési irányának módosítása
A CROSSFILTER() függvényt akkor használjuk, ha a táblakapcsolatok irányát dinamikusan módosítani szeretnénk egy számított mértékben vagy vizualizációban.
🔹 Példa: Kétirányú szűrés kikényszerítése a „Vevők” és „Eladások” táblák között
Tegyük fel, hogy van egy „Vevők” tábla és egy „Eladások” tábla, amely egyirányú kapcsolatban áll:
- „Vevők” → „Eladások” (egyirányú szűrés)
- Ez azt jelenti, hogy a vevők neve alapján szűrhetjük az eladásokat, de fordítva nem.
Ha azonban azt akarjuk, hogy egy lekérdezés során az eladások is szűrjék a vevőket, akkor a CROSSFILTER() függvényt kell használnunk.
🔹 Megoldás: A CROSSFILTER() használata kétirányú szűrés kikényszerítésére
📌 Magyarázat:
COUNT(Eladások[Eladás ID])
kiszámolja az eladások számát.- CROSSFILTER(Vevők[ID], Eladások[Vevő ID], BOTH) kétirányú szűrést alkalmaz, így nemcsak a vevők szűrhetik az eladásokat, hanem az eladások is szűrhetik a vevőket.
✅ Használati esetek:
- Ha szükség van arra, hogy az adatkapcsolatok mindkét irányba működjenek anélkül, hogy Power BI modellben módosítanánk a kapcsolati beállításokat.
- Ha egy adott számított mezőnél (pl. mértékben) kell ideiglenesen módosítani az irányt, de nem szeretnénk az egész modellben kétirányú kapcsolatot létrehozni.
3️⃣ USERELATIONSHIP() és CROSSFILTER() együttes használata
A két függvényt kombinálhatjuk, ha egy inaktív kapcsolatot akarunk aktiválni, és egyidejűleg a kapcsolat szűrési irányát is módosítani szeretnénk.
🔹 Példa: Szállítási dátum szerint szűrt eladások, de a termékek is szűrik a dátumot
Tegyük fel, hogy egy vizualizációban a szállítási dátumot szeretnénk használni az eladások összesítésére, de ugyanakkor a termékek is befolyásolják ezt a nézetet.
🔹 Megoldás: USERELATIONSHIP és CROSSFILTER kombinálása
📌 Magyarázat:
SUM(Eladások[Összeg])
kiszámolja az eladások összegét.- USERELATIONSHIP() bekapcsolja a szállítási dátum alapján történő szűrést.
- CROSSFILTER() lehetővé teszi, hogy a termékek is szűrhessék az eladásokat.
✅ Használati esetek:
- Ha egy vizualizáción egy inaktív kapcsolatot szeretnénk aktiválni, de egy másik táblával való kapcsolatot dinamikusan módosítanánk.
- Ha különböző dátumtípusokhoz és táblaszűrési irányokhoz igazítjuk a számításokat.
4️⃣ Összegzés
Függvény | Mire használjuk? | Példa eset |
---|---|---|
USERELATIONSHIP() | Inaktív kapcsolat aktiválása egy számításban | Ha egy eladási tábla több dátumoszlopot tartalmaz (pl. rendelési dátum és szállítási dátum) |
CROSSFILTER() | A kapcsolat szűrési irányának módosítása | Ha egy vevői és eladási tábla között kétirányú szűrést akarunk kikényszeríteni |
Kombináció | Mindkét technika alkalmazása egyszerre | Szállítási dátum szerinti számítás, amelyet a termékek is szűrhetnek |
Megjegyzések
Megjegyzés küldése