Om M-funktioner i Power QueryUnderstanding Power Query M functions

I M-formelsproget i Power Query er en funktion en tilknytning fra et sæt inputværdier til en enkelt outputværdi.In the Power Query M formula language, a function is a mapping from a set of input values to a single output value. En funktion skrives ved først at navngive funktionsparametrene og derefter angive et udtryk for at beregne resultatet af funktionen.A function is written by first naming the function parameters, and then providing an expression to compute the result of the function. Brødteksten i funktionen følger symbolet "går til" (=>).The body of the function follows the goes-to (=>) symbol. Du kan også vælge, om du vil inkludere typeoplysninger om parametre og funktionen for returværdien.Optionally, type information can be included on parameters and the function return value. En funktion defineres og aktiveres i brødteksten af en LET-sætning.A function is defined and invoked in the body of a let statement. Parametre og/eller returværdien kan være implicitte eller eksplicitte.Parameters and/or return value can be implicit or explicit. Implicitte parametre og/eller en implicit returværdi er af typen vilkårlig.Implicit parameters and/or return value are of type any. Typen vilkårlig ligner en objekttype på andre computersprog.Type any is similar to an object type in other languages. Alle typer i M afledes af typen vilkårlig.All types in M derive from type any.

En funktion er en værdi ligesom et tal eller en tekstværdi, og den kan inkluderes på samme måde som et hvilket som helst andet udtryk.A function is a value just like a number or a text value, and can be included in-line just like any other expression. I følgende eksempel vises en funktion, der er værdien af en tilføjelsesvariabel, som derefter aktiveres eller udføres fra flere andre variabler.The following example shows a function which is the value of an Add variable which is then invoked, or executed, from several other variables. Når en funktion aktiveres, angives der et sæt værdier, som erstattes på en logisk måde for det krævede sæt inputværdier i brødteksten af funktionens udtryk.When a function is invoked, a set of values are specified which are logically substituted for the required set of input values within the function body expression.

Eksempel – Eksplicitte parametre og returværdiExample – Explicit parameters and return value

let  
    AddOne = (x as number) as number => x + 1,  
    //additional expression steps  
    CalcAddOne = AddOne(5)  
in  
    CalcAddOne  

Eksempel – Implicitte parametre og returværdiExample – Implicit parameters and return value

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, og ellers nullFind the first element of a list greater than 5, or null otherwise

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.Functions can be used recursively. Hvis du vil referere rekursivt til funktionen, skal du angive et præfiks for identifikatoren med @.In order to recursively reference the function, prefix the identifier with @.

let   
    fact = (num) => if num = 0 then 1 else num * @fact (num-1)   
in   
    fact(5) // equals 120  

Nøgleordet eachEach keyword

Nøgleordet each bruges til nemt at oprette enkle funktioner.The each keyword is used to easily create simple functions. "each..." er syntaktisk sukker for en funktionssignatur, der bruger _-parameteren "(_) =>..."“each ...” is syntactic sugar for a function signature that takes the _ parameter “(_) => ...”

Each er nyttig, når den kombineres med opslagsoperatoren, der som standard anvendes til _Each is useful when combined with the lookup operator, which is applied by default to _
Hvert [CustomerID] er f.eks. det samme som hvert enkelt _[CustomerID], som er det samme som (_) = > _[CustomerID]For example, each [CustomerID] is the same as each _[CustomerID], which is the same as (_) => _[CustomerID]

Eksempel – Brug af each i filteret for tabelrækkerExample – Using each in table row filter

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"