Poznámka
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete sa skúsiť prihlásiť alebo zmeniť adresáre.
Na prístup k tejto stránke sa vyžaduje oprávnenie. Môžete skúsiť zmeniť adresáre.
V jazyku vzorcov Power Query M je funkcia mapovaním z množiny vstupných hodnôt na jednu výstupnú hodnotu. Funkcia sa zapíše do prvého pomenovania parametrov funkcie a potom poskytne výraz na výpočet výsledku funkcie. Telo funkcie nasleduje po symbole "goes-to" (=>). Voliteľne môžete zadať typové informácie o parametroch a vrátenú hodnotu funkcie. Funkcia je definovaná a vyvolaná v tele príkazu let . Parametre alebo vrátená hodnota môže byť implicitná alebo explicitná. Implicitné parametre alebo vrátená hodnota sú typu any. Typ any je podobný objektovému typu v iných jazykoch. Všetky typy v jazyku M pochádzajú z typu any.
Funkcia je hodnota rovnako ako číselná alebo textová hodnota a môže byť zahrnutá v riadku rovnako ako akýkoľvek iný výraz. Nasledujúci príklad znázorňuje funkciu, ktorá je hodnotou funkcie Add variable (Pridať premennú), ktorá sa potom vyvolá alebo vykoná z niekoľkých ďalších premenných. Pri vyvolaní funkcie sa zadá množina hodnôt, ktoré logicky nahradia požadovanú množinu vstupných hodnôt vo výraze tela funkcie.
Príklad – Explicitné parametre a vrátená hodnota
let
AddOne = (x as number) as number => x + 1,
//additional expression steps
CalcAddOne = AddOne(5)
in
CalcAddOne
Príklad – implicitné parametre a vrátená hodnota
let
Add = (x, y) => x + y,
AddResults =
[
OnePlusOne = Add(1, 1), // equals 2
OnePlusTwo = Add(1, 2) // equals 3
]
in
AddResults
Nájdite prvý prvok zoznamu väčší ako 5 alebo v opačnom prípade hodnotu null
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
Funkcie možno použiť rekurzívne. Ak chcete rekurzívne odkazovať na funkciu, pridajte k identifikátoru predponu @.
let
fact = (num) => if num = 0 then 1 else num * @fact (num-1)
in
fact(5) // equals 120
Kľúčové slovo each
Kľúčové slovo each sa používa na jednoduché vytváranie jednoduchých funkcií. each ...
je syntaktický vzor pre podpis funkcie, ktorý má _
parameter (_) => ...
.
Kľúčové slovo each je užitočné v kombinácii s operátorom vyhľadávania, ktorý sa predvolene používa na _
.
Napríklad each [CustomerID]
je rovnaký ako each _[CustomerID]
, čo je rovnaké ako (_) => _[CustomerID]
.
Príklad – Použitie každého z nich vo filtri riadkov tabuľky
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"