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
let
blokkban változókat és kifejezéseket definiálunk. -
Az
in
blokk 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