Power Bi alapok: M nyelv alapok
A Power Query M nyelv a Power Query lekérdezőmotor saját programozási nyelve, amelyet az adatok beolvasására, transzformálására és betöltésére használunk. Az M nyelv deklaratív, funkcionális programozási nyelv, amely az Excel, a Power BI és más Microsoft adatfeldolgozási eszközök alapját képezi.
1. Az M nyelv fő jellemzői
-
Deklaratív – Az M nyelv megmondja, hogy mit szeretnénk elérni, nem pedig azt, hogyan kell végrehajtani.
-
Funkcionális – Az M nyelv erősen épít a függvényekre, amelyek egymásra épülnek.
-
Értékalapú (immutable) – A változók nem módosíthatók (csak új értéket lehet hozzárendelni egy új változóhoz).
-
Automatikus típuskezelés – Az M nyelv automatikusan érzékeli az adatok típusát, de explicit módon is megadható.
-
Együttműködés más rendszerekkel – SQL, Excel, JSON, XML, Web API, stb.
2. Az M nyelv szintaktikai elemei
Az M nyelv a két programozási blokkból, egy let ... in szerkezetből áll. (speciális szerkesztőnél jelenik meg) :
- let: az összes változó definíciója
- in: output! Igen, az valójában azt jelenti, hogy ki! Minden, amit ebbe a blokkba tesz, a lekérdezés kimenete lesz
---m
Magyarázat:
-
A
letblokkban változókat és kifejezéseket definiálunk. -
Az
inblokk határozza meg, hogy a lekérdezés végén melyik változó vagy kifejezés eredménye jelenjen meg.
3. Adattípusok
| Típus | Példa |
|---|---|
| Szám (Number) | 42, -3.14, 1.0e3 |
| Szöveg (Text) | "Hello, Power Query!" |
| Logikai (Logical) | true, false |
| Null érték (Null) | null |
| Lista (List) | {1, 2, 3, "szöveg"} |
| Rekord (Record) | [Név="Anna", Kor=30] |
| Tábla (Table) | #table({"Név", "Kor"}, {{"Anna", 30}, {"Béla", 40}}) |
| Függvény (Function) | (x) => x * 2 |
| Dátum, idő (DateTime) | #date(2025, 3, 31), #datetime(2025, 3, 31, 14, 30, 0) |
4. Fő adattárolási struktúrák
4.1 Lista ({})
A lista egy indexelt adatszerkezet, amely különböző típusú értékeket is tartalmazhat.
4.2 Rekord ([])
A rekord egy kulcs-érték párokból álló szerkezet.
4.3 Tábla (#table)
A tábla egy sorokból és oszlopokból álló adattároló.
5. Vezérlési szerkezetek
Bár az M nyelv nem támogat klasszikus ciklusokat (pl. for, while), feltételes elágazások és rekurzió használhatók.
5.1 Feltételes elágazás (if ... then ... else)
5.2 Rekurzió (függvényhívás önmagára)
6. Power Query M nyelvben elérhető műveletek
6.1 Szám műveletek
6.2 Szöveg műveletek
6.3 Dátum műveletek
7. Saját függvények létrehozása
Függvényeket az => operátorral hozunk létre.
Összegzés
🔹 A Power Query M egy funkcionális nyelv, amely erősen épít a listákra, rekordokra és táblákra.
🔹 Deklaratív módon működik, vagyis az adatmódosításokat egymásra épített kifejezésekkel valósítjuk meg.
🔹 Automatikusan kezeli az adattípusokat, de explicit módon is megadhatók.
🔹 Elérhető műveletek: számolás, szövegkezelés, dátumkezelés, adattáblák átalakítása.
A Power Query M nyelvében a literálok (konstans értékek) többféleképpen definiálhatók, és minden típusnak megvan a maga sajátos szintaxisa. Nézzük meg a legfontosabb literálokat, azok jelentését és működését példákon keresztül.
1. Szám literálok
A számokat egész vagy lebegőpontos formátumban adhatjuk meg:
📌 Megjegyzés: Power Query az angol tizedes formátumot használja, tehát a tizedeselválasztó pont (.).
2. Szöveg literálok
A szövegeket idézőjelek (" ") közé kell tenni:
📌 Fontos: A szöveges literálokat nem lehet egyszerű idézőjel (') között megadni, csak kettős idézőjelben.
3. Logikai literálok
A logikai értékek true vagy false lehetnek:
4. Null literál
A null érték egy hiányzó vagy ismeretlen értéket jelöl:
5. Lista literálok
A listák szögletes zárójelben ({}) vannak definiálva:
6. Tábla (record) literálok
A táblák kulcs-érték párok formájában vannak megadva:
7. Dátum és idő literálok
A dátumok és időpontok saját formátumot használnak:
📌 Megjegyzés: A #date, #time, és #datetime kulcsszavakat kell használni a megfelelő formázás érdekében.
8. Dátum/idő zónával (datetimezone)
A dátumot időzónával is meg lehet adni:
📌 Fontos: Az utolsó két szám az UTC eltolás (+2, 0 azaz UTC+2).
Összegzés
A Power Query literálokat a következő módon lehet megadni:
| Típus | Szintaxis példa |
|---|---|
| Egész szám | 42 |
| Lebegőpontos szám | 3.14 |
| Szöveg | "Hello, World!" |
| Logikai érték | true / false |
| Null érték | null |
| Lista | {1, 2, 3} |
| Record | [Kulcs = "Érték"] |
| Dátum | #date(2025, 3, 31) |
| Idő | #time(14, 30, 0) |
| Dátum és idő | #datetime(2025, 3, 31, 14, 30, 0) |
| Időzóna | #datetimezone(2025, 3, 31, 14, 30, 0, +2, 0) |
A változók neve
- egy szóból állhat, például a Forras
- vagy lehet benne szóköz, de akkor a nevet dupla idézőjelbe (“) kell tennie, és a kezdete mindig hashtage (#).
A kódolásnál az egysoros kommentár dupla perjellel (//) a többsoros kommentár a perjel és a kezdetek között (/* megjegyzések */)
Nagyon hasznos:

Megjegyzések
Megjegyzés küldése