Bagikan melalui


Rencana kueri untuk Power Query

Rencana kueri untuk Power Query adalah fitur yang menyediakan tampilan evaluasi kueri Anda yang lebih baik. Ini berguna untuk membantu menentukan mengapa kueri tertentu tidak dapat dilipat pada langkah tertentu.

Melalui contoh praktis, artikel ini menunjukkan kasus penggunaan utama dan manfaat potensial menggunakan fitur rencana kueri untuk meninjau langkah-langkah kueri Anda. Contoh yang digunakan dalam artikel ini dibuat menggunakan database sampel AdventureWorksLT untuk Azure SQL Server, yang dapat Anda unduh dari database sampel AdventureWorks.

Nota

Fitur rencana kueri untuk Power Query hanya tersedia di Power Query Online.

Diagram proses yang disarankan untuk fitur rencana kueri dengan meninjau indikator pelipatan kueri, meninjau rencana kueri untuk langkah yang dipilih, dan menerapkan perubahan yang berasal dari tinjauan rencana kueri.

Artikel ini dibagi dalam serangkaian langkah yang direkomendasikan untuk menginterpretasikan rencana kueri. Langkah-langkah ini adalah:

  1. Tinjau indikator penglipatan kueri.
  2. Pilih langkah kueri untuk meninjau rencana kuerinya.
  3. Terapkan perubahan pada kueri Anda.

Gunakan langkah-langkah berikut untuk membuat kueri di lingkungan Power Query Online Anda sendiri.

  1. Dari Power Query - Pilih sumber data, pilih Kueri kosong .

  2. Ganti skrip kueri kosong dengan kueri berikut.

    let
        Source = Sql.Database("servername", "database"),
        Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data],
        #"Removed other columns" = Table.SelectColumns(
            Navigation,
            {
                "SalesOrderID",
                "OrderDate",
                "SalesOrderNumber",
                "PurchaseOrderNumber",
                "AccountNumber",
                "CustomerID",
                "TotalDue"
            }
        ),
        #"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000),
        #"Kept bottom rows" = Table.LastN(#"Filtered rows", 5)
    in
        #"Kept bottom rows"
    
  3. Ubah servername dan database dengan nama yang benar untuk lingkungan Anda sendiri.

  4. (Opsional) Jika Anda mencoba menyambungkan ke server dan database untuk lingkungan lokal, pastikan untuk mengonfigurasi gateway untuk lingkungan tersebut.

  5. Pilih Selanjutnya.

  6. Di Editor Power Query, pilih Konfigurasikan koneksi dan berikan kredensial ke sumber data Anda.

Nota

Untuk informasi lebih lanjut tentang menghubungkan ke SQL Server, kunjungi database SQL Server.

Setelah mengikuti langkah-langkah ini, kueri Anda akan terlihat seperti yang ada di gambar berikut.

Cuplikan layar kueri sampel dengan indikator pelipatan kueri diaktifkan.

Kueri ini tersambung ke tabel SalesOrderHeader, dan memilih beberapa kolom dari lima pesanan terakhir dengan nilai TotalDue di atas 1000.

Nota

Artikel ini menggunakan contoh yang disederhanakan untuk menampilkan fitur ini, tetapi konsep yang dijelaskan dalam artikel ini berlaku untuk semua kueri. Kami menyarankan agar Anda memiliki pemahaman yang mendalam tentang pelipatan kueri sebelum membaca rencana kueri. Untuk mempelajari selengkapnya tentang pelipatan kueri, buka Dasar-dasar lipatan kueri.

1. Tinjau indikator penyederhanaan kueri

Nota

Sebelum membaca bagian ini, kami sarankan Anda meninjau artikel tentang indikator lipatan kueri .

Langkah pertama Anda dalam proses ini adalah meninjau kueri Anda dan memperhatikan indikator pelipatan kueri. Tujuannya adalah untuk meninjau langkah-langkah yang ditandai sebagai tidak dilipat. Kemudian Anda dapat melihat apakah membuat perubahan pada kueri keseluruhan dapat membuat transformasi tersebut terlipat sepenuhnya.

Cuplikan layar indikator penyusunan ulang kueri untuk kueri sampel pada panel Langkah Berlaku.

Untuk contoh ini, satu-satunya langkah yang tidak dapat dilipat adalah Baris bawah yang disimpan, yang mudah diidentifikasi melalui indikator langkah tidak dilipat. Langkah ini juga merupakan langkah terakhir kueri.

Tujuannya sekarang adalah untuk meninjau langkah ini dan memahami apa yang dilipat kembali ke sumber data dan apa yang tidak dapat dilipat.

2. Pilih langkah kueri untuk meninjau rencana kuerinya

Anda mengidentifikasi langkah Baris bawah yang disimpan sebagai langkah yang menarik karena tidak dilipat kembali ke sumber data. Klik kanan langkah dan pilih opsi Lihat rencana kueri. Tindakan ini menampilkan dialog baru yang berisi diagram untuk rencana kueri langkah yang dipilih.

Cuplikan layar dialog Paket kueri yang menampilkan tampilan diagram untuk rencana kueri dengan simpul yang tersambung oleh baris.

Power Query mencoba mengoptimalkan kueri Anda dengan memanfaatkan evaluasi tunda dan pelipatan kueri, sebagaimana disebutkan dalam Dasar-dasar pelipatan kueri. Rencana kueri ini mewakili terjemahan kueri M Anda yang dioptimalkan ke dalam kueri asli yang dikirim ke sumber data. Ini juga mencakup transformasi apa pun yang dilakukan oleh Power Query Engine. Urutan di mana simpul muncul mengikuti urutan kueri Anda mulai dari langkah terakhir atau output kueri Anda, yang diwakili di ujung kiri diagram. Dalam hal ini, simpul Table.LastN yang mewakili langkah Baris bawah yang Disimpan.

Di bagian bawah dialog, ada bilah dengan ikon yang membantu Anda memperbesar atau memperkecil tampilan paket kueri, dan tombol lain untuk membantu Anda mengelola tampilan. Untuk gambar sebelumnya, opsi Pas untuk melihat dari bilah ini digunakan untuk memperjelas simpul.

Cuplikan layar dialog Rencana kueri dengan simpul diperbesar untuk tampilan yang lebih baik.

Nota

Rencana kueri mewakili rencana yang dioptimalkan. Saat mesin mengevaluasi kueri, ia berupaya mengintegrasikan semua operator ke dalam sumber data. Dalam beberapa kasus, bahkan mungkin melakukan pengurutan ulang langkah-langkah secara internal untuk memaksimalkan pelipatan. Dengan mempertimbangkan proses ini, simpul/operator yang tersisa dalam rencana kueri yang dioptimalkan ini biasanya berisi kueri sumber data yang dipadatkan. Setiap operator yang tidak dapat dilipat dievaluasi secara lokal.

Mengidentifikasi simpul yang dilipat dari simpul lainnya

Anda dapat mengidentifikasi simpul dalam diagram ini sebagai dua grup:

  • simpul terlipat: Simpul ini dapat berupa simpul Value.NativeQuery atau "sumber data" seperti Sql.Database. Simpul ini juga dapat diidentifikasi dengan label remote di bawah nama fungsinya.
  • Simpul yang tidak dilipat: Operator tabel lain, seperti Table.SelectRows, Table.SelectColumns, dan fungsi lain yang tidak dapat dilipat. Simpul ini juga dapat diidentifikasi dengan label Pemindaian penuh dan Streaming.

Gambar berikut menunjukkan simpul yang dilipat di dalam persegi panjang merah. Sisa simpul-simpul tidak dapat dilipat kembali ke sumber data. Anda perlu meninjau sisa simpul karena tujuannya adalah untuk mencoba melipat kembali simpul tersebut ke sumber data.

Cuplikan layar kontrol tampilan Rencana Kueri di bagian bawah dialog dengan opsi sesuaikan dengan tampilan dipilih.

Anda dapat memilih Tampilkan detail di bagian bawah beberapa simpul untuk menampilkan informasi yang diperluas. Misalnya, detail simpul Value.NativeQuery memperlihatkan kueri asli (di SQL) yang dikirim ke sumber data.

Cuplikan layar tampilan detail untuk node Value.NativeQuery dalam rencana kueri.

Kueri yang diperlihatkan di sini mungkin bukan kueri yang sama persis yang dikirim ke sumber data, tetapi merupakan perkiraan yang baik. Untuk kasus ini, ini memberi tahu Anda dengan tepat kolom apa yang dikueri dari tabel SalesOrderHeader. Kemudian, cara memfilter tabel tersebut menggunakan bidang TotalDue untuk hanya mendapatkan baris di mana nilai untuk bidang tersebut lebih besar dari 1000. Simpul di sampingnya, Table.LastN, dihitung secara lokal oleh mesin Power Query, karena tidak dapat dilipat.

Nota

Operator mungkin tidak sama persis dengan fungsi yang digunakan dalam skrip kueri.

Tinjau simpul yang tidak dilipat dan pertimbangkan langkah-langkah untuk melipat transformasi Anda.

Anda sekarang telah menentukan simpul mana yang tidak dapat dilipat dan dapat dievaluasi secara lokal. Kasus ini hanya memiliki simpul Table.LastN, tetapi dalam skenario lain dapat memiliki lebih banyak lagi.

Tujuannya adalah untuk menerapkan perubahan pada kueri Anda sehingga langkah tersebut bisa disederhanakan. Beberapa perubahan yang mungkin Anda terapkan dapat berkisar dari mengatur ulang langkah-langkah Anda hingga menerapkan logika alternatif ke kueri Anda yang lebih eksplisit ke sumber data. Ini tidak berarti bahwa semua kueri dan semua operasi dapat dilipat dengan menerapkan beberapa perubahan. Tetapi ini adalah praktik yang baik untuk menentukan melalui percobaan dan kesalahan jika kueri Anda dapat dilipat kembali.

Karena sumber data adalah database SQL Server, jika tujuannya adalah untuk mengambil lima pesanan terakhir dari tabel, maka alternatif yang baik adalah memanfaatkan klausa TOP dan ORDER BY di SQL. Karena tidak ada klausa BOTTOM di SQL, transformasi Table.LastN di PowerQuery tidak dapat diterjemahkan ke dalam SQL. Anda dapat menghapus langkah Table.LastN dan menggantinya dengan:

  • Langkah mengurutkan menurun berdasarkan kolom SalesOrderID dalam tabel, karena kolom ini menentukan urutan pesanan mana yang masuk pertama dan mana yang terakhir dimasukkan.
  • Pilih lima baris teratas karena tabel telah diurutkan, transformasi ini melakukan hal yang sama seperti jika baris bawah dipertahankan (Table.LastN).

Alternatif ini setara dengan kueri asli. Meskipun alternatif ini secara teori terlihat baik, Anda perlu membuat perubahan untuk melihat apakah alternatif ini membuat simpul ini sepenuhnya berintegrasi kembali ke sumber data.

3. Menerapkan perubahan pada kueri Anda

Terapkan alternatif yang dibahas di bagian sebelumnya:

  1. Tutup dialog rencana kueri dan kembali ke Editor Power Query.

  2. Hapus langkah Disimpan baris bawah.

  3. Urutkan kolom SalesOrderID dalam urutan menurun.

    Cuplikan layar memperlihatkan cara mengurutkan kolom SalesOrderID dalam urutan menurun menggunakan menu filter otomatis.

  4. Pilih ikon tabel di sudut kiri atas tampilan pratinjau data dan pilih opsi yang membaca Pertahankan baris atas. Dalam dialog, berikan angka lima sebagai argumen dan tekan OK.

    Cuplikan layar memperlihatkan cara Menggunakan menu konteks tabel untuk memilih transformasi Pertahankan baris atas untuk hanya menyimpan lima baris teratas.

Setelah menerapkan perubahan, periksa kembali indikator pelipatan kueri dan lihat apakah indikator tersebut memberi Anda indikator terlipat.

Cuplikan layar memperlihatkan semua indikator lipatan kueri berwarna hijau dan menunjukkan bahwa indikator tersebut dapat dilipat. Tabel akhir menyediakan baris yang sama tetapi dalam urutan yang berbeda.

Sekarang saatnya untuk meninjau rencana kueri dari langkah terakhir, yang sekarang Pertahankan Baris Teratas. Sekarang hanya ada simpul yang dilipat. Pilih Tampilkan detail di bawah Value.NativeQuery untuk memverifikasi kueri mana yang sedang dikirim ke database.

Cuplikan layar rencana kueri baru setelah membuat perubahan pada kueri, yang sekarang hanya menampilkan simpul terlipat, dengan Value.NativeQuery memperlihatkan pernyataan SQL lengkap yang mengevaluasi kueri.

Meskipun artikel ini menyarankan alternatif apa untuk diterapkan, tujuan utamanya adalah agar Anda mempelajari cara menggunakan rencana kueri untuk menyelidiki pelipatan kueri. Artikel ini juga memberikan visibilitas tentang apa yang dikirim ke sumber data Anda dan transformasi apa yang dilakukan secara lokal.

Anda dapat menyesuaikan kode Anda untuk melihat dampaknya dalam kueri Anda. Dengan menggunakan indikator pelipatan kueri, Anda juga memiliki gambaran yang lebih baik tentang langkah mana yang mencegah kueri Anda terlipat.