A Power Query M-függvények ismertetése
A Power Query M képletnyelvében a függvény egy bemeneti értékkészletből egyetlen kimeneti értékre való leképezés. A függvényt először a függvényparaméterek elnevezésével, majd a függvény eredményének kiszámításához adja meg. A függvény törzse a goes-to (=>) szimbólumot követi. Opcionálisan a paraméterek és a függvény visszatérési értéke is megadható a típusadatok között. A függvények definiálása és meghívása egy let utasítás törzsében történik. A paraméterek és/vagy a visszatérési érték implicit vagy explicit lehet. Az implicit paraméterek és/vagy visszatérési értékek bármilyen típusúak. Bármely típus hasonló más nyelvek objektumtípusához. Az M összes típusa bármelyik típusból származik.
A függvények olyan értékek, mint egy szám vagy egy szöveges érték, és ugyanúgy belefoglalhatók a sorba, mint bármely más kifejezés. Az alábbi példa egy függvényt mutat be, amely egy Add változó értéke, amelyet aztán meghív vagy végrehajt több más változóból. Függvény meghívásakor olyan értékkészletet határoz meg, amely logikailag helyettesíti a függvény törzskifejezésén belül a szükséges bemeneti értékeket.
Példa – Explicit paraméterek és visszatérési érték
let
AddOne = (x as number) as number => x + 1,
//additional expression steps
CalcAddOne = AddOne(5)
in
CalcAddOne
Példa – Implicit paraméterek és visszatérési érték
let
Add = (x, y) => x + y,
AddResults =
[
OnePlusOne = Add(1, 1), // equals 2
OnePlusTwo = Add(1, 2) // equals 3
]
in
AddResults
Az 5-nél nagyobb lista első elemének megkeresése, ellenkező esetben null értékű
let
FirstGreaterThan5 = (list) =>
let
GreaterThan5 = List.Select(list, (n) => n> 5),
First = List.First(GreaterThan5)
in
First,
Results =
[
Found = FirstGreaterThan5({3,7,9}), // equals 7
NotFound = FirstGreaterThan5({1,3,4}) // equals null
]
in
Results
A függvények rekurzív módon használhatók. A függvény rekurzív hivatkozásához az azonosító előtagja @.
let
fact = (num) => if num = 0 then 1 else num * @fact (num-1)
in
fact(5) // equals 120
Minden kulcsszó
Az egyes kulcsszavak egyszerű függvények egyszerű létrehozására szolgálnak. "minden ..." a "(_) => ..." _ paramétert tartalmazó függvény-aláíráshoz tartozó szintaktikai cukor.
Mindegyik hasznos lehet a keresési operátorral kombinálva, amely alapértelmezés szerint a _ értékre van alkalmazva
Például mindegyik [CustomerID] ugyanaz, mint az egyes _[CustomerID], ami megegyezik a (_) => _[CustomerID] azonosítóval
Példa – Mindegyik használata táblasorszűrőben
Table.SelectRows(
Table.FromRecords({
[CustomerID = 1, Name = "Bob", Phone = "123-4567"],
[CustomerID = 2, Name = "Jim", Phone = "987-6543"] ,
[CustomerID = 3, Name = "Paul", Phone = "543-7890"] ,
[CustomerID = 4, Name = "Ringo", Phone = "232-1550"]
}),
each [CustomerID] = 2
)[Name]
// equals "Jim"