Ugrás a fő tartalomra

Power BI alapok : PBIX fájl szerkezete, optimalizálás

Power BI alapok :  PBIX fájl szerkezete


A PBIX fájl a Power BI Desktop fájlformátuma, amely tartalmazza az adatokat, lekérdezéseket, modellezést és vizualizációkat. Lényegében ez a Power BI jelentések forrásfájlja.

🔹 PBIX fájl szerkezete

A PBIX fájl tömörített ZIP archívum, amely több különböző struktúrájú fájlt és mappát tartalmaz. Ha átnevezed a .pbix kiterjesztést .zip-re, kibonthatod a tartalmát és elemezheted.

🔹 Főbb komponensek a PBIX fájlban

ElemTípusJelentés
Report/LayoutJSONA jelentés vizuális elrendezése, diagramok, színek
DataModelAdatbázis (VertiPaq)Az adatok tömörített, oszlopalapú tárolása
QueriesM kód (Power Query)Az adatok lekérdezése, transzformációi
MetadataJSONA modell metaadatai (pl. kapcsolatokat, oszlopok típusait tárolja)
DiagramStateJSONA jelentésben lévő diagramok állapota
SecurityBindingsJSONBiztonsági beállítások (RLS, DAX filterek)

🔹 PBIX fájl szerkezeti elemeinek részletes elemzése

1️⃣ Report/Layout – A vizuális elrendezés

Ez a JSON fájl tartalmazza a jelentésoldalak struktúráját, vizualizációkat és beállításokat.

📌 Példa egy egyszerű vizuális JSON kódrészletre:

---json

{ "visualContainers": [ { "config": { "name": "SalesChart", "type": "barChart", "position": { "x": 10, "y": 10, "width": 400, "height": 300 } } } ] }

🔹 Mit jelent?

  • Van egy oszlopdiagramunk ("barChart").

  • Pozíciója: (10,10) koordinátán kezdődik.

  • Méret: 400x300 pixel.


2️⃣ DataModel – Az adatok tárolása

A PBIX fájl tartalmaz egy oszlopalapú (VertiPaq) tömörített adatbázist, amelyet Power BI használ a gyors lekérdezésekhez.

🔹 Mit érdemes tudni a DataModel-ről?

  • Memóriában történő számítás: Oszlop-alapú tárolás, amely optimalizálja az adatok betöltését és lekérdezését.

  • Tábla- és relációkezelés: Tartalmazza a kapcsolatokat és indexeket.

  • DAX számítások: Az előre definiált metrikák és mértékek itt tárolódnak.

📌 Hogyan lehet ezt elemezni?

  • Ha kinyitod egy PBIX fájlt, a DataModel tömörített .dat formátumban van.

  • DAX Studio vagy VertiPaq Analyzer segítségével vizsgálhatod az adatmodellt.


3️⃣ Queries – Power Query lekérdezések

Ez a rész tartalmazza a Power Query M nyelvű kódjait, amelyek adatforrásokat csatlakoztatnak és transzformálnak.

📌 Példa egy egyszerű lekérdezésre:

---m

let Adatok = Excel.Workbook(File.Contents("C:\Data\Sales.xlsx")), Tabla = Adatok{[Item="SalesData", Kind="Table"]}[Data] in Tabla

🔹 Mit csinál ez a kód?

  1. Excel fájl beolvasása

  2. Kikeresi a "SalesData" táblát

  3. Eredményként visszaadja az adatokat


4️⃣ Metadata – Metaadatok és modell információk

Ez a JSON tartalmazza a következőket:

  • Táblák és oszlopok nevei, típusai

  • DAX mértékek és számított oszlopok

  • Relációk és kulcsok

📌 Példa egy metaadat bejegyzésre:

---json

{ "tables": [ { "name": "Sales", "columns": [ { "name": "ProductID", "dataType": "Int64" }, { "name": "SalesAmount", "dataType": "Double" } ] } ] }

🔹 Mit jelent?

  • Van egy "Sales" nevű tábla.

  • Két oszlopa van: "ProductID" (egész szám) és "SalesAmount" (lebegőpontos szám).


5️⃣ SecurityBindings – Biztonsági beállítások

Ez a JSON tárolja a Row-Level Security (RLS) szabályokat és felhasználói jogosultságokat.

📌 Példa egy egyszerű RLS beállításra:

---json

{ "roles": [ { "name": "RegionManager", "filters": [ { "table": "Sales", "column": "Region", "filter": "UserPrincipalName() = [ManagerEmail]" } ] } ] }

🔹 Mit jelent?

  • Van egy RegionManager szerepkör.

  • A "Sales" tábla Region oszlopában csak azokat az adatokat látja a felhasználó, amely a saját e-mail címével egyezik.


🔹 PBIX fájl kibontása és elemzése

Ha meg akarod nézni a PBIX fájl belsejét, kövesd az alábbi lépéseket:

1️⃣ Nevezd át a .pbix fájlt .zip-re

📌 Példa:

---python

Report.pbix → Report.zip

2️⃣ Csomagold ki a fájlt

Használhatsz WinRAR-t, 7-Zip-et vagy a Windows beépített kibontó eszközét.

3️⃣ Vizsgáld meg az egyes fájlokat

  • Report/Layout.json – Vizuális elrendezés

  • Metadata.json – Modell metaadatai

  • DataModel.dat – Az adatok és számítások

Ha mélyebben szeretnéd elemezni az adatmodellt, használd a DAX Studio eszközt.


🔹 Összegzés

PBIX komponensMit tartalmaz?
Report/LayoutA jelentés vizuális elrendezése
DataModelAz adatok oszlop-alapú tárolása (VertiPaq)
QueriesPower Query lekérdezések és transzformációk
MetadataTábla- és oszlopdefiníciók, DAX mértékek
DiagramStateA vizuális diagramok állapota
SecurityBindingsRLS és felhasználói jogosultságok

A PBIX fájl felépítésének megértése lehetővé teszi jelentések finomhangolását, adatok optimalizálását és egyéni fejlesztések elvégzését.




 PBIX fájl optimalizálása


PBIX fájl optimalizálása és testreszabása kulcsfontosságú lehet, ha nagy mennyiségű adatot kezelsz, vagy ha gyorsabb betöltési és frissítési időket szeretnél elérni. 

Az optimalizáció fő célja az adatok, a lekérdezések és a jelentések gyorsítása, valamint a fájlméret csökkentése.

1️⃣ DataModel méretének csökkentése (VertiPaq optimalizálás)

A DataModel.dat fájl tartalmazza az összes adatot oszlop-alapú tömörítéssel (VertiPaq engine). Ha a PBIX fájl túl nagy, az alábbi módszerekkel optimalizálhatod:

📌 a) Nem használt oszlopok eltávolítása

Sok esetben az adatforrásból felesleges oszlopokat importálunk. Ha nincs rájuk szükség, távolítsd el őket Power Query-ben:

---m

let AdatForras = Sql.Database("SzerverNev", "AdatbazisNev"), Tabla = AdatForras{[Schema="dbo", Item="Sales"]}[Data], HasznosAdatok = Table.SelectColumns(Tabla, {"Date", "ProductID", "SalesAmount"}) in HasznosAdatok

🔹 Hatás: Csökken az adatmodell mérete és gyorsabb lesz a feldolgozás.


📌 b) Adatok aggregálása (csökkentett részletesség)

Ha nem kell minden egyes tranzakció, csak összesített adatokra van szükség, akkor használd az aggregációt:

---m

let AdatForras = Sql.Database("SzerverNev", "AdatbazisNev"), Tabla = AdatForras{[Schema="dbo", Item="Sales"]}[Data], Osszesitett = Table.Group(Tabla, {"Date", "ProductID"}, {{"TotalSales", each List.Sum([SalesAmount]), type number}}) in Osszesitett

🔹 Hatás: Kevesebb sor tárolódik, csökken az adatmennyiség.


📌 c) Oszloptípusok optimalizálása

A szöveges (String) oszlopok nagy helyet foglalnak, ezért érdemes őket kategorizált számokká alakítani.

📌 Jó példa:

  • Ha van egy "ProductName" oszlopod (szöveg), hozz létre egy külön DimProduct táblát és használj ProductID-t kulcsként.

🔹 Hatás: Jobb tömörítés és gyorsabb lekérdezések.


2️⃣ DAX és számított oszlopok optimalizálása

A DAX számított oszlopok (Calculated Columns) sok memóriát használhatnak, ezért ha lehet, váltsunk át mértékekre (Measures).

📌 Példa: Számított oszlop helyett mérték (Measure)

❌ Rossz (Calculated Column)

---DAX

TotalCost = Sales[Quantity] * Sales[UnitPrice]

🔹 Miért rossz?

  • Minden sorhoz létrehoz egy új oszlopot az adatmodellben → nagyobb memóriahasználat.

✅ Jó (Measure)

---DAX

TotalCost = SUMX(Sales, Sales[Quantity] * Sales[UnitPrice])

🔹 Miért jobb?

  • Csak a lekérdezés végrehajtásakor számítódik ki → nincs felesleges memóriahasználat.


3️⃣ Query optimalizálás – M kód teljesítmény javítása

Ha Power Query-ben lassú a feldolgozás, a következő technikákat érdemes alkalmazni:

📌 a) Lépcsők minimalizálása

Kerüld a felesleges lépéseket, például ne alakítsd át az adatokat többször.

📌 Példa:

---m

let Forras = Excel.Workbook(File.Contents("C:\Data\Sales.xlsx")), Tabla = Forras{[Item="SalesData", Kind="Table"]}[Data], Osszesitett = Table.Group(Tabla, {"Product"}, {{"TotalSales", each List.Sum([SalesAmount]), type number}}) in Osszesitett

🔹 Hatás: Kevesebb lépés → gyorsabb végrehajtás.


📌 b) Bufferezés használata (Table.Buffer)

Ha egy táblát többször használunk, akkor Table.Buffer segíthet.

📌 Példa:

---m

let Adatok = Table.Buffer(SourceTable) in Table.SelectRows(Adatok, each [Region] = "Europe")

🔹 Hatás: Gyorsabb szűrés, mert az adatokat memóriában tárolja.


4️⃣ PBIX fájl szerkesztése manuálisan

Ha átnevezed a PBIX fájlt ZIP-re, akkor manuálisan is módosíthatod a jelentést.

📌 Lépések:

  1. Nevezd át a .pbix fájlt .zip-re.

  2. Bontsd ki a fájlt (WinRAR vagy 7-Zip segítségével).

  3. Módosítsd a JSON fájlokat (például Report/Layout.json-t).

  4. Tömörítsd vissza ZIP formátumba.

  5. Nevezd vissza .pbix-re.


🔹 PBIX optimalizálás összefoglalása

Optimalizálási területMegoldás
DataModel csökkentéseFelesleges oszlopok törlése, aggregálás
Számított oszlopok optimalizálásaDAX oszlopok helyett mértékek
Power Query gyorsításaLépcsők csökkentése, Table.Buffer használata
Manuális szerkesztésPBIX fájl kinyitása ZIP-ként, JSON módosítás




PBIX automatizálás PBI-Tools segítségével


A PBI-Tools egy nyílt forráskódú eszköz a Power BI fejlesztésének és automatizálásának támogatására. Fő célja a PBIX fájlok verziókezelése, szerkesztése és automatizált telepítése.

Ha Power BI fejlesztőként szeretnéd automatizálni a PBIX fájl kezelését, verziókezelését, vagy CI/CD folyamatba integrálni, akkor a PBI-Tools egy hasznos megoldás.



🔹 Mire használható a PBI-Tools?

A PBI-Tools lehetővé teszi a PBIX fájlok kicsomagolását, szerkesztését és újraépítését a következő célokra:

FunkcióLeírás
PBIX fájlok verziókezelése (Git, Azure DevOps)A PBIX fájlt szöveges JSON formátumba alakítja, hogy könnyen verziókövethető legyen
Automatikus telepítés (CI/CD)A PBIX fájlokat scriptelve lehet módosítani és telepíteni különböző környezetekbe
Power BI Desktop nélküli szerkesztésPower BI nélkül módosítható a riportok felépítése
PBIX fájl kinyerése (Extract)A PBIX fájl szétszedhető külön JSON és adatmodell fájlokra
PBIX fájl újraépítése (Restore)A szétbontott fájlokból újra létrehozható a PBIX


🔹 Hogyan működik a PBI-Tools?

A PBI-Tools a parancssorból (CLI) vagy PowerShellből futtatható. Az alábbi fő funkciókat biztosítja:

1️⃣ PBIX fájl kinyerése (Extract)

Ezzel a paranccsal szétszedheted a PBIX fájlt külön fájlokra:

---powershell

pbi-tools extract "C:\PowerBI\SalesReport.pbix" --output "C:\PowerBI\Extracted"

🔹 Eredmény:

  • A PBIX fájl tartalma JSON és más formátumú fájlokként kinyerésre kerül:

    • Report/Layout.json (jelentés elrendezése)

    • Report/Connections.json (adatforrás kapcsolatok)

    • DataModel.bim (adatmodell)

    • Settings.json (Power BI beállítások)


2️⃣ PBIX fájl újraépítése (Restore)

A szétbontott fájlokból újra létrehozható a PBIX fájl:

--- powershell

pbi-tools restore "C:\PowerBI\Extracted" --output "C:\PowerBI\RebuiltReport.pbix"

🔹 Hasznos, ha verziókezelésből szeretnéd újraépíteni a PBIX fájlt.


3️⃣ PBIX fájl módosítása scriptelve

Mivel a PBIX fájl JSON fájlokra van bontva, manuálisan vagy scriptelve módosítható.

📌 Példa: Jelentés elrendezés módosítása JSON-ben
A Report/Layout.json fájl szerkesztésével módosíthatod a vizualizációk elhelyezését.

🔹 Példa: "SalesChart" vizualizáció helyének módosítása

---json

{ "visualContainers": [ { "name": "SalesChart", "x": 100, "y": 200, "width": 500, "height": 300 } ] }

Majd a módosított fájlokat restore paranccsal visszaépítheted PBIX-be.


4️⃣ Verziókezelés (Git, Azure DevOps)

A PBIX fájlok hagyományosan binárisak, így nem lehet verziókövetni őket. A PBI-Tools lehetővé teszi a JSON és BIM fájlok Git verziókezelését.

📌 Lépések:

  1. PBIX szétszedése (extract)

  2. JSON fájlok Git tárolóba helyezése

  3. Módosítások követése Git-ben

  4. PBIX újraépítése (restore) ha szükséges

🔹 Előnyök:
✅ Könnyen összehasonlítható változások
✅ Kód review-k támogatása
✅ Automatizált CI/CD pipeline integráció


5️⃣ Automatizált telepítés (CI/CD pipeline)

A Power BI riportokat automatizáltan telepítheted fejlesztői, teszt és éles környezetbe.

📌 Példa Azure DevOps pipeline-ban

---yaml

- task: PowerShell@2 inputs: targetType: 'inline' script: | pbi-tools extract "$(Build.SourcesDirectory)\SalesReport.pbix" --output "$(Build.ArtifactStagingDirectory)\Extracted" pbi-tools restore "$(Build.ArtifactStagingDirectory)\Extracted" --output "$(Build.ArtifactStagingDirectory)\SalesReport_Rebuilt.pbix"

🔹 Hasznos:

  • Automatikusan generálható PBIX fájlok módosított JSON fájlokból

  • CI/CD folyamatba építhető


🔹 Összegzés

FunkcióHasználat
PBIX ExtractPBIX fájl kinyerése JSON, BIM és egyéb fájlokként
PBIX RestoreJSON és BIM fájlokból új PBIX létrehozása
VerziókezelésPBIX módosítások Git/Azure DevOps segítségével
CI/CD automatizációPower BI telepítés fejlesztői/éles környezetbe
Power BI szerkesztése kód nélkülLayout és adatmodell módosítása JSON-ben

🔹 Kinek érdemes használnia?

Power BI fejlesztőknek, akik szeretnék verziókezelni a PBIX fájlokat
DevOps mérnököknek, akik Power BI jelentéseket telepítenek CI/CD pipeline-ban
Nagyvállalati BI csapatoknak, ahol szabályozott fejlesztési folyamatok kellenek


🔹 Te is szeretnéd kipróbálni?

📌 Töltsd le a PBI-Tools CLI-t:
🔗 GitHub – PBI-Tools


 

Link:

https://pbi.tools/tutorials/getting-started-cli.html

https://pbi.tools/tutorials/getting-started-cli.html

https://medium.com/microsoft-power-bi/automate-pbix-using-pbi-tools-ffa062df1443






Megjegyzések