Power BI és solplanet JSON forrás adatok feldolgozása
JSON file feldolgozás rész megoldás
Forrás értelmezés feszülség napló érték kinyeréséhez
A cél az, hogy ezt az adatstruktúrát átalakítsuk egy Power Query kompatibilis táblává, ahol az oszlopok:
Idő (az "x" lista értékei)
Feszültség 1 (az "y" lista első eleme minden időponthoz)
Feszültség 2 (az "y" lista második eleme minden időponthoz)
Javasolt Power Query M kód
--- m
// JSON fájl beolvasása
Source = Json.Document(File.Contents("C:\Users\User\Downloads\json\20250227.json")),
// "vpv" objektum kinyerése
vpvData = Source[result][data][vpv],
// "x" és "y" listák kinyerése
TimeList = vpvData[x],
VoltageList = vpvData[y],
// Idő és feszültség táblává alakítása
DataTable = Table.FromColumns({TimeList, VoltageList}, {"Time", "Voltage"}),
// "Voltage" listák külön oszlopokba bontása
ExpandedTable = Table.ExpandListColumn(DataTable, "Voltage"),
FinalTable = Table.FromRecords(
List.Transform(ExpandedTable[Time], (t) =>
[ Time = t, Voltage1 = VoltageList{List.PositionOf(TimeList, t)}{0}, Voltage2 = VoltageList{List.PositionOf(TimeList, t)}{1} ]
)
)
in
FinalTable
Kód értelmezése
JSON beolvasása a fájlból (
Json.Document(File.Contents(...))
).-
A
"vpv"
objektum elérése aresult -> data -> vpv
útvonalon. -
Az
"x"
lista kinyerése (időpontok 5 perces lépésekkel). -
A
"y"
lista kinyerése (feszültségértékek). -
Táblázattá alakítás az időpontok és feszültségek felhasználásával.
-
A
"y"
értékek két külön oszlopba bontása (Voltage1
,Voltage2
).
Ez a Power Query kód létrehoz egy jól használható táblázatot, amely az időpontokat és a hozzájuk tartozó két feszültségértéket tartalmazza.
JSON file feldolgozás teljes megoldás
A Power Query-ban a JSON fájl betöltéséhez és a kért adatkörök (feszültség - "v", áramerősség - "a", teljesítmény - "kwh") táblázatba rendezéséhez az alábbi lépéseket és kódot használhatod. Az általad megadott JSON struktúra alapján a releváns adatkörök a következők lehetnek:
- Feszültség (v): vpv (DC feszültség) és vac (AC feszültség)
- Áramerősség (a): ipv (DC áram) és iac (AC áram)
- Teljesítmény (kwh): pac (AC teljesítmény) és pdc (DC teljesítmény)
Az alábbiakban bemutatom, hogyan tudod ezt a Power Query-ban megvalósítani. A kódot lépésről lépésre írom le, és a végén egy összefoglaló M kódot is adok.
Lépések a Power Query-ban:
- JSON fájl betöltése:
- Nyisd meg a Power Query-t (Power BI vagy Excel).
- Válaszd a "Get Data" > "From JSON" opciót, majd töltsd fel a JSON fájlt.
- JSON struktúra kibontása:
- A Power Query automatikusan felismeri a JSON-t, és egy rekordként jeleníti meg. Kattints a "Record" melletti nyílra a kibontáshoz.
- Navigálj a result.data útvonalra, ahol az adatkörök találhatók.
- Adatkörök kiválasztása és táblázattá alakítás:
- Az adatkörök (vpv, ipv, vac, iac, pac, pdc) mindegyike egy időbélyeggel (x) és értékekkel (y) rendelkezik. Ezeket külön-külön táblázattá kell alakítani, majd egyesíteni.
- Táblázatok egyesítése:
- Az időbélyegek (x) azonosak minden adatkörnél, így ezek alapján összeilleszthetők az adatok egy közös táblázatba.
M kód a Power Query-hoz:
Az alábbi M kód betölti a JSON-t, kibontja a releváns adatköröket, és egy táblázatot készít a feszültség, áramerősség és teljesítmény adatokkal.
Lépések a Power BI Power Query-ben való használathoz
- JSON fájl importálása:
- Nyisd meg a Power BI Desktopot.
- Menj a "Get Data" > "JSON" menüpontra, és válaszd ki a JSON fájlt, vagy illeszd be a JSON tartalmát egy üres lekérdezésbe.
- Miután betöltötted, kattints a "Transform Data" gombra a Power Query Szerkesztő megnyitásához.
- Forrás cseréje:
- A fenti szkriptben cseréld a YourJsonSource-t a kezdeti forráslépés nevére (pl. Forrás, ha így nevezi el a Power Query a JSON importálása után).
- Szkript alkalmazása:
- A Power Query Szerkesztőben menj az "Advanced Editor"-hoz, és illeszd be a szkriptet.
- Módosítsd az utolsó in záradékot arra a táblára, amelyet vissza szeretnél adni (pl. VpvTábla, VacTábla, IpvTábla stb.), vagy kombináld őket, ha szükséges.
- Táblák betöltése:
- Kattints a "Close & Apply" gombra a táblák Power BI-ba való betöltéséhez. Minden tábla külön lekérdezésként jelenik meg az adatmodellben.
A táblák magyarázata
- VpvTábla: Fotovoltaikus feszültséget (vpv) tartalmaz két tömbbel (Vpv1 és Vpv2) voltban (V).
- VacTábla: Váltakozó áramú feszültséget (vac) tartalmaz három tömbbel (Vac1, Vac2, Vac3) voltban (V).
- IpvTábla: Fotovoltaikus áramerősséget (ipv) tartalmaz két tömbbel (Ipv1 és Ipv2) amperben (A).
- IacTábla: Váltakozó áramú áramerősséget (iac) tartalmaz három tömbbel (Iac1, Iac2, Iac3) amperben (A).
- PacTábla: Váltakozó áramú teljesítményt (pac) tartalmaz egy tömbbel kilowattban (kW).
- PdcTábla: Egyenáramú teljesítményt (pdc) tartalmaz két tömbbel (Pdc1 és Pdc2) kilowattban (kW).
Megjegyzések
- Az x értékek (idő) minden adatkészletnél azonosak, így minden tábla ugyanazt az időoszlopot használja.
- Ha az összes adatot egyetlen táblába szeretnéd egyesíteni, használhatod a Table.Join vagy Table.AddColumn függvényeket a Power Query-ben az "Idő" oszlop alapján történő egyesítéshez.
- Ha csak bizonyos táblákra van szükséged (pl. csak feszültségre vagy teljesítményre), módosítsd az in záradékot, hogy csak azokat adja vissza.
Használat:
- Másold be ezt a kódot a Power Query "Advanced Editor"-jébe.
- Alkalmazd a lekérdezést, és az adatok betöltődnek a táblázatba.
Megjegyzések
Megjegyzés küldése