Power Query M işlevlerini anlama
Power Query M formül dilinde işlev, giriş değerleri kümesinden tek bir çıkış değerine eşlemedir. İşlev, önce işlev parametrelerini adlandırarak ve ardından işlevin sonucunu hesaplamak için bir ifade sağlayarak yazılır. İşlevin gövdesi, gider (=>) simgesini izler. İsteğe bağlı olarak, tür bilgileri parametrelere ve işlev dönüş değerine eklenebilir. İşlev, let deyiminin gövdesinde tanımlanır ve çağrılır. Parametreler ve/veya dönüş değeri örtük veya açık olabilir. Örtük parametreler ve/veya dönüş değeri herhangi bir türdedir. Herhangi bir tür, diğer dillerdeki nesne türüne benzer. M'deki tüm türler herhangi bir türden türetilir.
İşlev, sayı veya metin değeri gibi bir değerdir ve diğer ifadeler gibi satır içi olarak eklenebilir. Aşağıdaki örnekte, daha sonra diğer birkaç değişkenden çağrılan veya yürütülen Bir Add değişkeninin değeri olan bir işlev gösterilmektedir. bir işlev çağrıldığında, işlev gövdesi ifadesinde gerekli giriş değerleri kümesiyle mantıksal olarak değiştirilen bir değer kümesi belirtilir.
Örnek – Açık parametreler ve dönüş değeri
let
AddOne = (x as number) as number => x + 1,
//additional expression steps
CalcAddOne = AddOne(5)
in
CalcAddOne
Örnek – Örtük parametreler ve dönüş değeri
let
Add = (x, y) => x + y,
AddResults =
[
OnePlusOne = Add(1, 1), // equals 2
OnePlusTwo = Add(1, 2) // equals 3
]
in
AddResults
5'ten büyük bir listenin ilk öğesini veya aksi halde null değerini bulma
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
İşlevler özyinelemeli olarak kullanılabilir. İşleve özyinelemeli olarak başvurmak için tanımlayıcıya @ön ekini ekleyin.
let
fact = (num) => if num = 0 then 1 else num * @fact (num-1)
in
fact(5) // equals 120
Her anahtar sözcük
Her anahtar sözcük kolayca basit işlevler oluşturmak için kullanılır. "her ..." , "(_) => ..." _ parametresini alan işlev imzası için söz dizimsel şekerdir
Her biri, varsayılan olarak _ olarak uygulanan arama işleciyle birleştirildiğinde kullanışlıdır
Örneğin, her [CustomerID] her _[CustomerID] ile aynıdır ve (_) => _[CustomerID] ile aynıdır
Örnek – Tablo satırı filtresinde her birinin kullanılması
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"