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.

Table rows for a sales table.

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.)

A model diagram contains two tables: Sales and Sales Order. A one-to-one relationship relates the SalesOrderLineID columns.

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.

A model diagram contains two tables. The design is described in the following paragraph.

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.

The model diagram now reveals the table rows. The row details are described in the following paragraph.

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.

The Fields pane shows both tables expanded, and the columns are listed as fields with Product and Product category called out.

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.

A table visual includes four columns: SKU, Product, Color, and Category. The Category value for product SKU CL-02 is BLANK.

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:

  1. 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.

  2. 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.

    The Fields pane shows both tables expanded, and the columns are listed as fields with Product called out.

  3. 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.

    A table visual includes four columns: SKU, Product, Color, and Category. The Category value for product SKU CL-02 is now labeled

  4. 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.

    The Fields pane shows both tables expanded, and the columns are listed as fields with Products called out.

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.

The Fields pane shows the Category field within a display folder named Marketing.

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 table visual includes four columns: SKU, Product, Color, and Category. The table has two rows only.

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.

A cikkhez kapcsolódó további információkért tekintse meg a következő forrásokat: