Bagikan melalui


Memahami fungsi Power Query M

Dalam bahasa rumus Power Query M, fungsi adalah pemetaan dari sekumpulan nilai input ke satu nilai output. Fungsi ditulis dengan terlebih dahulu menamai parameter fungsi, lalu memberikan ekspresi untuk menghitung hasil fungsi. Isi fungsi mengikuti simbol masuk ke (=>). Secara opsional, informasi jenis dapat disertakan pada parameter dan nilai pengembalian fungsi. Fungsi didefinisikan dan dipanggil dalam isi pernyataan let . Parameter dan/atau nilai pengembalian bisa implisit atau eksplisit. Parameter implisit dan/atau nilai pengembalian adalah jenis apa pun. Ketik apa pun mirip dengan jenis objek dalam bahasa lain. Semua jenis dalam M berasal dari jenis apa pun.

Fungsi adalah nilai seperti angka atau nilai teks, dan dapat disertakan dalam baris seperti ekspresi lainnya. Contoh berikut menunjukkan fungsi yang merupakan nilai variabel Tambahkan , yang kemudian dipanggil, atau dijalankan, dari beberapa variabel lain. Saat fungsi dipanggil, sekumpulan nilai ditentukan bahwa secara logis menggantikan set nilai input yang diperlukan dalam ekspresi isi fungsi.

Contoh - Parameter eksplisit dan nilai pengembalian

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

Contoh - Parameter implisit dan nilai pengembalian

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

Temukan elemen pertama dari daftar yang lebih besar dari 5, atau null jika tidak

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  

Fungsi dapat digunakan secara rekursif. Untuk mereferensikan fungsi secara rekursif, awali pengidentifikasi dengan @.

let   
    fact = (num) => if num = 0 then 1 else num * @fact (num-1)   
in   
    fact(5) // equals 120  

Setiap kata kunci

Setiap kata kunci digunakan untuk membuat fungsi sederhana dengan mudah. each ... adalah gula sintaktik untuk tanda tangan fungsi yang mengambil _ parameter (_) => ....

Setiap kata kunci berguna ketika dikombinasikan dengan operator pencarian, yang diterapkan secara default ke _. Misalnya, each [CustomerID] sama each _[CustomerID]dengan , yang sama (_) => _[CustomerID]dengan .

Contoh - Menggunakan masing-masing dalam filter baris tabel

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"