Opis funkcji Power Query M
W języku formuł Power Query M funkcja jest mapowaniem z zestawu wartości wejściowych na pojedynczą wartość wyjściową. Funkcja jest zapisywana przez najpierw nazewnictwo parametrów funkcji, a następnie podanie wyrażenia w celu obliczenia wyniku funkcji. Treść funkcji jest zgodna z symbolem goes-to (=>). Opcjonalnie można uwzględnić informacje o typie dla parametrów i zwracanej wartości funkcji. Funkcja jest definiowana i wywoływana w treści instrukcji let . Parametry i/lub wartość zwracana mogą być niejawne lub jawne. Niejawne parametry i/lub wartość zwracana są typu dowolne. Typ dowolny jest podobny do typu obiektu w innych językach. Wszystkie typy w języku M pochodzą z dowolnego typu.
Funkcja jest wartością podobną do liczby lub wartości tekstowej i może być uwzględniona w wierszu tak samo jak dowolne inne wyrażenie. W poniższym przykładzie przedstawiono funkcję, która jest wartością zmiennej Dodaj, która jest następnie wywoływana lub wykonywana z kilku innych zmiennych. Po wywołaniu funkcji określony jest zestaw wartości, które są logicznie zastępowane wymaganym zestawem wartości wejściowych w wyrażeniu treści funkcji.
Przykład — jawne parametry i wartość zwracana
let
AddOne = (x as number) as number => x + 1,
//additional expression steps
CalcAddOne = AddOne(5)
in
CalcAddOne
Przykład — niejawne parametry i wartość zwracana
let
Add = (x, y) => x + y,
AddResults =
[
OnePlusOne = Add(1, 1), // equals 2
OnePlusTwo = Add(1, 2) // equals 3
]
in
AddResults
Znajdź pierwszy element listy większej niż 5 lub null w przeciwnym razie
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
Funkcje mogą być używane rekursywnie. Aby rekursywnie odwoływać się do funkcji, prefiks identyfikatora za pomocą znaku @.
let
fact = (num) => if num = 0 then 1 else num * @fact (num-1)
in
fact(5) // equals 120
Każde słowo kluczowe
Każde słowo kluczowe służy do łatwego tworzenia prostych funkcji. "każdy ..." jest cukrem składniowym dla podpisu funkcji, który przyjmuje parametr _ "(_) => ..."
Każda z nich jest przydatna w połączeniu z operatorem wyszukiwania, który jest domyślnie stosowany do _
Na przykład każdy [CustomerID] jest taki sam jak każdy element _[CustomerID], który jest taki sam jak (_) => _[CustomerID]
Przykład — używanie każdego filtru wierszy tabeli
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"
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla