Szerepjátszó dimenziók a Power BI-ban

Szerepjátszó dimenzióknak nevezzük azokat a dimenziókat (táblákat) amelyek ugyanazzal az adattartalommal más-más szerepet töltenek be egy adatmodellben. 
 
Tipikus példa szerepjátszó dimenzióra a dátum dimenzió: Ugyanaz a dátum tábla szerepelhet az adatmodellben, mint teljesítés dátuma, számlázás dátuma, szállítás dátuma, stb. Ezek a táblák a nevükön kívül mindenben azonosak. 
 
A szerepjátszó dimenziók arra lettek kitalálva, hogy csak egyszer kelljen tárolni a dimenziót - esetünkben a dátum táblát - és minden más szerepét a táblának, csak virtuálisan kelljen létrehozni, ne kelljen többször is letárolni az adatbázisban. Na ez utóbbi az, amit a Power BI nem tud.
 
Illetve pontosítok. Tudja a Power BI is, csak nem úgy, ahogy a relációs adattárház világában megszoktuk. Ott ugyanis lehetőségünk van arra, hogy a view-kal létrehozzuk a szerepjátszó dimenziókat és minden view-ban saját nevet adjunk az oszlopoknak (pl rendelés dátuma, számlázás dátuma, kiszállítás dátuma). Na ez utóbbit nem tudja a Power BI. Ezt csak úgy tudjuk elérni, hogy :
  • Beimportáljuk újra a dátum táblát más néven
  • Calculated táblát hozunk létre a Dátum tábla alapján:
Calculated Table Power BI-ban
Calculated Table (Számított táblázat) létrehozása Power BI-ban
 
Bár a neve alapján azt gondolhatnánk, hogy a Calculated Table nem kerül letárolásra, de ez nem igaz. A Calculated Table pont úgy tárolódik, mint egy kutya közönséges tábla. (Azaz nem olyan, mint a fenti relációs adattárházas példánál a nézetek)  
 
Miért baj, hogy letárolódik? A dátum tábla esetén nem baj. Egy párezer soros tábla többszöri tárolásának nincs nagy költsége. De képzeljen egy olyan adatbázist, ahol hívásokat elemzünk és ugyanaz az ügyfél lehet a hívó és a hívott oldalon is. Kétszer letárolni egy többmillió soros ügyféltörzset csak azért, mert több szerepe lehet ugyanannak az ügyfélnek már lehet fájó. 
 
Összefoglalva: Ha ugyanaz a tábla több szerepben is meg kell hogy jelenjen az adatmodellben és azt szeretnénk, hogy minden szerepjátszó dimenziótábla oszlopai utaljanak a szerep nevére (rendelés dátuma, számlázás dátuma, ...) akkor azokat többször is le kell tárolnunk.

Kővári Attila - BI projekt

Új hozzászólás