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"