Om M-funktioner i Power Query
I M-formelsproget i Power Query er en funktion en tilknytning fra et sæt inputværdier til en enkelt outputværdi. En funktion skrives ved først at navngive funktionsparametrene og derefter angive et udtryk til beregning af resultatet af funktionen. Brødteksten i funktionen følger symbolet går til (=>). Du kan eventuelt inkludere typeoplysninger om parametre og funktionens returværdi. En funktion defineres og aktiveres i brødteksten i en let-sætning . Parametre og/eller returværdier kan være implicitte eller eksplicitte. Implicitte parametre og/eller returværdier er af typen enhver. Type any svarer til en objekttype på andre sprog. Alle typer i M stammer fra typen any.
En funktion er en værdi på samme måde som et tal eller en tekstværdi og kan inkluderes i linjen på samme måde som ethvert andet udtryk. I følgende eksempel vises en funktion, som er værdien af en add-variabel, som derefter aktiveres eller udføres fra flere andre variabler. Når en funktion aktiveres, angives der et værdisæt, som logisk erstattes af det påkrævede sæt inputværdier i funktionsbrødtekstudtrykket.
Eksempel – Eksplicitte parametre og returværdi
let
AddOne = (x as number) as number => x + 1,
//additional expression steps
CalcAddOne = AddOne(5)
in
CalcAddOne
Eksempel – implicitte parametre og returværdi
let
Add = (x, y) => x + y,
AddResults =
[
OnePlusOne = Add(1, 1), // equals 2
OnePlusTwo = Add(1, 2) // equals 3
]
in
AddResults
Find det første element på en liste, der er større end 5, ellers er 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
Funktioner kan bruges rekursivt. Hvis du vil referere rekursivt til funktionen, skal du foranfikse id'et med @.
let
fact = (num) => if num = 0 then 1 else num * @fact (num-1)
in
fact(5) // equals 120
Hvert nøgleord
Hvert nøgleord bruges til nemt at oprette enkle funktioner. "hver ..." er syntaktisk sukker for en funktionssignatur, der bruger parameteren _"(_) => ..."
Hver enkelt er nyttig, når den kombineres med opslagsoperatoren, som som standard anvendes på _
Hver [CustomerID] er f.eks. den samme som hver _[CustomerID], hvilket er det samme som (_) => _[CustomerID]
Eksempel – brug af hvert filter i tabelrække
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"
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: I hele 2024 udfaser vi GitHub-problemer som feedbackmekanisme for indhold og erstatter det med et nyt feedbacksystem. Du kan få flere oplysninger under:Indsend og få vist feedback om