Számított oszlopok (Calculated Columns) Power BI-ban

Aki volt nálam Power BI workshopon az nem is hallhatott a számított oszlopokról. És ez nem véletlen. Kezdő szinten tudatosan nem oktatom. 8-10 éve még oktattam a számított oszlopokat, de azt vettem észre, hogy sokan számított mezők (measures) helyett számított oszlopokkal oldottak meg mindent. És ez baj.

Power BI Calculated Column

A számított oszlopok ugyanis nem hatékonyak. Szükséges rosszak, amit csak akkor használunk, ha az import során nem tudjuk, vagy nehezen tudjuk kiszámolni az oszlopok értékét.

A számított oszlop ugyan tömörítve van tárolva, de a tömörítés hatékonysága koránt sem olyan jó, mint az importált oszlopoké. A Tabular (A Power BI adatbáziskezelője) ugyanis a táblák rendezési sorrendjének meghatározásakor nem veszi figyelembe a számított oszlopokban tárolt értékeket.

Háttérinfó: A Tabular az import során heurisztikusan elkezdni rendezgetni az oszlopokat és közben méri, hogy melyik rendezés adja a legjobb eredményt. Ezt kb 10 másodpercig csinálja és a 10 másodperc alatt gyűjtött információk alapján hozza meg azt a döntést, hogy milyen sorrendben rendezze az oszlopokat. De ebben a döntésben nem veszek részt a számított oszlopok, így a számított oszlopok tárolása koránt sem lesz olyan hatékony, mint az importált oszlopoké.

És a számított oszlopok kiszámolásához a Tabular csak egy szálat tud használni és a számítást soronként iterálva hajtja végre. Ráadásul oszloponként iterál. Azaz, ha több számított oszlopunk is van a táblában, akkor

  1. Megfogja az első számított oszlopot
  2. Végigiterálva a teljes táblát kiszámolja az oszlop értékét, majd
  3. Megy a következő oszlopra,
  4. Végignyalja újra a teljes táblát
  5. Kiszámolja az oszlop értékét
  6. És így tovább

Ez nagy tábláknál igen költséges.

Mindezek miatt számított oszlopokat csak akkor használunk, ha

  • Ha képlet megírásához DAX kell
  • Ha a képlet kiszámításához kell valami az adatmodellből (pl másik measure)
  • Ha nem értünk a Power Query-hez, vagy a forrásrendszer lekérdező nyelvéhez

Nem főben járó bűn számított oszlopot használni, ha a tábla kicsi, a képlet egyszerű, és csak kevés számított oszlopot használunk. De a legjobb gyakorlat az, hogy nem használunk számított oszlopokat. Minden sorszintű kalkulációt a betöltés közben (Power Query-vel), vagy ha terhelhetjük a forrásrendszert, akkor forrásoldalon számolunk ki.

Kővári Attila - BI projekt

POWER BI ADATMODELL TERVEZŐ WORKSHOP

Tudjon meg többet az itt elhangzottakról! Jöjjön el a 2025. december 11.-i Power BI adatmodell tervező tanfolyamra! Részletek >>

 

TABULAR INSIDE VIDEÓKURZUS

Tudjon meg többet az itt elhangzottakról és jelentkezzen a Tabular Inside videókurzusra! Részletek >>

 

Új hozzászólás