Förstå Power Query M-funktioner
På formelspråket Power Query M är en funktion en mappning från en uppsättning indatavärden till ett enda utdatavärde. En funktion skrivs genom att först namnge funktionsparametrarna och sedan tillhandahålla ett uttryck för att beräkna resultatet av funktionen. Funktionens brödtext följer symbolen goes-to (=>). Du kan också ange information om parametrar och funktionens returvärde. En funktion definieras och anropas i brödtexten i en let-instruktion . Parametrar och/eller returvärde kan vara implicita eller explicita. Implicita parametrar och/eller returvärde är av valfri typ. Skriv något som liknar en objekttyp på andra språk. Alla typer i M härleds från valfri typ.
En funktion är ett värde precis som ett tal eller ett textvärde och kan inkluderas på rad precis som andra uttryck. I följande exempel visas en funktion som är värdet för en Add-variabel som sedan anropas eller körs från flera andra variabler. När en funktion anropas anges en uppsättning värden som logiskt ersätts med den obligatoriska uppsättningen indatavärden i funktionstextuttrycket.
Exempel – Explicita parametrar och returvärde
let
AddOne = (x as number) as number => x + 1,
//additional expression steps
CalcAddOne = AddOne(5)
in
CalcAddOne
Exempel – Implicita parametrar och returvärde
let
Add = (x, y) => x + y,
AddResults =
[
OnePlusOne = Add(1, 1), // equals 2
OnePlusTwo = Add(1, 2) // equals 3
]
in
AddResults
Hitta det första elementet i en lista som är större än 5 eller null på annat sätt
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 användas rekursivt. För att rekursivt referera till funktionen prefixar du identifieraren med @.
let
fact = (num) => if num = 0 then 1 else num * @fact (num-1)
in
fact(5) // equals 120
Varje nyckelord
Varje nyckelord används för att enkelt skapa enkla funktioner. "varje ..." är syntaktisk socker för en funktionssignatur som tar _-parametern "(_) => ..."
Var och en är användbar när den kombineras med uppslagsoperatorn, som tillämpas som standard på _
Till exempel är varje [CustomerID] samma som varje _[CustomerID], som är samma som (_) => _[CustomerID]
Exempel – Använda var och en i tabellradsfiltret
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: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för