Ugrás a fő tartalomra

Power Bi tábla kapcsolatok kezelése

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:

---DAX

Termék Név = RELATED(Termékek[Név])

🔹 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:

---DAX

Kapcsolódó Eladások = RELATEDTABLE(Eladások)

🔹 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:

--DAX

Termék Kategória = LOOKUPVALUE(Termékek[Kategória], Termékek[Termék ID], Eladások[Termék ID])

📌 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:

---DAX

Közös Ügyfelek = INTERSECT(Ügyfelek_2023[Ügyfél ID], Ügyfelek_2024[Ügyfél ID])

🔹 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:

--DAX

Éves Eladás = CALCULATE( SUM(Eladások[Összeg]), TREATAS(VALUES(Dátumok[Év]), Eladások[Év]) )

📌 Magyarázat:

  • A TREATAS() úgy kezeli a Dá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ényHasználati esetKapcsolat 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