Mengapa kueri saya berjalan beberapa kali?
Saat Anda melakukan refresh di Power Query, ada banyak hal yang dilakukan di belakang layar untuk mencoba memberi Anda pengalaman pengguna yang lancar, dan untuk menjalankan kueri Anda secara efisien dan aman. Namun, dalam beberapa kasus Anda mungkin melihat bahwa beberapa permintaan sumber data dipicu oleh Power Query saat data di-refresh. Terkadang permintaan ini normal, tetapi di lain waktu mereka dapat dicegah.
Bagian berikut ini menjelaskan beberapa instans saat Power Query dapat mengirim beberapa permintaan ke sumber data.
Konektor dapat melakukan beberapa panggilan ke sumber data karena berbagai alasan, termasuk metadata, penembolokan hasil, penomoran halaman, dan sebagainya. Perilaku ini normal dan dirancang untuk bekerja seperti itu.
Beberapa permintaan ke sumber data yang sama dapat terjadi jika beberapa kueri menarik dari sumber data tersebut. Permintaan ini dapat terjadi bahkan dalam kasus di mana hanya satu kueri yang mereferensikan sumber data. Jika satu atau beberapa kueri lainnya mereferensikan kueri tersebut, maka setiap kueri—bersama dengan semua kueri yang bergantung padanya—dievaluasi secara independen.
Di lingkungan desktop, satu refresh semua tabel dalam model data dijalankan menggunakan satu cache bersama. Penembolokan dapat mengurangi kemungkinan beberapa permintaan ke sumber data yang sama, karena satu kueri dapat memperoleh manfaat dari permintaan yang sama yang telah dijalankan dan di-cache untuk kueri yang berbeda. Meskipun di sini, Anda bisa mendapatkan beberapa permintaan karena:
- Sumber data tidak di-cache (misalnya, file CSV lokal).
- Permintaan ke sumber data berbeda dari permintaan yang sudah di-cache karena operasi hilir (yang dapat mengubah pelipatan).
- Cache terlalu kecil (yang relatif tidak mungkin).
- Kueri berjalan pada waktu yang kira-kira sama.
Di lingkungan cloud, setiap kueri di-refresh menggunakan cache terpisahnya sendiri. Jadi kueri tidak dapat memperoleh manfaat dari permintaan yang sama yang telah di-cache untuk kueri yang berbeda.
Terkadang lapisan lipat Power Query dapat menghasilkan beberapa permintaan ke sumber data, berdasarkan operasi yang dilakukan di hilir. Dalam kasus seperti itu, Anda mungkin menghindari beberapa permintaan dengan menggunakan Table.Buffer
. Informasi selengkapnya: Buffer tabel Anda
Di Power BI Desktop, Analysis Services (AS) me-refresh data dengan menggunakan dua evaluasi: satu untuk mengambil skema—yang dilakukan AS dengan meminta baris nol—dan satu untuk mengambil data. Jika menghitung skema baris nol memerlukan pengambilan data, permintaan sumber data duplikat dapat terjadi.
Privasi data melakukan evaluasi sendiri dari setiap kueri untuk menentukan apakah kueri aman untuk dijalankan bersama-sama. Evaluasi ini terkadang dapat menyebabkan beberapa permintaan ke sumber data. Tanda telltale bahwa permintaan tertentu berasal dari analisis privasi data adalah bahwa permintaan tersebut memiliki kondisi "TOP 1000" (meskipun tidak semua sumber data mendukung kondisi tersebut). Secara umum, menonaktifkan privasi data—dengan asumsi itu dapat diterima—akan menghilangkan "TOP 1000" atau permintaan terkait privasi data lainnya selama refresh. Informasi selengkapnya: Menonaktifkan firewall privasi data
Mirip dengan evaluasi yang dilakukan untuk privasi data, editor Power Query secara default mengunduh pratinjau 1.000 baris pertama dari setiap langkah kueri. Mengunduh baris ini membantu memastikan pratinjau data siap ditampilkan segera setelah langkah dipilih, tetapi juga dapat menyebabkan permintaan sumber data duplikat. Informasi selengkapnya: Menonaktifkan analisis latar belakang
Berbagai tugas latar belakang editor Power Query juga dapat memicu permintaan sumber data tambahan (misalnya, analisis lipatan kueri, pembuatan profil kolom, refresh otomatis pratinjau 1000 baris yang dipicu Power Query setelah memuat hasil ke Excel, dan sebagainya).
Anda dapat mengisolasi instans beberapa kueri dengan menonaktifkan bagian tertentu dari proses kueri untuk mengisolasi asal permintaan duplikat. Misalnya, jika Anda memulai:
- Di editor Power Query
- Dengan firewall dinonaktifkan
- Dengan analisis latar belakang dinonaktifkan
- Dengan pembuatan profil kolom dan tugas latar belakang lainnya dinonaktifkan
- [Opsional] Melakukan
Table.Buffer
Dalam contoh ini, Anda hanya memiliki satu evaluasi M yang terjadi saat Anda me-refresh pratinjau editor Power Query. Jika permintaan duplikat terjadi pada saat ini, maka permintaan tersebut entah bagaimana melekat dalam cara kueri ditulis. Jika tidak, dan jika Anda mengaktifkan pengaturan yang dijelaskan sebelumnya satu per satu, Anda kemudian dapat mengamati pada titik mana permintaan duplikat mulai terjadi.
Bagian berikut mendeskripsikan langkah ini lebih detail.
Anda tidak perlu menyambungkan kembali atau membuat ulang kueri Anda, cukup buka kueri yang ingin Anda uji di editor Power Query. Anda bisa menduplikasi kueri di editor jika Anda tidak ingin mengacaukan kueri yang sudah ada.
Langkah selanjutnya adalah menonaktifkan firewall privasi data. Langkah ini mengasumsikan Anda tidak khawatir tentang kebocoran data antar sumber, sehingga menonaktifkan firewall privasi data dapat dilakukan menggunakan opsi Selalu abaikan Tingkat Privasi yang dijelaskan di Atur Gabungan Cepat di Excel atau menggunakan opsi Abaikan tingkat Privasi dan berpotensi meningkatkan pengaturan performa yang dijelaskan di Tingkat privasi Power BI Desktop di Power BI Desktop.
Pastikan untuk membatalkan langkah ini sebelum memulai kembali pengujian normal.
Langkah selanjutnya adalah menonaktifkan analisis latar belakang. Analisis latar belakang dikontrol oleh pratinjau Izinkan data diunduh di pengaturan latar belakang yang dijelaskan di Menonaktifkan refresh latar belakang Power Query untuk Power BI. Anda juga bisa menonaktifkan opsi ini di Excel.
Secara opsional, Anda juga dapat menggunakan Table.Buffer
untuk memaksa semua data dibaca, yang meniru apa yang terjadi selama beban. Untuk digunakan Table.Buffer
di editor Power Query:
Di bilah rumus editor Power Query, pilih tombol fx untuk menambahkan langkah baru.
Di bilah rumus, kelilingi nama langkah sebelumnya dengan Table.Buffer(<nama langkah sebelumnya ada di sini>). Misalnya, jika langkah sebelumnya diberi nama
Source
, bilah rumus akan menampilkan= Source
. Edit langkah di bilah rumus untuk mengatakan= Table.Buffer(Source)
.
Informasi selengkapnya: Table.Buffer
Untuk menjalankan pengujian, lakukan refresh di editor Power Query.