Aracılığıyla paylaş


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 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ümesini mantıksal olarak yerine koyan 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. each ...parametresini _alan işlev imzası için söz dizimsel şekerdir(_) => ....

Her anahtar sözcük, varsayılan olarak _öğesine uygulanan arama işleciyle birleştirildiğinde kullanışlıdır. Örneğin, each [CustomerID] ile aynıdır each _[CustomerID]ve ile aynıdır (_) => _[CustomerID].

Ö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"