Baca dalam bahasa Inggris

Bagikan melalui


Model evaluasi

Model evaluasi bahasa rumus Power Query M dimodelkan setelah model evaluasi yang biasanya ditemukan di lembar bentang, di mana urutan perhitungan dapat ditentukan berdasarkan dependensi antara rumus dalam sel.

Jika Anda telah menulis rumus dalam lembar bentang seperti Excel, Anda mungkin mengenali rumus di sebelah kiri akan menghasilkan nilai di sebelah kanan saat dihitung:

Evaluation Model 1

Evaluation Model 2

Dalam M, ekspresi dapat mereferensikan ekspresi sebelumnya berdasarkan nama, dan proses evaluasi akan secara otomatis menentukan urutan penghitungan ekspresi yang direferensikan.

Mari kita gunakan rekaman untuk menghasilkan ekspresi yang setara dengan contoh spreadsheet di atas. Saat menginisialisasi nilai bidang, Anda merujuk ke bidang lain dalam rekaman dengan nama bidang, sebagai berikut:

[
    A1 = A2 * 2,
    A2 = A3 + 1,
    A3 = 1
]

Ekspresi di atas mengevaluasi ke rekaman berikut:

[
    A1 = 4,
    A2 = 2,
    A3 = 1
]

Rekaman dapat dimuat di dalam, atau ditumpuk, dalam rekaman lain. Anda dapat menggunakan operator pencarian ([ ]) untuk mengakses bidang rekaman berdasarkan nama. Misalnya, rekaman berikut ini memiliki bidang bernama Penjualan yang berisi rekaman, dan bidang bernama Total yang mengakses bidang FirstHalf dan SecondHalf dari rekaman Penjualan:

[
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
    Total = Sales[FirstHalf] + Sales[SecondHalf]
]

Ekspresi di atas mengevaluasi ke rekaman berikut:

[
    Sales = [ FirstHalf = 1000, SecondHalf = 1100 ],
    Total = 2100
]

Anda menggunakan operator indeks posisi ({ }) untuk mengakses item dalam daftar menurut indeks numeriknya. Nilai dalam daftar disebut menggunakan indeks berbasis nol dari awal daftar. Misalnya, indeks 0 dan 1 digunakan untuk mereferensikan item pertama dan kedua dalam daftar di bawah ini:

[
    Sales =
        {
            [
                Year = 2007,
                FirstHalf = 1000,
                SecondHalf = 1100,
                Total = FirstHalf + SecondHalf // equals 2100
            ],
            [
                Year = 2008,
                FirstHalf = 1200,
                SecondHalf = 1300,
                Total = FirstHalf + SecondHalf // equals 2500
            ]
        },
    #"Total Sales" = Sales{0}[Total] + Sales{1}[Total] // equals 4600
]

Evaluasi malas dan bersemangat

Ekspresi anggota Daftar, Rekam, dan Tabel , serta biarkan ekspresi (Buka Ekspresi, nilai, dan biarkan ekspresi), dievaluasi menggunakan evaluasi malas. Artinya, mereka dievaluasi ketika diperlukan. Semua ekspresi lainnya dievaluasi menggunakan evaluasi bersemangat. Artinya, mereka segera dievaluasi ketika ditemui selama proses evaluasi. Cara yang baik untuk memikirkan hal ini adalah dengan mengingat bahwa mengevaluasi ekspresi daftar atau rekaman akan mengembalikan nilai daftar atau rekaman yang mengetahui bagaimana item daftar atau bidang rekamannya perlu dihitung, saat diminta (oleh operator pencarian atau indeks).