Bagikan melalui


Memahami pelipatan dengan Diagnostik Kueri

Salah satu alasan paling umum untuk menggunakan Diagnostik Kueri adalah memiliki pemahaman yang lebih baik tentang operasi apa yang 'diteruskan ke bawah' oleh Power Query, yang dilakukan oleh sumber data back-end, yang juga dikenal sebagai 'pemrosesan lipat'. Jika kita ingin melihat apa yang dilipat, kita dapat melihat apa kueri 'paling spesifik', atau kueri, yang dikirim ke sumber data back-end. Kita dapat melihat ini untuk ODATA dan SQL.

Operasi yang dijelaskan dalam artikel tentang Diagnostik Perekaman pada dasarnya melakukan empat hal:

  • Menyambungkan ke sumber data
  • Mengambil tabel pelanggan
  • Memfilter peran ID Pelanggan menjadi 'Perwakilan Penjualan'
  • Grup menurut 'Negara'

Karena konektor ODATA saat ini tidak mendukung folding COUNT() ke titik akhir, dan karena titik akhir ini agak terbatas dalam operasinya juga, kami tidak mengharapkan langkah akhir untuk dilipat. Di sisi lain, pemfilteran relatif sepele. Inilah yang kita lihat jika kita memperhatikan kueri yang paling spesifik yang ditunjukkan di atas:

Request:
GET https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry HTTP/1.1

Response:
https://services.odata.org/V4/Northwind/Northwind.svc/Customers?$filter=ContactTitle eq 'Sales Representative'&$select=CustomerID%2CCountry
HTTP/1.1 200 OK

Kami dapat melihat bahwa kami memfilter tabel untuk ContactTitle yang sama dengan 'Perwakilan Penjualan', dan kami hanya menampilkan dua kolom--ID Pelanggan dan Negara. Negara, tentu saja, diperlukan untuk operasi pengelompokan. Karena operasi ini tidak dilakukan oleh titik akhir ODATA, maka harus dilakukan secara lokal. Kita bisa menyimpulkan apa yang terlipat dan yang tidak terlipat di sini.

Demikian pula, jika kita melihat kueri spesifik dan akhir yang dipancarkan dalam diagnostik SQL, kita melihat sesuatu yang sedikit berbeda:

    count(1) as [Count]
from 
(
    select [_].[Country]
    from [dbo].[Customers] as [_]
    where [_].[ContactTitle] = 'Sales Representative' and [_].[ContactTitle] is not null
) as [rows]
group by [Country]

Di sini, kita dapat melihat bahwa Power Query membuat sub-pemilihan di mana ContactTitle difilter ke 'Perwakilan Penjualan', lalu mengelompokkan berdasarkan Negara pada sub-pemilihan ini. Semua operasi kami berhenti.

Dengan menggunakan Diagnostik Kueri, kita dapat memeriksa jenis operasi apa yang digabungkan--di masa depan, kami berharap dapat membuat kemampuan ini lebih mudah digunakan.