Bagikan melalui


Ekspresi, nilai, dan ekspresi let

Kueri bahasa rumus Power Query M terdiri dari langkah-langkah ekspresi rumus yang membuat kueri mashup. Ekspresi rumus dapat dievaluasi (dihitung), menghasilkan nilai. Ekspresi let merangkum sekumpulan nilai yang akan dihitung, diberi nama, lalu digunakan dalam ekspresi berikutnya yang mengikuti dalam pernyataan. Misalnya, ekspresi let dapat berisi variabel Sumber yang sama dengan nilai dan menghasilkan nilai teks dalam huruf besar/kecil yang tepat.

Biarkan ekspresi

let
    Source = Text.Proper("hello world")
in
    Source

Dalam contoh di atas, Text.Proper("hello world") dievaluasi ke "Hello World".

Bagian berikutnya menjelaskan jenis nilai dalam bahasa tersebut.

Nilai primitif

Nilai primitif adalah nilai bagian tunggal, seperti angka, logis, teks, atau null. Nilai null dapat digunakan untuk menunjukkan tidak adanya data apa pun.

Jenis Contoh nilai
Biner 00 00 00 02 // jumlah titik (2)
Tanggal 5/23/2015
DateTime 23/5/2015 12:00:00 AM
Zona Tanggal Waktu 23/5/2015 12:00:00 AM -08:00
Durasi 15:35:00
Logika benar dan salah
Null null
Number 0, 1, -1, 1,5, dan 2,3e-5
Teks "abc"
Waktu 12:34:12 PM

Nilai fungsi

Fungsi adalah nilai yang, ketika dipanggil dengan argumen, menghasilkan nilai baru. Fungsi ditulis dengan mencantumkan parameter fungsi dalam tanda kurung, diikuti oleh simbol masuk ke =>, diikuti dengan ekspresi yang menentukan fungsi. Misalnya, untuk membuat fungsi yang disebut MyFunction yang memiliki dua parameter dan melakukan perhitungan pada parameter1 dan parameter2:

let
    MyFunction = (parameter1, parameter2) => (parameter1 + parameter2) / 2
in
    MyFunction

Memanggil MyFunction mengembalikan hasil:

let
    Source = MyFunction(2, 4)
in
    Source

Kode ini menghasilkan nilai 3.

Nilai data terstruktur

Bahasa M mendukung nilai data terstruktur berikut:

Catatan

Data terstruktur dapat berisi nilai M apa pun. Untuk melihat beberapa contoh, buka Contoh data terstruktur tambahan.

List

Daftar adalah urutan nilai berurutan berbasis nol yang diapit dalam karakter kurung kurawal { }. Karakter kurung kurawal { } juga digunakan untuk mengambil item dari daftar menurut posisi indeks. Untuk informasi selengkapnya, buka Mencantumkan nilai.

Catatan

Power Query M mendukung ukuran daftar tak terbatas, tetapi jika daftar ditulis sebagai harfiah, daftar memiliki panjang tetap. Misalnya, {1, 2, 3} memiliki panjang tetap 3.

Berikut ini adalah beberapa contoh Daftar.

Nilai Jenis
{123, benar, "A"} Daftar yang berisi angka, logis, dan teks.
{1, 2, 3} Daftar angka
{
    {1, 2, 3},
    {4, 5, 6}
}
Daftar nomor
{
    [CustomerID = 1, Nama = "Bob", Telepon = "123-4567"],
    [CustomerID = 2, Name = "Jim", Phone = "987-6543"]
}
Daftar Rekaman
{123, benar, "A"}{0} Dapatkan nilai item pertama dalam Daftar. Ekspresi ini mengembalikan nilai 123.
{
    {1, 2, 3},
    {4, 5, 6}
}{0}{1}
Dapatkan nilai item kedua dari elemen Daftar pertama. Ekspresi ini mengembalikan nilai 2.

Rekaman

Rekaman adalah sekumpulan bidang. Bidang adalah pasangan nama/nilai di mana nama adalah nilai teks yang unik dalam rekaman bidang. Sintaks untuk nilai rekaman memungkinkan nama ditulis tanpa tanda kutip, formulir juga disebut sebagai pengidentifikasi. Pengidentifikasi dapat mengambil dua formulir berikut:

  • identifier_name seperti OrderID.

  • #"nama pengidentifikasi" seperti #"Data hari ini adalah: ".

Berikut ini adalah rekaman yang berisi bidang bernama "OrderID", "CustomerID", "Item", dan "Price" dengan nilai 1, 1, "Fishing rod", dan 100.00. Karakter kurung kurawal [ ] menunjukkan awal dan akhir ekspresi rekaman, dan digunakan untuk mendapatkan nilai bidang dari rekaman. Contoh berikut menunjukkan rekaman dan cara mendapatkan nilai bidang Item.

Berikut adalah contoh catatan:

let Source =
        [
              OrderID = 1,
              CustomerID = 1,
              Item = "Fishing rod",
              Price = 100.00
        ]
in Source

Untuk mendapatkan nilai Item, Anda menggunakan tanda kurung siku sebagai Source[Item]:

let Source =
    [
          OrderID = 1,
          CustomerID = 1,
          Item = "Fishing rod",
          Price = 100.00
    ]
in Source[Item] //equals "Fishing rod"

Tabel

Tabel adalah sekumpulan nilai yang diatur ke dalam kolom dan baris bernama. Jenis kolom bisa implisit atau eksplisit. Anda bisa menggunakan #table untuk membuat daftar nama kolom dan daftar baris. Tabel nilai adalah Daftar dalam Daftar. Karakter kurung kurawal { } juga digunakan untuk mengambil baris dari posisi Tabel menurut indeks (buka Contoh 3 - Dapatkan baris dari tabel menurut posisi indeks).

Contoh 1 - Membuat tabel dengan jenis kolom implisit

let
  Source = #table(
    {"OrderID", "CustomerID", "Item", "Price"},
      {
          {1, 1, "Fishing rod", 100.00},
          {2, 1, "1 lb. worms", 5.00}
      })
in
    Source

Contoh 2 - Membuat tabel dengan jenis kolom eksplisit

let
    Source = #table(
    type table [OrderID = number, CustomerID = number, Item = text, Price = number],
        {
                {1, 1, "Fishing rod", 100.00},
             {2, 1, "1 lb. worms", 5.00}
        }
    )
in
    Source

Kedua contoh sebelumnya membuat tabel dengan bentuk berikut:

OrderID CustomerID Item Harga
1 1 Pancing 100.00
2 1 1 lb. cacing 5.00

Contoh 3 - Dapatkan baris dari tabel menurut posisi indeks

let
    Source = #table(
    type table [OrderID = number, CustomerID = number, Item = text, Price = number],
        {
              {1, 1, "Fishing rod", 100.00},
              {2, 1, "1 lb. worms", 5.00}
         }
    )
in
    Source{1}

Ekspresi ini mengembalikan rekaman berikut:

Bidang Nilai
OrderID 2
CustomerID 1
Benda 1 lb. cacing
Harga 5

Contoh data terstruktur tambahan

Data terstruktur dapat berisi nilai M apa pun. Berikut adalah beberapa contoh:

Contoh 1 - Daftar dengan nilai [Primitif](#_Primitive_value_1), [Function](#_Function_value), dan [Record](#_Record_value)

let
    Source =
{
   1,
   "Bob",
   DateTime.ToText(DateTime.LocalNow(), "yyyy-MM-dd"),
   [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0]
}
in
    Source

Mengevaluasi ekspresi ini dapat divisualisasikan sebagai:

Diagram tabel yang memvisualisasikan ekspresi dengan nilai primitif, fungsi, dan rekaman.

Contoh 2 - Rekaman yang berisi nilai primitif dan rekaman berlapis

let
    Source = [CustomerID = 1, Name = "Bob", Phone = "123-4567", Orders =
        {
              [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
            [OrderID = 2, CustomerID = 1, Item = "1 lb. worms", Price = 5.0]
        }]
in
    Source

Mengevaluasi ekspresi ini dapat divisualisasikan sebagai:

Diagram tabel yang memvisualisasikan ekspresi dengan beberapa nilai primitif dan rekaman berlapis.

Catatan

Meskipun banyak nilai dapat ditulis secara harfiah sebagai ekspresi, nilai bukanlah ekspresi. Misalnya, ekspresi 1 mengevaluasi ke nilai 1; ekspresi 1+1 mengevaluasi ke nilai 2. Perbedaan ini halus, tetapi penting. Ekspresi adalah resep untuk evaluasi; nilai adalah hasil evaluasi.

Jika ekspresi

Ekspresi if memilih antara dua ekspresi berdasarkan kondisi logis. Contohnya:

if 2 > 1 then
    2 + 2
else
    1 + 1

Ekspresi pertama (2 + 2) dipilih jika ekspresi logis (2 > 1) benar, dan ekspresi kedua (1 + 1) dipilih jika salah. Ekspresi yang dipilih (dalam hal ini 2 + 2) dievaluasi dan menjadi hasil ekspresi if (4).