แชร์ผ่าน


การทําความเข้าใจการพับด้วยการวินิจฉัยคิวรี

หนึ่งในเหตุผลที่พบบ่อยที่สุดในการใช้การวินิจฉัยคิวรีคือเพื่อให้มีความเข้าใจที่ดีขึ้นว่าการดําเนินการใดที่ Power Query 'ผลักลง' เพื่อดําเนินการโดยแหล่งข้อมูลส่วนหลัง ซึ่งเรียกอีกอย่างว่า 'การพับ' หากเราต้องการดูว่ามีอะไรพับ เราสามารถดูได้ว่าคิวรี 'เฉพาะเจาะจงที่สุด' หรือคิวรีใดที่ส่งไปยังแหล่งข้อมูลแบ็คเอนด์ เราสามารถดูสิ่งนี้ได้ทั้ง ODATA และ SQL

การดําเนินการที่อธิบายไว้ใน บทความ เกี่ยวกับการวินิจฉัยการบันทึกมีสี่สิ่ง:

  • เชื่อมต่อกับแหล่งข้อมูล
  • คว้าโต๊ะลูกค้า
  • กรองบทบาทรหัสลูกค้าเป็น "ตัวแทนฝ่ายขาย"
  • จัดกลุ่มตาม 'ประเทศ'

เนื่องจากตัวเชื่อมต่อ ODATA ไม่รองรับการพับ COUNT() ไปยังปลายทางในขณะนี้ และเนื่องจากปลายทางนี้ค่อนข้างจํากัดในการดําเนินการเช่นกัน เราจึงไม่คาดหวังว่าขั้นตอนสุดท้ายนั้นจะพับ ในทางกลับกันการกรองนั้นค่อนข้างเล็กน้อย นี่คือสิ่งที่เราเห็นหากเราดูแบบสอบถามที่เฉพาะเจาะจงที่สุดที่ปล่อยออกมาข้างต้น:

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

เราจะเห็นว่าเรากําลังกรองตารางสําหรับ ContactTitle ที่เท่ากับ 'ตัวแทนขาย' และเราส่งคืนเพียงสองคอลัมน์ - รหัสลูกค้าและประเทศ แน่นอนว่าจําเป็นต้องใช้ประเทศสําหรับการดําเนินการจัดกลุ่ม ซึ่งเนื่องจากไม่ได้ดําเนินการโดยตําแหน่งข้อมูล ODATA จะต้องดําเนินการในเครื่อง เราสามารถสรุปได้ว่าอะไรพับและไม่พับที่นี่

ในทํานองเดียวกันหากเราดูแบบสอบถามเฉพาะและแบบสอบถามสุดท้ายที่ปล่อยออกมาในการวินิจฉัย SQL เราจะเห็นบางสิ่งบางอย่างที่แตกต่างออกไปเล็กน้อย:

    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]

ที่นี่ เราจะเห็นว่า Power Query สร้างการเลือกย่อยที่ ContactTitle ถูกกรองเป็น 'ตัวแทนขาย' จากนั้นจัดกลุ่มตามประเทศในการเลือกย่อยนี้ การดําเนินงานทั้งหมดของเราถูกพับ

เมื่อใช้การวินิจฉัยแบบสอบถามเราสามารถตรวจสอบได้ว่าการดําเนินการประเภทใดที่พับแล้วในอนาคตเราหวังว่าจะทําให้ความสามารถนี้ใช้งานได้ง่ายขึ้น