Power Bi tábla kapcsolatok kezelése
Több DAX függvény is létezik, amelyek segítenek más táblákban lévő adatok átvételében és lekérdezésében Power BI-ban. Ezek a függvények lehetővé teszik, hogy különböző kapcsolatokon keresztül hivatkozzunk más táblák mezőire.
🔹1. RELATED() – Egyetlen érték lekérése a "sok"-ból "egy"-be kapcsolat esetén
✅ Mikor használjuk?
- Ha egy kapcsolódó tábla "egy" oldaláról (pl. Dimenzió tábla) szeretnénk értéket áthozni egy "sok" oldalra (pl. Tény tábla).
Példa: A terméknevek átvétele az "Eladások" táblában
Ha az „Eladások” tábla a „Termékek” táblához kapcsolódik Termék ID
alapján (egy sok-az-egyhez kapcsolat), a RELATED() függvény segítségével könnyen áthozhatjuk a termékneveket:
🔹 Használati esetek:
- Ha egy Tény tábla (pl. Eladások) egy Dimenzió tábla (pl. Termékek) egyik attribútumát szeretné elérni.
- Ha egy "sok" oldalhoz tartozó egyedi jellemzőt akarunk elérni a "egy" oldalról.
🔹2. RELATEDTABLE() – Táblázatos adatok visszaadása ("egy"-ből "sok"-ba kapcsolat)
✅ Mikor használjuk?
- Ha egy kapcsolódó tábla "sok" oldalát szeretnénk elérni a "egy" oldalról.
- Másképpen fogalmazva: az összes kapcsolódó sort akarjuk lekérni egy adott tételhez.
Példa: Az összes eladás lekérése egy adott termékhez
Ha egy „Termékek” tábla van egy-az-sokhoz kapcsolatban az „Eladások” táblával (Termék ID
alapján), akkor az adott termékhez tartozó összes eladást megkaphatjuk:
🔹 Használati esetek:
- Ha egy dimenziótáblából szeretnénk elérni az összes kapcsolódó tételt egy ténytáblában.
- Ha egy "egy" oldali rekordhoz kapcsolódó "sok" tételt szeretnénk vizsgálni.
🔹3. LOOKUPVALUE() – Egy adott érték keresése és visszaadása egy másik táblából
✅ Mikor használjuk?
- Ha NINCS kapcsolat a két tábla között (nem modeleztünk), de egy adott érték alapján keresni szeretnénk.
Példa: Termékkategória hozzárendelése egy ID alapján
Tegyük fel, hogy az Eladások tábla tartalmaz egy Termék ID
oszlopot, de nincs közvetlen kapcsolata a Termékek táblával. Ekkor a LOOKUPVALUE() segítségével egy adott ID alapján kereshetjük ki a termékkategóriát:
📌 Magyarázat:
- A LOOKUPVALUE() megkeresi a Termékek táblában azt a sort, ahol
Termék ID
megegyezik az Eladások táblában lévőTermék ID
-vel. - Visszaadja a megfelelő
Kategória
értéket.
🔹 Használati esetek:
- Ha nincs kapcsolattábla, de egy értéket keresni akarunk egy másik táblából.
- Ha egy WHERE feltételes keresést szeretnénk DAX-ban megvalósítani.
🔹4. INTERSECT() – Két halmaz közös elemeinek lekérdezése
✅ Mikor használjuk?
- Ha két különböző táblában vagy lekérdezésben közös sorokat szeretnénk megtalálni.
Példa: Két ügyféllista közös ügyfeleinek keresése
Ha van két táblánk:
Ügyfelek_2023
(azok az ügyfelek, akik vásároltak 2023-ban)Ügyfelek_2024
(azok az ügyfelek, akik vásároltak 2024-ben)
Ezzel a lekérdezéssel megtalálhatjuk a mindkét évben vásárló ügyfeleket:
🔹 Használati esetek:
- Ha két különböző tábla vagy lekérdezés közös elemeit kell megtalálnunk.
- Ha egy ügyfél vagy termék metszetét kell meghatároznunk két különböző adatforrásban.
🔹5. TREATAS() – Egy másik tábla szűrésének alkalmazása egy új táblára
✅ Mikor használjuk?
- Ha egy másik táblából szeretnénk szűrési kontextust áthozni a kapcsolatok kifejezett beállítása nélkül.
Példa: Egyedi dátumszűrés alkalmazása egy másik táblára
Ha van egy külön dátumtáblánk (Dátumok
) és egy nincs közvetlen kapcsolata az Eladások táblával, de az adott évet szeretnénk használni szűrésként:
📌 Magyarázat:
- A
TREATAS()
úgy kezeli aDátumok[Év]
oszlop értékeit, mintha azok egy szűrési kapcsolatot hoznának létre az Eladások[Év] mezővel, még akkor is, ha nincs kapcsolat.
🔹 Használati esetek:
- Ha egy adatforrásban szereplő szűrést más táblára szeretnénk alkalmazni.
- Ha dinamikus kapcsolatok nélkül akarunk szűrni különböző adatmodell-részek között.
📌 Összegzés: Alternatívák a RELATED() függvényhez
Függvény | Használati eset | Kapcsolat szükséges? |
---|---|---|
RELATED() | "Egyből sokba" adatlekérés | ✅ Igen |
RELATEDTABLE() | "Sokból egybe" kapcsolódó sorok lekérése | ✅ Igen |
LOOKUPVALUE() | Adott érték keresése egy másik táblában | ❌ Nem |
INTERSECT() | Két tábla közös elemeinek megtalálása | ❌ Nem |
TREATAS() | Egy másik tábla szűrésének alkalmazása | ❌ Nem |
Megjegyzések
Megjegyzés küldése