เปิดใช้งาน DirectQuery สําหรับตัวเชื่อมต่อที่ใช้ ODBC

การใช้ฟังก์ชัน Odbc.DataSource ที่มีอยู่แล้วภายในของ M เป็นวิธีที่แนะนําในการสร้างตัวเชื่อมต่อแบบกําหนดเองสําหรับแหล่งข้อมูลที่มีโปรแกรมควบคุม ODBC ที่มีอยู่ และ/หรือสนับสนุนไวยากรณ์คิวรี SQL การค รอบฟังก์ชัน Odbc.DataSource จะช่วยให้ตัวเชื่อมต่อของคุณสืบทอดพฤติกรรมการพับคิวรีตามความสามารถที่รายงานโดยโปรแกรมควบคุมของคุณ ซึ่งจะเปิดใช้งานกลไก M เพื่อสร้างคําสั่ง SQL ตามตัวกรองและการแปลงอื่น ๆ ที่กําหนดโดยผู้ใช้ภายในประสบการณ์ Power Query โดยไม่ต้องระบุตรรกะนี้ภายในตัวเชื่อมต่อเอง

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

หมายเหตุ

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

บทความนี้ถือว่ามีความคุ้นเคยกับการสร้างตัวเชื่อมต่อแบบกําหนดเองพื้นฐาน

โปรดดูตัวอย่าง SqlODBC สําหรับตัวอย่างโค้ดส่วนใหญ่ในส่วนต่อไปนี้ สามารถพบตัวอย่างอื่น ๆ ได้ในไดเรกทอรีตัวอย่าง ODBC

ฟังก์ชันเพิ่มการขยายของ ODBC

โปรแกรม M มีฟังก์ชันแหล่งข้อมูลที่เกี่ยวข้องกับ ODBC สองฟังก์ชัน: Odbc.DataSource และ Odbc.Query

ฟังก์ชัน Odbc.DataSource มีตารางการนําทางเริ่มต้นพร้อมฐานข้อมูล ตาราง และมุมมองทั้งหมดจากระบบของคุณ ฟังก์ชันนี้ยังสนับสนุน Query Folding และอนุญาตให้มีตัวเลือกการกําหนดค่าที่หลากหลาย ส่วนขยายที่ใช้ ODBC ส่วนใหญ่ใช้ฟังก์ชันนี้เป็นฟังก์ชันเพิ่มหลัก ฟังก์ชันยอมรับสองอาร์กิวเมนต์ ได้แก่ สายอักขระการเชื่อมต่อ และระเบียนตัวเลือกเพื่อให้การแทนที่ลักษณะการทํางาน

ฟังก์ชัน Odbc.Query ช่วยให้คุณสามารถดําเนินการคําสั่ง SQL ผ่านโปรแกรมควบคุม ODBC ได้ ซึ่งทําหน้าที่เป็นพาส-ทรูสําหรับการดําเนินการคิวรี ซึ่งแตกต่างจากฟังก์ชัน Odbc.DataSource ซึ่งจะไม่มีฟังก์ชันการพับคิวรีและต้องการให้คิวรี SQL ได้รับมาจากตัวเชื่อมต่อ (หรือผู้ใช้ปลายทาง) เมื่อสร้างตัวเชื่อมต่อแบบกําหนดเอง โดยทั่วไปแล้ว ฟังก์ชันนี้จะใช้ภายในเพื่อเรียกใช้คิวรีเพื่อเรียกใช้เมตาดาต้าที่อาจไม่แสดงผ่านช่อง ODBC ปกติ ฟังก์ชันยอมรับสองอาร์กิวเมนต์ ได้แก่ สายอักขระการเชื่อมต่อ และคิวรี SQL

แนวทางฟังก์ชันแหล่งข้อมูล

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

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

  • แม้ว่าคุณจะสามารถกําหนดพารามิเตอร์ด้วยค่าจํานวนคงที่ (นั่นคือ รายการแบบเลื่อนลงใน UI) ระบบจะป้อนพารามิเตอร์ก่อนผู้ใช้จะรับรองความถูกต้อง ค่าใด ๆ ที่สามารถค้นหาได้ทางโปรแกรมหลังจากที่ผู้ใช้ได้รับการรับรองความถูกต้อง (เช่น แค็ตตาล็อกหรือชื่อฐานข้อมูล) ควรสามารถเลือกได้ผ่านตัวนําทาง ลักษณะการทํางานเริ่มต้นสําหรับ ฟังก์ชัน Odbc.DataSource คือการส่งคืนตารางการนําทางแบบลําดับชั้นที่ประกอบด้วยแค็ตตาล็อก (ฐานข้อมูล), Schema และชื่อตาราง อย่างไรก็ตาม ลักษณะการทํางานนี้สามารถถูกแทนที่ภายในตัวเชื่อมต่อของคุณ

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

  • พารามิเตอร์สุดท้ายสําหรับฟังก์ชันของคุณควรเป็นเรกคอร์ดทางเลือกที่เรียกว่า "ตัวเลือก" โดยทั่วไปพารามิเตอร์นี้อนุญาตให้ผู้ใช้ขั้นสูงตั้งค่าคุณสมบัติที่เกี่ยวข้องกับ ODBC ทั่วไป (เช่น CommandTimeout), ตั้งค่าลักษณะการทํางานแทนที่เฉพาะตัวเชื่อมต่อของคุณ และอนุญาตให้มีการขยายในอนาคตโดยไม่ส่งผลกระทบต่อความเข้ากันได้ย้อนหลังสําหรับฟังก์ชันของคุณ

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

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

ในขณะที่ UI สําหรับฟังก์ชัน Odbc.DataSource ที่มีอยู่ภายในมีดรอปดาวน์ที่ช่วยให้ผู้ใช้สามารถเลือก DSN แต่ฟังก์ชันนี้ไม่พร้อมใช้งานผ่านการขยายความสามารถ ถ้าการกําหนดค่าแหล่งข้อมูลของคุณซับซ้อนพอที่จะต้องใช้กล่องโต้ตอบการกําหนดค่าที่ปรับแต่งได้อย่างสมบูรณ์ เราขอแนะนําให้คุณต้องการให้ผู้ใช้ปลายทางของคุณกําหนดค่า DSN ระบบล่วงหน้า และให้ฟังก์ชันของคุณนําไปใช้ในชื่อ DSN เป็นเขตข้อมูลข้อความ

ขั้นตอนถัดไป