Bagikan melalui


Mereferensikan kueri Power Query

Artikel ini menargetkan Anda sebagai pemodel data yang bekerja dengan Power BI Desktop. Ini memberi Anda panduan saat menentukan kueri Power Query yang mereferensikan kueri lain.

Mari kita perjelas apa artinya ini: Saat kueri mereferensikan kueri kedua, langkah-langkah dalam kueri kedua seolah-olah digabungkan dengan, dan dijalankan sebelumnya, langkah-langkah dalam kueri pertama.

Pertimbangkan beberapa kueri: Query1 sumber data dari layanan web, dan bebannya dinonaktifkan. Query2, Query3, dan Query4 mereferensikan Query1, dan outputnya dimuat ke model data.

Diagram memperlihatkan tampilan Dependensi Kueri, menampilkan kueri yang dijelaskan dalam paragraf sebelumnya.

Saat model data direfresh, sering diasumsikan bahwa Power Query mengambil hasil Query1, dan digunakan kembali oleh kueri yang direferensikan. Pemikiran ini tidak benar. Bahkan, Power Query menjalankan Query2, Query3, dan Query4 secara terpisah.

Anda dapat berpikir bahwa Query2 memiliki langkah-langkah Query1 yang disematkan ke dalamnya. Ini juga berlaku untuk Query3 dan Query4. Diagram berikut menyajikan gambaran yang lebih jelas tentang bagaimana kueri dijalankan.

Diagram memperlihatkan versi tampilan Dependensi Kueri yang dimodifikasi, menampilkan Kueri 2, Kueri 3, dan Kueri 4.

Query1 dijalankan tiga kali. Beberapa eksekusi dapat mengakibatkan refresh data lambat dan berdampak negatif pada sumber data.

Penggunaan fungsi Table.Buffer di Query1 tidak akan menghilangkan pengambilan data tambahan. Fungsi ini menyangga tabel ke memori, dan tabel yang di-buffer hanya dapat digunakan dalam eksekusi kueri yang sama. Jadi, dalam contoh, jika Query1 dibuffer saat Query2 dijalankan, data yang dibuffer tidak dapat digunakan saat Query3 dan Query4 dijalankan. Mereka sendiri akan menyangga data dua kali lebih banyak. (Hasil ini sebenarnya dapat menambah performa negatif, karena tabel akan disangga oleh setiap kueri referensi.)

Catatan

Arsitektur penembolokan Power Query kompleks, dan itu bukan fokus dari artikel ini. Power Query dapat menyimpan data dalam cache yang diambil dari sumber data. Namun, saat menjalankan kueri, mungkin mengambil data dari sumber data lebih dari sekali.

Rekomendasi

Umumnya, kami menyarankan Anda mereferensikan kueri untuk menghindari duplikasi logika di seluruh kueri Anda. Namun, seperti yang dijelaskan dalam artikel ini, pendekatan desain ini dapat berkontribusi pada refresh data yang lambat dan sumber data yang kelebihan beban.

Sebaiknya Anda membuat aliran data sebagai gantinya. Menggunakan aliran data dapat meningkatkan waktu refresh data dan mengurangi dampak pada sumber data Anda.

Anda dapat mendesain aliran data untuk merangkum data sumber dan transformasi. Karena aliran data adalah penyimpanan data yang bertahan dalam layanan Power BI, pengambilan datanya cepat. Jadi, meskipun kueri referensi menghasilkan beberapa permintaan untuk aliran data, waktu refresh data dapat ditingkatkan.

Dalam contoh, jika Query1 didesain ulang sebagai entitas aliran data, Query2, Query3, dan Query4 dapat menggunakannya sebagai sumber data. Dengan desain ini, entitas yang bersumber dari Query1 akan dievaluasi hanya sekali.

Untuk informasi selengkapnya tentang dokumen resmi ini, lihat sumber daya berikut: