Bonyolult szűrőfeltételek megvalósítása PowerPivottal

Készülök a jövő heti Önkiszolgáló BI workshopra és felmerült a következő probléma:

Szeretnénk létrehozni ügyfeleinkből egy olyan csoportot, amelybe csak a jó ügyfelek tartoznak. Tegyük fel, hogy a jó ügyfél az, akinek a jövedelme > 200000 Ft, az vásárlásainak száma > 2 és szeme színe = kék

Az ilyen típusú ügyfélcsoportot a PowerPivottal háromféleképpen is létre tudjuk hozni:

  • nevesített halmazokkal (Azokat válogatjuk bele a halmazba, akik a feltételnek megfelelnek)
  • számított oszloppal (létrehozunk az oszlopalapú adatbázisban egy jó ügyfél? számított oszlopot amibe I-t írunk, ha megfelel a feltételeknek, N-et ha nem és utána szűrünk a riporton az I-sekre)
  • Importálás közben a relációs motorral kiszámítatva (Importálás előtt SQL oldalon hozzuk létre a jó ügyfél? oszlopot és a PowerPivotban csak szűrünk rá)

Mindhárom megoldás jó, de teljesítmény szempontjából (Lekérdezés teljesítménye szempontjából) nagyok a különbségek. A legjobb az „Importálás közben a relációs motorral kiszámítatva” aztán következik a „Számított oszloppal” és végül a „nevesített halmazokkal”

Sajnos a megvalósítás egyszerűsége szempontjából viszont pont fordított a sorrend. Ha a felhasználóink informatikai affinitása minimális, akkor az Excelen (Pivot tábla) keresztül a varázslóval építsük fel a nevesített halmazokat. Ha SQL-hez nem értenek de az Excelben tudják használni az (If, then, else) függvényeket, akkor számított oszlopot használjuk a PowerPivot adatbázisában. Ha pedig értenek annyira az SQL-hez, hogy meg tudjanak fogalmazni egy CASE-es lekérdezést, akkor import során számítassuk ki a szűrőfeltételeket.

Ha tehát a teljesítmény a fontos, akkor importálás előtt hozzuk létre az ügyfélcsoportot, ha az egyszerű kezelhetőség, akkor a pivot táblán keresztül hozzuk létre a nevesített halmazt.

Új hozzászólás