แชร์ผ่าน


การพับคิวรีบนคิวรีในระบบ

ใน Power Query คุณสามารถกําหนดคิวรีในระบบและเรียกใช้กับแหล่งข้อมูลของคุณได้ บทความ นําเข้าข้อมูลจากฐานข้อมูลโดยใช้คิวรี่ ของฐานข้อมูลแบบดั้งเดิม จะอธิบายวิธีการทํากระบวนการนี้กับแหล่งข้อมูลหลายแหล่ง แต่การใช้กระบวนการที่อธิบายไว้ในบทความคิวรีของคุณจะไม่ใช้ประโยชน์จากการพับคิวรีใด ๆ จากขั้นตอนคิวรีที่ตามมา

บทความนี้แสดงวิธีการทางเลือกในการสร้างคิวรีดั้งเดิมกับแหล่งข้อมูลของคุณโดยใช้ ฟังก์ชัน Value.NativeQuery และทําให้กลไกการพับคิวรีใช้งานได้สําหรับขั้นตอนต่อไปของคิวรีของคุณ

หมายเหตุ

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

ตัวเชื่อมต่อข้อมูลที่สนับสนุน

วิธีการที่อธิบายไว้ในส่วนถัดไปนําไปใช้กับตัวเชื่อมต่อข้อมูลต่อไปนี้:

เชื่อมต่อกับเป้าหมายจากแหล่งข้อมูล

หมายเหตุ

เมื่อต้องการแสดงกระบวนการนี้ บทความนี้ใช้ตัวเชื่อมต่อ SQL Server และ ฐานข้อมูลตัวอย่าง AdventureWorks2019 ประสบการณ์การใช้งานอาจแตกต่างจากตัวเชื่อมต่อไปยังตัวเชื่อมต่อ แต่บทความนี้แสดงพื้นฐานเกี่ยวกับวิธีการเปิดใช้งานความสามารถในการพับคิวรีผ่านคิวรีดั้งเดิมสําหรับตัวเชื่อมต่อที่ได้รับการสนับสนุน

เมื่อเชื่อมต่อกับแหล่งข้อมูล เป็นสิ่งสําคัญที่คุณเชื่อมต่อกับโหนดหรือระดับที่คุณต้องการดําเนินการคิวรีดั้งเดิมของคุณ สําหรับตัวอย่างในบทความนี้ โหนดนั้นคือระดับฐานข้อมูลภายในเซิร์ฟเวอร์

สกรีนช็อตของกล่องโต้ตอบการตั้งค่าการเชื่อมต่อสําหรับการเชื่อมต่อไปยังฐานข้อมูล AdventureWorks2019 บนอินสแตนซ์ภายในเครื่องของ SQL Server

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

จากรายการนี้ คุณจําเป็นต้องเลือกออบเจ็กต์ที่มีการเรียกใช้คิวรีดั้งเดิม (หรือที่เรียกว่าเป้าหมาย) สําหรับตัวอย่างนี้ วัตถุดังกล่าวคือระดับฐานข้อมูล

ที่หน้าต่างตัวนําทางใน Power Query ให้เลือกโหนดฐานข้อมูลในหน้าต่างตัวนําทางค้างไว้ (หรือคลิกขวา) ที่หน้าต่างตัวนําทาง และเลือกตัวเลือก แปลงข้อมูล การเลือกตัวเลือกนี้จะสร้างคิวรีใหม่สําหรับมุมมองโดยรวมของฐานข้อมูลของคุณ ซึ่งเป็นเป้าหมายที่คุณต้องการเรียกใช้คิวรีดั้งเดิมของคุณ

สกรีนช็อตของการเลือกข้อมูลที่ผู้ใช้คลิกขวาโหนดฐานข้อมูลในตัวนําทางโดยเน้นการแปลงข้อมูล

เมื่อคิวรีของคุณเข้าสู่ตัวแก้ไข Power Query เฉพาะขั้นตอนแหล่งข้อมูลเท่านั้นที่ควรแสดงในบานหน้าต่างขั้นตอนที่ใช้ ขั้นตอนนี้ประกอบด้วยตารางที่มีวัตถุที่พร้อมใช้งานทั้งหมดในฐานข้อมูลของคุณ คล้ายกับที่แสดงในหน้าต่างตัวนําทาง

สกรีนช็อตของคิวรีที่มีเฉพาะขั้นตอนต้นทางเท่านั้น

ใช้ฟังก์ชัน Value.NativeQuery

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

SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'

ขั้นตอนแรกคือการกําหนดเป้าหมายที่ถูกต้อง ซึ่งในกรณีนี้คือฐานข้อมูลที่เรียกใช้รหัส SQL เมื่อขั้นตอนมีเป้าหมายที่ถูกต้อง คุณสามารถเลือกขั้นตอนนั้น—ในกรณีนี้ แหล่งข้อมูล ใน ขั้นตอนที่ใช้—จากนั้นเลือก ปุ่ม fx ในแถบสูตรเพื่อเพิ่มขั้นตอนแบบกําหนดเองได้ ในตัวอย่างนี้ ให้ Source แทนที่สูตรด้วยสูตรต่อไปนี้:

Value.NativeQuery(Source, "SELECT DepartmentID, Name FROM HumanResources.Department WHERE GroupName = 'Research and Development'  ", null, [EnableFolding = true])

คอมโพเนนต์ที่สําคัญที่สุดของสูตรนี้คือการใช้ระเบียนที่เลือกได้สําหรับพารามิเตอร์ที่สี่ของฟังก์ชันที่มีเขตข้อมูลเรกคอร์ด EnableFolding ตั้งค่าเป็นจริง

สกรีนช็อตของสูตรขั้นตอนแบบกําหนดเองใหม่ที่มีการใช้ฟังก์ชัน Value.NativeQuery และคิวรี SQL ที่ชัดเจน

หมายเหตุ

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับฟังก์ชัน Value.NativeQuery ได้จาก บทความ เอกสารประกอบอย่างเป็นทางการ

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

คําสั่ง SQL นี้จะให้ผลลัพธ์เป็นตารางที่มีเพียงสามแถวและสองคอลัมน์เท่านั้น

สกรีนช็อตที่มีผลลัพธ์ของคิวรีดั้งเดิมที่ประเมินเทียบกับฐานข้อมูลเป้าหมาย

ทดสอบการพับคิวรี

เมื่อต้องการทดสอบการพับคิวรีของคุณ คุณสามารถลองใช้ตัวกรองกับคอลัมน์ใด ๆ ของคุณ และดูว่าตัวบ่งชี้ Query Folding ในส่วนขั้นตอนที่ใช้งานแสดงขั้นตอนแบบพับได้หรือไม่ สําหรับกรณีนี้ คุณสามารถกรองคอลัมน์ DepartmentID เพื่อให้มีค่าที่ไม่เท่ากับสองได้

สกรีนช็อตสาธิตวิธีการกรองคอลัมน์ DepartmentID ให้มีค่าที่ไม่เท่ากับสองเท่านั้น

หลังจากเพิ่มตัวกรองนี้ คุณสามารถตรวจสอบว่าตัวบ่งชี้การพับคิวรียังคงแสดงการพับคิวรีที่เกิดขึ้นในขั้นตอนนี้ใหม่

ขั้นตอนตัวกรองที่แสดงเป็นพับกลับไปยังแหล่งข้อมูลในส่วนขั้นตอนที่นําไปใช้

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

ในมุมมองแผนคิวรี คุณจะเห็นโหนดที่มีชื่อว่า Value.NativeQuery ที่มีไฮเปอร์ลิงก์ดูรายละเอียด คุณสามารถเลือกการเชื่อมโยงหลายมิตินี้เพื่อดูแบบสอบถามที่แน่นอนที่ถูกส่งไปยังฐานข้อมูล SQL Server

คิวรีดั้งเดิมจะถูกตัดคํารอบคําสั่ง SELECT อื่นเพื่อสร้างคิวรีย่อยของต้นฉบับ Power Query พยายามอย่างดีที่สุดในการสร้างคิวรีที่เหมาะสมที่สุด โดยกําหนดการแปลงที่ใช้และคิวรีในระบบของฐานข้อมูลที่มีให้

สกรีนช็อตของแผนคิวรีสําหรับขั้นตอนแถวที่กรองแล้ว

เคล็ดลับ

สําหรับสถานการณ์ที่คุณได้รับข้อผิดพลาดเนื่องจากไม่สามารถทําการพับคิวรีได้ เราขอแนะนําให้คุณลองตรวจสอบขั้นตอนของคุณในฐานะคิวรีย่อยของคิวรีในระบบเดิมของคุณเพื่อตรวจสอบดูว่าอาจมีไวยากรณ์หรือข้อขัดแย้งของบริบทหรือไม่