หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
แผนคิวรีสําหรับ Power Query เป็นคุณลักษณะที่ให้มุมมองการประเมินของคิวรีของคุณได้ดีขึ้น ซึ่งมีประโยชน์เพื่อช่วยในการกําหนดสาเหตุที่คิวรีเฉพาะอาจไม่พับในขั้นตอนใดขั้นตอนหนึ่ง
ในตัวอย่างที่ใช้ได้จริง บทความนี้แสดงให้เห็นถึงกรณีการใช้งานหลักและประโยชน์ที่อาจเกิดขึ้นจากการใช้คุณลักษณะแผนคิวรีเพื่อตรวจสอบขั้นตอนคิวรีของคุณ ตัวอย่างที่ใช้ในบทความนี้ถูกสร้างขึ้นโดยใช้ฐานข้อมูลตัวอย่าง AdventureWorksLT สําหรับ Azure SQL Server ซึ่งคุณสามารถดาวน์โหลดได้จากฐานข้อมูลตัวอย่าง AdventureWorks
โน้ต
คุณลักษณะแผนคิวรีสําหรับ Power Query จะพร้อมใช้งานใน Power Query ออนไลน์เท่านั้น
บทความนี้จะถูกแบ่งออกเป็นชุดของขั้นตอนที่แนะนําเพื่อแปลแผนคิวรี ขั้นตอนเหล่านี้คือ:
- ตรวจสอบตัวบ่งชี้การพับคิวรี
- เลือกขั้นตอนคิวรีเพื่อตรวจสอบแผนคิวรี
- นําการเปลี่ยนแปลงไปใช้กับคิวรีของคุณ
ใช้ขั้นตอนต่อไปนี้เพื่อสร้างคิวรีในสภาพแวดล้อม Power Query Online ของคุณเอง
จาก Power Query - เลือกแหล่งข้อมูล เลือก คิวรีว่าง
แทนที่สคริปต์ของคิวรีที่ว่างเปล่าด้วยคิวรีต่อไปนี้
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"เปลี่ยน
servernameและdatabaseด้วยชื่อที่ถูกต้องสําหรับสภาพแวดล้อมของคุณเอง(ไม่บังคับ) ถ้าคุณกําลังพยายามเชื่อมต่อกับเซิร์ฟเวอร์และฐานข้อมูลสําหรับสภาพแวดล้อมภายในองค์กร ตรวจสอบให้แน่ใจว่าได้กําหนดค่าเกตเวย์สําหรับสภาพแวดล้อมนั้นแล้ว
เลือก ถัดไป
ในตัวแก้ไข Power Query เลือก กําหนดค่า การเชื่อมต่อ และใส่ข้อมูลประจําตัวไปยังแหล่งข้อมูลของคุณ
โน้ต
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการเชื่อมต่อไปยัง SQL Server ให้ไปที่ ฐานข้อมูล SQL Server
หลังจากทําตามขั้นตอนเหล่านี้ คิวรีของคุณจะมีลักษณะเหมือนกับในรูปต่อไปนี้
คิวรีนี้เชื่อมต่อกับตาราง SalesOrderHeader และเลือกคอลัมน์สองสามคอลัมน์จากห้าใบสั่งล่าสุดที่มีค่า TotalDue สูงกว่า 1000
โน้ต
บทความนี้ใช้ตัวอย่างแบบง่ายเพื่อแสดงคุณลักษณะนี้ แต่แนวคิดที่อธิบายไว้ในบทความนี้ใช้กับคิวรีทั้งหมด เราขอแนะนําให้คุณมีความรู้ที่ดีเกี่ยวกับการพับคิวรีก่อนที่จะอ่านแผนคิวรี เมื่อต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ Query Folding ไปที่ ข้อมูลพื้นฐานการพับคิวรี
1. ตรวจสอบตัวบ่งชี้การพับคิวรี
โน้ต
ก่อนอ่านส่วนนี้ เราขอแนะนําให้คุณตรวจทานบทความเกี่ยวกับ ตัวบ่งชี้ Query Folding
ขั้นตอนแรกของคุณในกระบวนการนี้คือการตรวจสอบคิวรีของคุณ และให้ความสนใจกับตัวบ่งชี้ Query Folding อย่างใกล้ชิด เป้าหมายคือการตรวจสอบขั้นตอนที่มีการทําเครื่องหมายว่าไม่ได้พับ จากนั้นคุณสามารถดูได้ว่าการเปลี่ยนแปลงคิวรีโดยรวมอาจทําให้การแปลงเหล่านั้นพับอย่างสมบูรณ์หรือไม่
สําหรับตัวอย่างนี้ ขั้นตอนเดียวที่ไม่สามารถพับได้คือ แถวล่างสุดที่ Keptซึ่งง่ายต่อการระบุผ่าน ตัวบ่งชี้ขั้นตอนที่ไม่สามารถพับ ได้ ขั้นตอนนี้เป็นขั้นตอนสุดท้ายของคิวรี
เป้าหมายตอนนี้คือการตรวจสอบขั้นตอนนี้และทําความเข้าใจสิ่งที่ถูกพับกลับไปยังแหล่งข้อมูลและสิ่งที่ไม่สามารถพับได้
2. เลือกขั้นตอนคิวรีเพื่อตรวจสอบแผนคิวรี
คุณระบุ แถวล่างที่เก็บไว้ เป็นขั้นตอนที่น่าสนใจเนื่องจากไม่ได้พับกลับไปยังแหล่งข้อมูล คลิกขวาที่ขั้นตอนและเลือกตัวเลือก ดูแผนคิวรี การดําเนินการนี้แสดงกล่องโต้ตอบใหม่ที่มีไดอะแกรมสําหรับแผนการคิวรีของขั้นตอนที่เลือก
Power Query พยายามปรับคิวรีของคุณให้เหมาะสมโดยใช้ประโยชน์จากการประเมินแบบขี้เกียจและการพับคิวรี ดังที่กล่าวไว้ใน พื้นฐานการพับคิวรี แผนคิวรีนี้แสดงคําแปลที่เหมาะสมที่สุดของคิวรี M ของคุณลงในคิวรีดั้งเดิมที่ถูกส่งไปยังแหล่งข้อมูล นอกจากนี้ยังรวมถึงการแปลงใดๆ ที่ดําเนินการโดยกลไกจัดการ Power Query ลําดับที่โหนดปรากฏตามลําดับคิวรีของคุณโดยเริ่มต้นจากขั้นตอนสุดท้ายหรือผลลัพธ์ของคิวรีคุณ ซึ่งจะแสดงอยู่ทางด้านซ้ายสุดของแผนภาพ ในกรณีนี้ เป็นโหนด Table.LastN ที่แสดงถึง ที่เก็บไว้แถวล่าง ขั้นตอน
ที่ด้านล่างของกล่องโต้ตอบ จะมีแถบที่มีไอคอนที่ช่วยให้คุณขยายหรือย่อมุมมองแผนคิวรี และปุ่มอื่นๆ เพื่อช่วยให้คุณจัดการมุมมองได้ สําหรับรูปภาพก่อนหน้า ตัวเลือก พอดีเพื่อดู จากแถบนี้ถูกใช้เพื่อชื่นชมโหนดได้ดียิ่งขึ้น
โน้ต
แผนคิวรีแสดงแผนการที่ปรับให้เหมาะสมแล้ว เมื่อกลไกจัดการกําลังประเมินคิวรี จะพยายามพับตัวดําเนินการทั้งหมดลงในแหล่งข้อมูล ในบางกรณี อาจยังสามารถจัดลําดับขั้นตอนภายในใหม่เพื่อเพิ่มการพับได้สูงสุด เมื่อคํานึงถึงกระบวนการนี้ โหนด/ตัวดําเนินการที่ทิ้งไว้ในแผนคิวรีที่ปรับให้เหมาะสมนี้มักจะประกอบด้วยคิวรีแหล่งข้อมูล "พับ" ตัวดําเนินการใด ๆ ที่ไม่สามารถพับได้จะถูกประเมินภายในเครื่อง
ระบุโหนดพับจากโหนดอื่น ๆ
คุณสามารถระบุโหนดในไดอะแกรมนี้เป็นสองกลุ่ม:
- โหนด พับ: โหนดนี้สามารถเป็นโหนด
Value.NativeQueryหรือ "แหล่งข้อมูล" เช่นSql.Databaseโหนดเหล่านี้ยังสามารถระบุได้ด้วยป้ายชื่อ ระยะไกลภายใต้ชื่อฟังก์ชัน -
โหนดที่ไม่พับ: ตัวดําเนินการตารางอื่น ๆ เช่น
Table.SelectRowsTable.SelectColumnsและฟังก์ชันอื่น ๆ ที่ไม่สามารถพับได้ โหนดเหล่านี้ยังสามารถระบุได้ด้วยป้ายชื่อ สแกนแบบเต็ม และ การสตรีม
รูปต่อไปนี้แสดงโหนดที่ถูกพับภายในสี่เหลี่ยมผืนผ้าสีแดง ส่วนที่เหลือของโหนดไม่สามารถพับกลับไปยังแหล่งข้อมูลได้ คุณจําเป็นต้องตรวจสอบส่วนที่เหลือของโหนดเนื่องจากเป้าหมายคือพยายามให้โหนดเหล่านั้นพับกลับไปยังแหล่งข้อมูล
คุณสามารถเลือกดู รายละเอียด ที่ด้านล่างของบางโหนดเพื่อแสดงข้อมูลเพิ่มเติม ตัวอย่างเช่น รายละเอียดของโหนด Value.NativeQuery แสดงคิวรีดั้งเดิม (ใน SQL) ที่ถูกส่งไปยังแหล่งข้อมูล
คิวรีที่แสดงที่นี่อาจไม่ใช่คิวรีเดียวกันทุกประการที่ส่งไปยังแหล่งข้อมูล แต่เป็นการประมาณที่ดี สําหรับกรณีนี้ จะช่วยให้คุณทราบว่าคอลัมน์ใดจะถูกคิวรีจากตาราง SalesOrderHeader จากนั้น วิธีการกรองตารางนั้นโดยใช้เขตข้อมูล TotalDue เพื่อรับเฉพาะแถวที่ค่าสําหรับเขตข้อมูลนั้นมีขนาดใหญ่กว่า 1000 โหนดที่อยู่ถัดจากโหนดดังกล่าว Table.LastNจะถูกคํานวณภายในเครื่องโดยกลไกจัดการ Power Query เนื่องจากไม่สามารถพับได้
โน้ต
ตัวดําเนินการอาจไม่ตรงกับฟังก์ชันที่ใช้ในสคริปต์ของคิวรี
ตรวจสอบโหนดที่ไม่มีการพับและพิจารณาการดําเนินการเพื่อทําให้การแปลงของคุณถูกพับ
คุณได้พิจารณาแล้วว่าโหนดใดที่ไม่สามารถพับได้และสามารถประเมินได้ภายในเครื่อง กรณีนี้มีโหนด Table.LastN เท่านั้น แต่ในสถานการณ์อื่น ๆ อาจมีอีกมากมาย
เป้าหมายคือการใช้การเปลี่ยนแปลงกับคิวรีของคุณเพื่อให้สามารถพับขั้นตอนได้ การเปลี่ยนแปลงบางอย่างที่คุณอาจใช้อาจมีตั้งแต่การจัดเรียงขั้นตอนของคุณใหม่เพื่อใช้ตรรกะทางเลือกกับคิวรีของคุณที่ชัดเจนมากขึ้นกับแหล่งข้อมูล ซึ่งไม่ได้หมายความว่าคิวรีทั้งหมดและการดําเนินการทั้งหมดสามารถพับได้โดยใช้การเปลี่ยนแปลงบางอย่าง แต่เป็นแนวทางปฏิบัติที่ดีในการกําหนดผ่านการทดลองใช้และข้อผิดพลาดหากสามารถพับคิวรีของคุณกลับได้
เนื่องจากแหล่งข้อมูลเป็นฐานข้อมูล SQL Server ถ้าเป้าหมายคือการดึงข้อมูลคําสั่งซื้อห้ารายการสุดท้ายจากตาราง ดังนั้นทางเลือกที่ดีควรใช้ประโยชน์จาก TOP และ ORDER BY ส่วนคําสั่งใน SQL เนื่องจากไม่มีส่วนคําสั่ง BOTTOM ใน SQL การแปลง Table.LastN ใน PowerQuery จึงไม่สามารถแปลเป็น SQL ได้ คุณสามารถลบขั้นตอน Table.LastN ออกและแทนที่ด้วย:
- ขั้นตอนการเรียงลําดับจากมากไปหาน้อย โดยคอลัมน์ SalesOrderID ในตาราง เนื่องจากคอลัมน์นี้จะกําหนดลําดับก่อนและลําดับที่ป้อนเข้าไปล่าสุด
-
เลือกห้าแถวบนสุด นับตั้งแต่มีการเรียงลําดับตาราง การแปลงนี้จะทํางานให้สําเร็จแบบเดียวกับ แถวล่างสุด Kept (
Table.LastN)
ตัวเลือกนี้เทียบเท่ากับคิวรีเดิม ในขณะที่ดูเหมือนว่าทางเลือกนี้ในทฤษฎีนี้ดี คุณต้องทําการเปลี่ยนแปลงเพื่อดูว่าตัวเลือกนี้ทําให้โหนดนี้สามารถพับกลับไปยังแหล่งข้อมูลได้อย่างสมบูรณ์หรือไม่
3. นําการเปลี่ยนแปลงไปใช้กับคิวรีของคุณ
ใช้ตัวเลือกที่อธิบายไว้ในส่วนก่อนหน้า:
ปิดกล่องโต้ตอบแผนคิวรีและย้อนกลับไปยังตัวแก้ไข Power Query
ลบ แถวล่างสุด เก็บไว้
เรียงลําดับคอลัมน์ SalesOrderID จากมากไปหาน้อย
เลือกไอคอนตารางที่มุมบนซ้ายของมุมมองการแสดงตัวอย่างข้อมูล และเลือกตัวเลือกที่อ่านเก็บแถวบนสุด ในกล่องโต้ตอบ ส่งตัวเลขห้าเป็นอาร์กิวเมนต์ และกดตกลง
หลังจากใช้การเปลี่ยนแปลงแล้ว ให้ตรวจสอบตัวบ่งชี้การพับคิวรีอีกครั้งและดูว่าจะให้ตัวบ่งชี้แบบพับแก่คุณหรือไม่
ตอนนี้ได้เวลาตรวจทานแผนคิวรีของขั้นตอนสุดท้าย ซึ่งตอนนี้คือ เก็บแถวบนสุด ตอนนี้มีเพียงโหนดพับเท่านั้น เลือก ดูรายละเอียด ภายใต้ Value.NativeQuery เพื่อตรวจสอบคิวรีที่จะส่งไปยังฐานข้อมูล
ในขณะที่บทความนี้กําลังแนะนําทางเลือกที่จะนําไปใช้ แต่เป้าหมายหลักคือให้คุณเรียนรู้วิธีการใช้แผนคิวรีเพื่อตรวจสอบการพับคิวรี บทความนี้ยังให้การมองเห็นของสิ่งที่จะถูกส่งไปยังแหล่งข้อมูลของคุณ และสิ่งที่ทําการแปลงภายในเครื่อง
คุณสามารถปรับเปลี่ยนโค้ดของคุณเพื่อดูผลกระทบที่มีในคิวรีของคุณได้ เมื่อใช้ตัวบ่งชี้การพับคิวรี คุณจะมีความคิดที่ดีขึ้นว่าขั้นตอนใดที่ทําให้คิวรีของคุณไม่สามารถพับได้