Egy-az-egyhez kapcsolati útmutató
Ez a cikk a Power BI Desktopban dolgozó adatmodellezőkre irányul. Útmutatást nyújt az egy-az-egyhez modellkapcsolatok használatához. Egy-az-egyhez kapcsolat akkor hozható létre, ha mindkét tábla közös és egyedi értékeket tartalmazó oszlopot tartalmaz.
Feljegyzés
Ebben a cikkben nem foglalkozunk a modellkapcsolatok bemutatásával. Ha nem ismeri teljesen a kapcsolatokat, azok tulajdonságait vagy konfigurálását, javasoljuk, hogy először olvassa el a Modellkapcsolatok című cikket a Power BI Desktopban .
Az is fontos, hogy tisztában legyen a csillagséma kialakításával. További információ: A csillagséma és a Power BI fontossága.
Két forgatókönyvhöz tartoznak az egy-az-egyhez kapcsolatok:
Degenerált dimenziók: Egy degenerált dimenziót tény típusú táblából származtathat.
A soradatok táblákra terjednek ki: Egy üzleti entitás vagy tárgy két (vagy több) modelltáblaként van betöltve, esetleg azért, mert az adatok különböző adattárakból származnak. Ez a forgatókönyv gyakori lehet dimenzió típusú táblák esetében. A fő termékadatok például egy operatív értékesítési rendszerben vannak tárolva, a kiegészítő termékadatok pedig egy másik forrásban vannak tárolva.
Szokatlan azonban, hogy két tény típusú táblát egy-az-egyhez kapcsolattal kapcsol össze. Ennek az az oka, hogy mindkét tény típusú táblának azonos dimenzióval és részletességgel kell rendelkeznie. Emellett minden tény típusú táblának egyedi oszlopokra van szüksége a modellkapcsolat létrehozásához.
Dimenziók degenerálása
Ha egy tény típusú tábla oszlopai szűrésre vagy csoportosításra szolgálnak, érdemes lehet külön táblázatban elérhetővé tenni őket. Így elkülönítheti a szűréshez vagy csoportosításhoz használt oszlopokat a ténysorok összegzéséhez használt oszlopoktól. Ez az elkülönítés a következő lehet:
- Tárterület csökkentése
- Modellszámítások egyszerűsítése
- Közreműködés a jobb lekérdezési teljesítményhez
- Intuitívabb Mezők panel használata a jelentéskészítőknek
Vegyünk egy forrás értékesítési táblát, amely két oszlopban tárolja az értékesítési rendelés adatait.
Az OrderNumber oszlop tárolja a rendelésszámot, az OrderLineNumber oszlop pedig sorsorozatot tárol a sorrenden belül.
A következő modelldiagramon figyelje meg, hogy a rendelésszám és a rendeléssorszám oszlop nincs betöltve a Sales táblába. Ehelyett az értékeiket egy SalesOrderLineID nevű helyettesítő kulcsoszlop létrehozásához használták. (A kulcs értékét úgy számítjuk ki, hogy megszorozzuk a rendelésszámot 1000-gyel, majd hozzáadjuk a rendeléssorszámot.)
Az Értékesítési rendelés tábla gazdag élményt nyújt a jelentéskészítők számára három oszlopban: Értékesítési rendelés, Értékesítési rendeléssor és Sorszám. Hierarchiát is tartalmaz. Ezek a táblaerőforrások olyan jelentésterveket támogatnak, amelyeknek szűrésre, csoportosításra vagy részletezésre van szükségük a rendelések és rendeléssorok között.
Mivel a Sales Order tábla az értékesítési adatokból származik, minden táblában pontosan ugyanannyi sornak kell lennie. Ezenkívül az egyes SalesOrderLineID oszlopok között egyező értékeknek kell lenniük.
Soradatok több táblára kiterjedően
Vegyünk egy példát, amely két egy-az-egyhez kapcsolódó dimenziótípustáblát foglal magában: Termék és Termékkategória. Minden tábla importált adatokat jelöl, és egyedi értékeket tartalmazó termékváltozat (készletmegőrzési egység) oszlopot tartalmaz.
Íme egy részleges modelldiagram a két tábláról.
Az első tábla neve Product, és három oszlopot tartalmaz: Szín, Termék és termékváltozat. A második tábla neve Termékkategória, és két oszlopot tartalmaz: Kategória és termékváltozat. Az egy-az-egyhez kapcsolat a két termékváltozat-oszlopot kapcsolja össze. A kapcsolat mindkét irányban szűr, ami mindig az egy-az-egyhez kapcsolatok esetében fordul elő.
A kapcsolatszűrő propagálásának működésének leírásához a modelldiagram módosult a táblasorok megjelenítéséhez. A cikkben szereplő összes példa ezen adatokon alapul.
Feljegyzés
A Táblázatsorok nem jeleníthetők meg a Power BI Desktop modelldiagramján. Ebben a cikkben egyértelmű példákkal támogatjuk a vitát.
A két tábla soradatait a következő listajeles lista ismerteti:
- A Product tábla három sorból áll:
- TERMÉKVÁLTOZAT CL-01, Termék póló, Zöld szín
- TERMÉKVÁLTOZAT CL-02, Termék farmer, Kék szín
- Termékváltozat AC-01, termék sapka, kék szín
- A Termékkategória tábla két sorból áll:
- TERMÉKVÁLTOZAT CL-01, Kategória Ruházat
- Termékváltozat AC-01, kategória tartozékai
Figyelje meg, hogy a Termékkategória tábla nem tartalmaz sorokat a CL-02 termékváltozathoz. A hiányzó sor következményeit a cikk későbbi részében tárgyaljuk.
A Mezők panelen a jelentéskészítők két táblában találnak termékhez kapcsolódó mezőket: Termék és termékkategória.
Lássuk, mi történik, ha mindkét tábla mezői hozzáadódnak egy táblavizualizációhoz. Ebben a példában a termékváltozat oszlop a Product táblából származik.
Figyelje meg, hogy a CL-02 termékváltozat kategóriaértéke ÜRES. Ennek az az oka, hogy ehhez a termékhez nincs sor a Termékkategória táblában.
Ajánlások
Ha lehetséges, javasoljuk, hogy ne hozzon létre egy-az-egyhez modellkapcsolatokat, ha a soradatok a modelltáblákra terjednek ki. Ennek az az oka, hogy ez a kialakítás a következő lehet:
- Közreműködés a Mezők panel zsúfoltságához, a szükségesnél több táblát felsorolva
- Megnehezíti a jelentéskészítők számára a kapcsolódó mezők keresését, mert több táblában vannak elosztva
- Korlátozza a hierarchiák létrehozásának lehetőségét, mivel a szinteknek ugyanabból a táblából származó oszlopokon kell alapulniuk
- Váratlan eredményeket eredményez, ha a sorok nem egyeznek meg teljes egészében a táblák között
A konkrét javaslatok attól függően különböznek, hogy az egy-az-egyhez kapcsolat a forráscsoporton belül vagy a forráscsoporton belül van-e. A kapcsolatkiértékelésről további információt a Power BI Desktopban (Kapcsolatértékelés) található modellkapcsolatok című témakörben talál.
Egy-az-egyhez kapcsolat a forráscsoporton belül
Ha egy-az-egyhez forráscsoport közötti kapcsolat áll fenn a táblák között, javasoljuk, hogy egyesítse az adatokat egyetlen modelltáblában. Ez a Power Query-lekérdezések egyesítésével történik.
Az alábbi lépések egy módszertant mutatnak be az egy-az-egyhez kapcsolódó adatok összevonására és modellezésére:
Lekérdezések egyesítése: A két lekérdezés egyesítésekor figyelembe kell venni az egyes lekérdezések adatainak teljességét. Ha egy lekérdezés teljes sorkészletet (például főlistát) tartalmaz, egyesítse a másik lekérdezést vele. Konfigurálja az egyesítés átalakítását úgy, hogy bal oldali külső illesztést használjon, amely az alapértelmezett illesztéstípus. Ez az illesztési típus biztosítja, hogy megtartsa az első lekérdezés összes sorát, és kiegészítse őket a második lekérdezés összes egyező sorával. Bontsa ki a második lekérdezés összes szükséges oszlopát az első lekérdezésbe.
Lekérdezési terhelés letiltása: Mindenképpen tiltsa le a második lekérdezés terhelését . Így nem tölti be az eredményét modelltáblaként. Ez a konfiguráció csökkenti az adatmodell tárolóméretét, és segít a Mezők panel zsúfoltságának megszüntetésében.
A példánkban a jelentéskészítők egyetlen, Termék nevű táblát találnak a Mezők panelen. Az összes termékhez kapcsolódó mezőt tartalmazza.
Hiányzó értékek lecserélése: Ha a második lekérdezés nem egyező sorokat tartalmaz, az abból bevezetett oszlopokban nULL-ek jelennek meg. Szükség esetén fontolja meg a NULL-ek tokenértékkel való cseréjét. A hiányzó értékek cseréje különösen fontos, ha a jelentéskészítők oszlopértékek szerint szűrnek vagy csoportosítanak, mivel a BLANK-k megjelenhetnek a jelentésvizualizációkban.
A következő táblázatvizualizációban figyelje meg, hogy a CL-02 termékváltozat kategóriája most a [Nem definiált] értéket olvassa. A lekérdezésben a null kategóriák helyébe ezzel a jogkivonat szövegértékével léptek.
Hierarchiák létrehozása: Ha a most konszolidált tábla oszlopai között kapcsolatok vannak, érdemes lehet hierarchiákat létrehozni. Így a jelentéskészítők gyorsan azonosítják a jelentésvizualizációk részletezési lehetőségeit.
A példánkban a jelentéskészítők most már használhatnak olyan hierarchiát, amely két szinttel rendelkezik: Kategória és Termék.
Ha szeretné, hogy a különálló táblák hogyan segítik a mezők rendszerezését, javasoljuk, hogy egyetlen táblába összesítse őket. Továbbra is rendszerezheti a mezőket, de ehelyett megjelenítési mappákat használhat.
A példánkban a jelentéskészítők a Marketing megjelenítési mappában találják meg a Kategória mezőt.
Ha továbbra is úgy dönt, hogy a modellben egy-az-egyhez forráscsoport-kapcsolatokat határoz meg, lehetőség szerint ellenőrizze, hogy vannak-e egyező sorok a kapcsolódó táblákban. Mivel a forráscsoporton belüli egy-az-egyhez kapcsolat normál kapcsolatként van kiértékelve, az adatintegritási problémák BLANK-ként jelentkezhetnek a jelentésvizualizációkban. (Az ebben a cikkben bemutatott első táblavizualizációban egy BLANK csoportosítási példát láthat.)
Forráscsoportközi egy-az-egyhez kapcsolat
Ha egy-az-egy forráscsoport közötti kapcsolat áll fenn a táblák között, nincs alternatív modellterv – hacsak nem összesíti előre az adatforrásokban lévő adatokat. A Power BI korlátozott kapcsolatként értékeli ki az egy-az-egyhez modellt. Ezért ügyeljen arra, hogy a kapcsolódó táblákban egyező sorok legyenek, mivel a nem egyező sorok törlődnek a lekérdezés eredményeiből.
Lássuk, mi történik, ha mindkét tábla mezői hozzá vannak adva egy táblavizualizációhoz, és a táblák között korlátozott kapcsolat áll fenn.
A táblázat csak két sort jelenít meg. A CL-02 termékváltozat hiányzik, mert nincs egyező sor a Termékkategória táblában.
Kapcsolódó tartalom
A cikkhez kapcsolódó további információkért tekintse meg a következő forrásokat:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: