Személyek modellezése Power BI-ban

Tegyük fel, hogy el kell készítenünk egy olyan riportot, amely megmutatja, hogy egy dolgozó hány órát dolgozott a héten. A riport alatti tábla tartalma a következő:

Ha erre a táblára kiteszünk egy mátrixot, akkor a Power BI az azonos nevű dolgozókat összevonja, óráikat összeadja. Mutatom:

Csakhogy mi külön szeretnénk látni őket. Valahogy így:

Hogy tudjuk ezt megvalósítani? Sajnos Power BI Desktopban sehogy. A Power BI Tabular adatbázis kezelője ad erre megoldást, csak az ehhez szükséges tulajdonság nincs kivezetve a Power BI Desktop felületére. Azaz színtisztán Power BI Desktopban nem találunk megoldást a problémára, de az ingyenes Tabular Editorral meg tudjuk oldani a problémát.

Mielőtt rátérnénk a megoldás tárgyalására, szét kell választanunk a problémát két alproblémára:

  1. A dolgozó egyedi a táblában (pl. dolgozótörzs, vagy dolgozó dimenzió tábla)
  2. a dolgozó nem egyedi a táblában
    • a dolgozó csak egy attribútuma egy másik dimenziónak, pl. szerződés, projekt, ügy, … vagy
    • a dolgozó csak egy degenerált dimenzió valamelyik ténytáblában. Pl. mondjuk egy timesheet-en, amelynek van dátum, dolgozó és egy óra oszlopa

Mi a továbbiakban csak azzal az esettel foglalkozunk, amikor a dolgozó egyedi a táblában, azaz egy dolgozó csak egyszer szerepel a táblában.

Ahhoz, hogy a két Kovács Lászlót két külön soron lássuk, a következőt kell tennünk:

  1. Power BI Desktop-ban a dolgozó tábla Key Column tulajdonságánál meg kell adni a dolgozó kódját, azaz be kell állítani, hogy a dolgozó tábla kulcsa a dolgozó azonosítója (dolgozó kód) legyen
  2. Tabular Editor-ban át kell billenteni a Dolgozó név oszlop Keep Unique Rows tulajdonságát true-re

Key Column tulajdonság beállítása

Minden egyes táblának van egy Power BI Desktopban is állítható Key Column tulajdonsága, amellyel megmondhatjuk a Power BI adatbázis kezelőjének, hogy a táblának melyik oszlop egyedi, azaz melyik oszlop azonosít egyértelműen egy sort.

Nagyon keveset tudunk erről a Key Column tulajdonságról. Anno sokat keresgéltem, hogy mi célt szolgál, mire lehet hatással, de nem sok mindent találtam. De azt tudjuk, hogy ha egy oszlop Key Column tulajdonságát átállítjuk true-ra, akkor a Power BI olyan lekérdezést fog generálni a vizualizációk feltöltésekor amely erre a Key Column oszlopra aggregál. Azaz a dolgozókat kódjuk alapján fogja lekérdezni, és nem fogja összevonni az azonos nevű dolgozókat. De ehhez még meg kell adnunk azt is, hogy melyik oszlopokat aggregálja a Key Column alapján…

Keep Unique Rows tulajdonság beállítása

A célt csak akkor fogjuk elérni, ha a dolgozó név oszlop Keep Unique Row tulajdonságát átállítjuk true-ra.  Ennek hatására a Power BI a dolgozókat nem nevük, hanem kódjuk alapján fogja azonosítani, és amikor egy vizualizáció lekérdezi a dolgozó nevét, akkor a válaszban a Tabular mindig vissza fogja adni a kódot is, azaz név helyett kóddal fogja azonosítani a dolgozót.

Igen ám, de a Keep Unique Rows tulajdonság beállítását nem lehet Power BI Desktopból elvégezni… Ehhez kell a Tabular Editor. A Tabular Editor ugyanis látja a Keep Unique Rows tulajdonságot, azt át is tudja állítani, és átállítva vissza tudja menteni a Power BI desktoppal készített *.pbix fájlba:

Ha tehát a Dolgozó név oszlop Keep Unique Rows tulajdonságát igazra állítjuk, akkor a Power BI mindig olyan DAX lekérdezést fog generálni ami a háttérben visszaadja a dolgozó neve mellet kódját is. Megjeleníteni csak a nevet fogja, de belül a kóddal azonosítja a személyt:

Összefoglalva, ha azt szeretnénk, hogy a dolgozó kódja szerint aggregáljon a Power BI, és a dolgozó nevét csak megjelenítéskor használja, akkor:

  1. Power BI Desktop-ban a dolgozót tartalmazó tábla Key Column tulajdonságánál meg kell adni a dolgozó kódját, azaz be kell állítani, hogy a dolgozó kódja legyen a Key Column a táblában
  2. És Tabular Editor-ban át kell billenteni a Dolgozó név oszlop Keep Unique Rows tulajdonságát true-re

Érdemes használni ezt a technikát minden név oszlopnál, legyen az értékesítő, operátor, ügyintéző, projektvezető, vagy bármi, ami mögött személy áll. (vagy bármilyen olyan entitásnál, aminek nevéhez több kód is tartozik) Lehet, hogy most csak egy Kovács László van a szervezetnél, de bármikor jöhet még egy, és a Power BI szó nélkül összevonja majd őket. Hibaüzenet nem lesz, csak egy nagyon jól teljesítő Kovács László…

Ugyanakkor azzal is érdemes tisztában lenni, hogy mindezt hogyan valósítja meg a Power BI a háttérben, és hogy ennek következtében milyen nem várt pofonokat kaphatunk... Erről szól a cikk folytatása, amely itt érhető el: Személyek modellezése Power BI-ban (2. rész)

Kővári Attila - BI projekt

POWER BI WORKSHOP

Tudjon meg többet az itt elhangzottakról! Jöjjön el a 2023. október 18.-i Power BI workshopra vagy rendeljen kihelyezett képzést! Részletek >>

 

Új hozzászólás