Egy-az-egyhez kapcsolati útmutató
Ez a cikk adatmodellezőként célozza meg Önt, aki a Power BI Desktoppal dolgozik. Ú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:
: EgyDegenerált dimenziók ténytáblából származtatható egydegenerált dimenzió. Soradatok több táblára is kiterjednek: Egyetlen ü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 gyakran előfordulhat dimenziótáblák. 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énytáblát egy-az-egyhez kapcsolattal kapcsol össze. Ennek az az oka, hogy mindkét ténytáblának azonos dimenzióval és részletességgel kell rendelkeznie. Emellett minden ténytáblának egyedi oszlopokra van szüksége a modellkapcsolat létrehozásához.
Dimenziók degenerálása
Ha egy ténytáblából származó oszlopokat használ szűrésre vagy csoportosításra, é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:
- Csökkentse a tárterületet.
- Egyszerűsítse a modellszámításokat.
- Hozzájárul a jobb lekérdezési teljesítményhez.
- Intuitívabb Adat panelt biztosít a jelentéskészítőknek.
Vegyünk egy Sales
nevű forrástáblát, amely két oszlopban tárolja az értékesítési rendeléssor referenciaadatait.
A OrderNumber
oszlop tárolja a rendelésszámot, a OrderLineNumber
oszlop pedig sorsorokat tárol a sorrenden belül.
Az alábbi képen láthatja, hogy a rendelésszám és a rendeléssorszám oszlopai még nem töltődtek be a Sales
táblába. Ehelyett az értékeiket egy helyettesítő kulcs oszlop létrehozásához használták OrderLineNumberID
. (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.)
A Sales Order
dimenziótábla gazdag élményt nyújt a jelentéskészítők számára két oszlopával: Sales Order
és Sales Order Line
. Ezek az oszlopok támogatják azokat a jelentésterveket, amelyeknek szűrni, csoportosítani vagy részletezni kell a rendeléseket és a rendeléssorokat.
Mivel a Sales Order
tábla az értékesítési adatokból származik, az egyes táblákban pontosan ugyanannyi sornak kell lennie. Ezenkívül az egyes OrderLineNumberID
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áblát tartalmaz: Product
és Product Category
. Minden tábla importált adatokat jelöl, és egy SKU
(készletmegőrzési egység) oszlopot tartalmaz, amely egyedi értékeket tartalmaz.
Íme egy részleges modelldiagram a két tábláról.
Az első tábla neve Product
, és három oszlopot tartalmaz: Color
, Product
és SKU
. A második tábla neve Product Category
, és két oszlopot tartalmaz: Category
és SKU
. Az egy-az-egyhez kapcsolat a két SKU
oszlopot összekapcsolja. 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 az alábbi képen néhány táblázatsor látható. A cikkben szereplő összes példa ezen adatokon alapul.
A két tábla soradatait a következő listajeles lista ismerteti:
- A
Product
tábla három sorból áll:-
SKU
CL-01,Product
póló,Color
Zöld -
SKU
CL-02,Product
Jeans,Color
Blue -
SKU
AC-01,Product
Hat,Color
Kék
-
- A
Product Category
tábla két sorból áll:-
SKU
CL-01,Category
Ruházat -
SKU
AC-01,Category
Tartozékok
-
Figyelje meg, hogy a Product Category
tábla nem tartalmaz sort a termék SKU CL-02számára. A hiányzó sor következményeit a cikk későbbi részében tárgyaljuk.
A Adat panelen a jelentéskészítők két táblában találják meg a termékhez kapcsolódó mezőket: Product
és Product Category
. 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 SKU
oszlop a Product
táblából származik.
Figyelje meg, hogy a termékváltozat Category
értéke ÜRES. Ennek az az oka, hogy a termékhez tartozó Product Category
táblában nincs megfelelő sor.
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őt teheti:
- Járuljon hozzá az Adatpanel zsúfoltságához, és a szükségesnél több táblát soroljon fel.
- Megnehezítheti 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 teljes egyezést mutatnak 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 kapcsolatértékelésről további információt Modellkapcsolatok a Power BI Desktopbancí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. Ezt a Power Query-lekérdezések egyesítésével teheti meg.
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. Állítsa be az egyesítési átalakítást úgy, hogy egy 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 az Adatpanel zsúfoltságának megszüntetésében.
A példánkban a jelentéskészítők egyetlen
Product
nevű táblát találnak az Adatok 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, a null értékek megjelennek az abból beszúrt oszlopokban. Szükség esetén érdemes lehet lecserélni a null értékeket egy jogkivonat értékére. 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.
Az alábbi képen vegye észre, hogy a termék SKU CL-02 kategóriája most [Nem definiált]olvasható. 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.
Példánkban a jelentéskészítők most már használhatnak kétszintű hierarchiát:
Category
ésProduct
.
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 Category
mezőt a Marketing
megjelenítési mappában találják meg.
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-egyhez forráscsoportközi kapcsolat áll fenn a táblák között, nincs alternatív modellterv – hacsak nem összesíti előre az adatforrásban 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 nem jelennek meg a lekérdezési eredmények között.
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.
Az első táblázatvizualizáció, amely forráscsoportközi kapcsolatot használ, csak két sort jelenít meg. A termékváltozat CL-02 hiányzik, mert nincs egyező sor a Product Category
táblában. A második táblavizualizáció, amely a modell egyetlen összevont tábláján alapul, három sort jelenít meg.
Kapcsolódó tartalom
A cikkhez kapcsolódó további információkért tekintse meg a következő forrásokat: