Sok projekt esetében valós problémát jelent, hogy több olyan riporton is párhuzamosan kellene dolgoznia a fejlesztőknek, amelyek részben vagy teljesen ugyanazokra az adatokra épülnek. Ezekben az esetekben járható, de egyáltalán nem célszerű módja a munkának, ha ugyanazokat az adattranszformációs lépéseket többször is végrehajtva, majd ugyanazt az adatmodellt minden egyes alkalommal kialakítva kezdünk bele a riportok elkészítésébe. Egyrészt így megtöbbszörözzük ugyanazt a munkát már a fejlesztés során, ami - főleg nagyobb projektek esetében - nem elfogadható, másrészt a fejlesztés után többszörös tárhely- és időigényt jelent, hiszen ugyanazt le kell tárolnunk minden egyes riport esetében, és a frissítési idők is egyesével jelentkeznek.

Ezekben a helyzetekben jelent hatalmas előnyt, ha a közös folyamatokat egy lépésben el tudjuk intézni, majd minden riportot ebből kiindulva fejlesztünk. Ehhez a kulcs a dataflow-k és a shared dataset-ek használata!

De hogyan is néz ki ez a gyakorlatban? A jobb érthetőség kedvéért először tekintsük át, mit is jelent ez a két fogalom, és mi a szerepük egy-egy ilyen megoldás kialakításában.

A Dataflow nem más, mint egy adattranszformációs komponens, ami a felhőben fut, és független a riportoktól és azok adatmodelljeitől. Gyakorlatilag arról van szó, hogy azokat a műveleteket, amiket “normál” esetben a Power Query editorban végeznénk (ETL folyamatok), egy külön entitásra bízzuk, ami önállóan lefut az általunk meghatározott időpontokban, végrehajtja a megadott transzformációs lépéseket, és az annak eredményeként előálló -immár rendezett vagy rendezettebb - adathalmaz felhasználható a további fejlesztési lépések során, akár (és itt a lényeg!) több riport esetében is, mint önálló adatforrás!

A Dataset pedig – ha nem akarjuk a dolgokat túlbonyolítani - nem más, mint az adatkapcsolatokat, az adattáblákat, az adatot, az adattáblák közti kapcsolatokat, és a DAX kalkulációkat tároló objektumunk. Azaz ő fogja megmondani, hogy a vizualizáció során mit és hogyan tudunk majd felhasználni a vizualizációs elemek kialakításához.

Ebből már talán sejthető, hogy attól függően mi lenne a célunk, használhatjuk mindkét megoldást egyszerre, vagy akár csak az egyiket:

  • Ha csak egy közös adattranszformációs lépéssorozat elemeként létrejövő adathalmazt akarunk használni, de azt különböző adatmodellekben, vagy más kalkulációkkal, akkor elég a dataflow használata,
  • Ha viszont csak vizualizációs szinten lenne eltérés, akkor mindkettőt alkalmazva, már minden elő lesz készítve ehhez.

Lássuk, hogy néz ki ez a gyakorlatban:

Első lépésben a Dataflow-k létrehozását nézzük meg. Ehhez be kell lépnünk a Power BI Online felületére és ott kiválasztani azt a workspace-t, ahova szeretnénk létrehozni az új dataflow-t. Itt a “New” menüpont alatt találjuk majd a Dataflow opciót. Amennyiben erre kattintunk, több lehetőség is kínálkozik: tudunk már meglévő elemek (másik dataflow vagy CDM) alapján létrehozni egy újat, vagy teljesen nulláról kialakítani egyet. Most tegyük ez utóbbit:

Az így megnyíló felületen számos adatforrás közül választhatunk, ezek ugyanúgy működnek, mint a Power BI Desktop esetében az új adatforrások hozzáadása. Egy fontos különbség, hogy itt csak olyan adatforrásokat használhatunk, ami nem lokális, azaz nem a saját gépünkön van tárolva:

Miután kiválasztunk legalább egy adatforrást, megnyílik a már ismerős Power Query editor felület, ahol a desktop megoldáshoz hasonlóan tudjuk elvégezni a szükséges adattranszformációs lépéseket:

Amikor minden szükséges műveletet megcsináltunk, elmenthetjük a megoldásunkat, amivel egyúttal létrehozzuk az új Dataflow-t. (A Dataflow esetében ugyanúgy, mint bármilyen más Power BI Online-ra felöltött adatforrás esetében, meg tudunk adni előre beállított frissítési időpontokat.)

Ezt a dataflow-t ezentúl ugyanúgy tudjuk majd használni, mint bármilyen más adatforrást. Az ehhez kapcsolódó dataset létrehozása is már így történik. A Power BI Desktop-ban, mint adatforrást nyitjuk meg a dataflow-t, amiből ki tudjuk választani a szükséges adattáblákat:

A betöltött adatokból kit tudjuk alakítani az adatmodellt, létrehozhatjuk a szükséges kalkulációkat, mintha csak a szokásos riportfejlesztési lépéseket végeznénk el. Gyakorlatilag ezek fogják képezni azt a dataset-et, amit majd meg szeretnénk osztani több riportunk között is. Ehhez a dataflow-hoz kapcsolódó, és a kész dataset-et tartalmazó “riportot” először feltöltjük a Power BI Online-ra. Miután ez megtörtént, ezt a dataset-et szintén elérjük majd adatforrásként más riportjainkhoz is, és azokban is ki tudunk alakítani egy-egy riportot az immár közös adattranszformációra, adatmodellre és kalkulációkra alapozva!

Ha minden jól megy, és több riportot is sikerül létrehozni ebből a dataset-ből, végül a workspace-ben azt fogjuk látni, hogy a megosztott dataset-re és közös dataflow-ra épülő riportjaink valóban ugyanazokat az entitásokat használják. Így a továbbiakban elég lesz minden, az ezekhez kapcsolódó adattranszformációt és adatmodell módosítást csak egyszer végrehajtani, illetve frissítés esetén is csak egy alkalom lesz az egész ahelyett, hogy riportonként kellene végrehajtódnia ennek a folyamatnak.

Azt hiszem, ez a példa is elég egyértelműen mutatja, hogy mekkora előny lehet ez a megoldás egy olyan környezetben, ahol több olyan riporton kellene párhuzamosan dolgozni, amelyek ugyanarra az adathalmazra épülnek. Természetesen, hogy mindez a lehető leghatékonyabb legyen, érdemes először jól átgondolni és csak utána definiálni a szükséges adatok körét, illetve az azokból kialakítandó adatmodellt és kalkulációkat.

De ne legyünk restek erre rászánni az időt, mert ez sokszorosan meg fog térülni a későbbiekben!