การพับคิวรีบนคิวรีในระบบ
ใน Power Query คุณสามารถกําหนดคิวรีในระบบและเรียกใช้กับแหล่งข้อมูลของคุณได้ บทความ นําเข้าข้อมูลจากฐานข้อมูลโดยใช้คิวรี่ ของฐานข้อมูลแบบดั้งเดิม จะอธิบายวิธีการทํากระบวนการนี้กับแหล่งข้อมูลหลายแหล่ง แต่การใช้กระบวนการที่อธิบายไว้ในบทความคิวรีของคุณจะไม่ใช้ประโยชน์จากการพับคิวรีใด ๆ จากขั้นตอนคิวรีที่ตามมา
บทความนี้แสดงวิธีการทางเลือกในการสร้างคิวรีดั้งเดิมกับแหล่งข้อมูลของคุณโดยใช้ ฟังก์ชัน Value.NativeQuery และทําให้กลไกการพับคิวรีใช้งานได้สําหรับขั้นตอนต่อไปของคิวรีของคุณ
หมายเหตุ
เราขอแนะนําให้คุณอ่านเอกสารประกอบเกี่ยวกับการ พับ คิวรีและ ตัวบ่งชี้ การพับคิวรีเพื่อทําความเข้าใจแนวคิดที่ใช้ในบทความนี้ได้ดียิ่งขึ้น
ตัวเชื่อมต่อข้อมูลที่สนับสนุน
วิธีการที่อธิบายไว้ในส่วนถัดไปนําไปใช้กับตัวเชื่อมต่อข้อมูลต่อไปนี้:
- Amazon Redshift
- Dataverse (เมื่อใช้การคํานวณขั้นสูง)
- Google BigQuery
- PostgreSQL
- SAP HANA
- เกล็ดหิมะ
- SQL Server
เชื่อมต่อกับเป้าหมายจากแหล่งข้อมูล
หมายเหตุ
เมื่อต้องการแสดงกระบวนการนี้ บทความนี้ใช้ตัวเชื่อมต่อ SQL Server และ ฐานข้อมูลตัวอย่าง AdventureWorks2019 ประสบการณ์การใช้งานอาจแตกต่างจากตัวเชื่อมต่อไปยังตัวเชื่อมต่อ แต่บทความนี้แสดงพื้นฐานเกี่ยวกับวิธีการเปิดใช้งานความสามารถในการพับคิวรีผ่านคิวรีดั้งเดิมสําหรับตัวเชื่อมต่อที่ได้รับการสนับสนุน
เมื่อเชื่อมต่อกับแหล่งข้อมูล เป็นสิ่งสําคัญที่คุณเชื่อมต่อกับโหนดหรือระดับที่คุณต้องการดําเนินการคิวรีดั้งเดิมของคุณ สําหรับตัวอย่างในบทความนี้ โหนดนั้นคือระดับฐานข้อมูลภายในเซิร์ฟเวอร์
หลังจากที่คุณกําหนดการตั้งค่าการเชื่อมต่อและใส่ข้อมูลประจําตัวสําหรับการเชื่อมต่อของคุณแล้ว กล่องโต้ตอบการนําทางสําหรับแหล่งข้อมูลของคุณจะเปิดขึ้น กล่องโต้ตอบการนําทางประกอบด้วยวัตถุทั้งหมดที่พร้อมใช้งานที่คุณสามารถเชื่อมต่อได้
จากรายการนี้ คุณจําเป็นต้องเลือกออบเจ็กต์ที่มีการเรียกใช้คิวรีดั้งเดิม (หรือที่เรียกว่าเป้าหมาย) สําหรับตัวอย่างนี้ วัตถุดังกล่าวคือระดับฐานข้อมูล
ที่หน้าต่างตัวนําทางใน 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 นี้จะให้ผลลัพธ์เป็นตารางที่มีเพียงสามแถวและสองคอลัมน์เท่านั้น
ทดสอบการพับคิวรี
เมื่อต้องการทดสอบการพับคิวรีของคุณ คุณสามารถลองใช้ตัวกรองกับคอลัมน์ใด ๆ ของคุณ และดูว่าตัวบ่งชี้ Query Folding ในส่วนขั้นตอนที่ใช้งานแสดงขั้นตอนแบบพับได้หรือไม่ สําหรับกรณีนี้ คุณสามารถกรองคอลัมน์ DepartmentID เพื่อให้มีค่าที่ไม่เท่ากับสองได้
หลังจากเพิ่มตัวกรองนี้ คุณสามารถตรวจสอบว่าตัวบ่งชี้การพับคิวรียังคงแสดงการพับคิวรีที่เกิดขึ้นในขั้นตอนนี้ใหม่
หากต้องการตรวจสอบเพิ่มเติมว่าคิวรีใดจะถูกส่งไปยังแหล่งข้อมูล คุณสามารถเลือกขั้นตอนแถวที่กรองแล้ว (หรือคลิกขวา) ค้างไว้ และเลือกตัวเลือก ดูแผนคิวรี เพื่อตรวจสอบแผนคิวรีสําหรับขั้นตอนนั้น
ในมุมมองแผนคิวรี คุณจะเห็นโหนดที่มีชื่อว่า Value.NativeQuery ที่มีไฮเปอร์ลิงก์ดูรายละเอียด คุณสามารถเลือกการเชื่อมโยงหลายมิตินี้เพื่อดูแบบสอบถามที่แน่นอนที่ถูกส่งไปยังฐานข้อมูล SQL Server
คิวรีดั้งเดิมจะถูกตัดคํารอบคําสั่ง SELECT อื่นเพื่อสร้างคิวรีย่อยของต้นฉบับ Power Query พยายามอย่างดีที่สุดในการสร้างคิวรีที่เหมาะสมที่สุด โดยกําหนดการแปลงที่ใช้และคิวรีในระบบของฐานข้อมูลที่มีให้
เคล็ดลับ
สําหรับสถานการณ์ที่คุณได้รับข้อผิดพลาดเนื่องจากไม่สามารถทําการพับคิวรีได้ เราขอแนะนําให้คุณลองตรวจสอบขั้นตอนของคุณในฐานะคิวรีย่อยของคิวรีในระบบเดิมของคุณเพื่อตรวจสอบดูว่าอาจมีไวยากรณ์หรือข้อขัดแย้งของบริบทหรือไม่