Rencana kueri untuk Power Query (Pratinjau)
Rencana kueri untuk Power Query adalah fitur yang menyediakan tampilan evaluasi kueri Anda yang lebih baik. Ini berguna untuk membantu menentukan mengapa kueri tertentu mungkin tidak dilipat pada langkah tertentu.
Melalui contoh praktis, artikel ini akan menunjukkan kasus penggunaan utama dan manfaat potensial menggunakan fitur rencana kueri untuk meninjau langkah-langkah kueri Anda. Contoh yang digunakan dalam artikel ini telah dibuat menggunakan database sampel AdventureWorksLT untuk Azure SQL Server, yang dapat Anda unduh dari database sampel AdventureWorks.
Catatan
Fitur rencana kueri untuk Power Query hanya tersedia di Power Query Online.
Artikel ini telah dibagi dalam serangkaian langkah yang direkomendasikan untuk menginterpretasikan rencana kueri. Langkah-langkah ini adalah:
- Tinjau indikator pelipatan kueri.
- Pilih langkah kueri untuk meninjau rencana kuerinya.
- Terapkan perubahan pada kueri Anda.
Gunakan langkah-langkah berikut untuk membuat kueri di lingkungan Power Query Online Anda sendiri.
Dari Power Query - Pilih sumber data, pilih Kueri kosong.
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"
Ubah
servername
dandatabase
dengan nama yang benar untuk lingkungan Anda sendiri.(Opsional) Jika Anda mencoba menyambungkan ke server dan database untuk lingkungan lokal, pastikan untuk mengonfigurasi gateway untuk lingkungan tersebut.
Pilih Selanjutnya.
Di Editor Power Query, pilih Konfigurasikan koneksi dan berikan kredensial ke sumber data Anda.
Catatan
Untuk informasi selengkapnya tentang menyambungkan ke SQL Server, buka database SQL Server.
Setelah mengikuti langkah-langkah ini, kueri Anda akan terlihat seperti yang ada di gambar berikut.
Kueri ini tersambung ke tabel SalesOrderHeader, dan memilih beberapa kolom dari lima pesanan terakhir dengan nilai TotalDue di atas 1000.
Catatan
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 pengetahuan yang baik tentang pelipatan kueri sebelum membaca rencana kueri. Untuk mempelajari selengkapnya tentang pelipatan kueri, buka Dasar-dasar pelipatan kueri.
Catatan
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.
Untuk contoh ini, satu-satunya langkah yang tidak dapat dilipat adalah Baris bawah yang disimpan, yang mudah diidentifikasi melalui indikator langkah yang 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.
Anda telah mengidentifikasi langkah Baris bawah yang disimpan sebagai langkah yang menarik karena tidak dilipat kembali ke sumber data. Klik kanan langkah dan pilih opsi Tampilkan paket Kueri. Tindakan ini menampilkan dialog baru yang berisi diagram untuk rencana kueri langkah yang dipilih.
Power Query mencoba mengoptimalkan kueri Anda dengan memanfaatkan evaluasi malas dan pelipatan kueri, seperti yang 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 dan dalam hal ini adalah 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 Paskan untuk melihat dari bilah ini digunakan untuk lebih menghargai simpul.
Catatan
Rencana kueri mewakili rencana yang dioptimalkan. Saat mesin mengevaluasi kueri, mesin mencoba melipat semua operator ke sumber data. Dalam beberapa kasus, bahkan mungkin melakukan beberapa penyortirusan ulang internal langkah-langkah untuk memaksimalkan pelipatan. Dengan mengingat hal ini, simpul/operator yang tersisa dalam rencana kueri yang dioptimalkan ini biasanya berisi kueri sumber data "terlipat" dan operator apa pun yang tidak dapat dilipat dan dievaluasi secara lokal.
Anda dapat mengidentifikasi simpul dalam diagram ini sebagai dua grup:
- Simpul yang dilipat: Simpul ini dapat berupa
Value.NativeQuery
simpul atau "sumber data" sepertiSql.Database
. Ini juga dapat diidentifikasi dengan jarak jauh label di bawah nama fungsinya. - Simpul yang tidak dilipat: Operator tabel lain, seperti
Table.SelectRows
, ,Table.SelectColumns
dan fungsi lain yang tidak dapat dilipat. Ini juga dapat diidentifikasi dengan label Pemindaian penuh dan Streaming.
Gambar berikut menunjukkan simpul yang dilipat di dalam persegi panjang merah. Simpul lainnya tidak dapat dilipat kembali ke sumber data. Anda harus meninjau sisa simpul karena tujuannya adalah mencoba melipat kembali simpul tersebut ke sumber data.
Anda dapat memilih Tampilkan detail di bagian bawah beberapa simpul untuk menampilkan informasi yang diperluas. Misalnya, detail simpul Value.NativeQuery
menunjukkan kueri asli (di SQL) yang akan dikirim ke sumber data.
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 akan dikueri dari tabel SalesOrderHeader dan kemudian bagaimana tabel tersebut akan 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.
Catatan
Operator mungkin tidak sama persis dengan fungsi yang digunakan dalam skrip kueri.
Tinjau simpul yang tidak dilipat dan pertimbangkan tindakan untuk membuat transformasi Anda terlipat
Anda sekarang telah menentukan simpul mana yang tidak dapat dilipat dan akan dievaluasi secara lokal. Kasus ini hanya memiliki simpul Table.LastN
, tetapi dalam skenario lain bisa memiliki lebih banyak lagi.
Tujuannya adalah untuk menerapkan perubahan pada kueri Anda sehingga langkah tersebut dapat dilipat. 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 klausul TOP dan ORDER BY di SQL. Karena tidak ada klausa BOTTOM di SQL, Table.LastN
transformasi di PowerQuery tidak dapat diterjemahkan ke dalam SQL. Anda dapat menghapus Table.LastN
langkah dan menggantinya dengan:
- Mengurutkan langkah turun menurut kolom SalesOrderID dalam tabel, karena kolom ini menentukan urutan mana yang masuk terlebih dahulu dan yang telah dimasukkan terakhir.
- Pilih lima baris teratas karena tabel telah diurutkan, transformasi ini mencapai hal yang sama seolah-olah itu adalah baris bawah yang disimpan (
Table.LastN
).
Alternatif ini setara dengan kueri asli. Meskipun alternatif ini secara teori tampaknya baik, Anda perlu membuat perubahan untuk melihat apakah alternatif ini akan membuat simpul ini sepenuhnya dilipat kembali ke sumber data.
Terapkan alternatif yang dibahas di bagian sebelumnya:
Tutup dialog rencana kueri dan kembali ke Editor Power Query.
Hapus langkah Baris bawah yang disimpan.
Urutkan kolom SalesOrderID dalam urutan turun.
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.
Setelah menerapkan perubahan, periksa kembali indikator pelipatan kueri dan lihat apakah indikator tersebut memberi Anda indikator terlipat.
Sekarang saatnya untuk meninjau rencana kueri dari langkah terakhir, yang sekarang Adalah 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.
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 akan dilakukan secara lokal.
Anda dapat menyesuaikan kode Anda untuk melihat dampak yang dialihkannya dalam kueri Anda. Dengan menggunakan indikator pelipatan kueri, Anda juga akan memiliki gambaran yang lebih baik tentang langkah-langkah mana yang mencegah kueri Anda melipat.