Power Query M işlevlerini anlama

Power Query M formül dilinde işlev, bir dizi giriş değerinin tek bir çıkış değerine eşlenmesidir. İşlev yazılırken öncelikle işlev parametreleri adlandırılır, ardından işlevin sonucunu hesaplayacak olan ifade belirtilir. İşlevin gövdesi (=>) simgesini takip eder. İsteğe bağlı olarak parametrelere ve işlev dönüş değerine tür bilgileri dahil edilebilir. Bir işlev, bir let deyiminin gövdesi olarak tanımlanır ve çağrılır. Parametreler ve/veya dönüş değeri açık veya örtük olabilir. Örtük parametreler ve/veya dönüş değeri herhangi bir türde olur. Herhangi bir tür, diğer dillerdeki nesne türüne benzer. M içindeki tüm türler herhangi bir türünden türetilir.

İşlev, sayı veya metin değeri gibi bir değerdir ve diğer ifadeler gibi satır içinde belirtilebilir. Aşağıdaki örnekte toplama değişkeninin değeri olan ve birden fazla farklı değişkenler tarafından çağrılan veya yürütülen bir işlev gösterilmiştir. Bir işlev çağrıldığında, mantıksal olarak işlev gövdesi ifadesindeki gerekli giriş değerlerinin yerine yerleştirilen bir dizi değer çağrılır.

Örnek: Parametreler ve döndürülen değer açık

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

Örnek: Parametreler ve döndürülen değer örtük

let  
    Add = (x, y) => x + y,  
    AddResults =   
        [  
            OnePlusOne = Add(1, 1),     // equals 2  
            OnePlusTwo = Add(1, 2)      // equals 3  
    ]  
in  
    AddResults  

Bir listenin 5'ten büyük olan ilk öğesini bulur, aksi takdirde null döndürür

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 yinelemeli 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  

"Each" anahtar sözcüğü

Each anahtar sözcüğü, basit işlevler oluşturmak için kullanılır. "her ..." "(_) => ..." _ parametresini alan işlev imzası için söz dizimsel şekerdir

"Each", varsayılan olarak _ için uygulanan arama işleciyle birleştirildiğinde kullanışlıdır.
Örneğin, her [CustomerID] her _[CustomerID] ile aynıdır ve bu da (_) => _[CustomerID] ile aynıdır

Örnek: "Each" anahtar sözcüğünü tablo satır filtresinde kullanma

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"