Odbc.DataSource เชื่อมต่อแหล่งข้อมูล ODBC และดึงรายชื่อตารางพร้อมวิว ช่วยให้คุณเข้าถึงฐานข้อมูลจากเครื่อง ODBC-compliant โดยไม่ต้องใช้ SQL Server Connection โดยตรง
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| connectionString | Text or Record | Connection string สำหรับแหล่งข้อมูล ODBC เช่น ‘dsn=MyDatabase’ หรือ record ที่มี property-value pairs (Driver, Server, Database, Uid, Pwd) | |
| [options]ไม่บังคับ | Record | null | ตัวเลือกการตั้งค่าเพิ่มเติม เช่น CreateNavigationProperties, HierarchicalNavigation, ConnectionTimeout, CommandTimeout, SqlCompatibleWindowsAuth |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
Odbc.DataSource ตัวสำคัญสำหรับคนที่ต้องงานกับ MySQL, PostgreSQL, Excel Files หรือฐานข้อมูลอื่นๆ ที่เข้ากับ ODBC มันจะช่วยเปิด connection ไปยังแหล่งข้อมูล แล้วดึงรายชื่อตารางและวิวทั้งหมดให้คุณ
ที่เจ๋งคือ ฟังก์ชันนี้จะคืนมาเป็น table ที่พร้อมใช้ มีทุกตารางและวิวอยู่ในนั้น คุณเพียงแค่เลือกตารางที่ต้องการเข้ามา Power Query ได้เลย ไม่ต้องเขียน SQL ยาวๆ แล้วยังสามารถปรับ timeout ให้พอดีกับสภาพแวดล้อมของคุณได้อีก
ส่วนตัวผม ใช้ Odbc.DataSource ตอนที่งานต้องเชื่อมต่อเข้ากับระบบเก่า (Legacy System) หรือเวลาที่ฐานข้อมูลไม่ได้เป็น SQL Server ตรงๆ ความเก่งของมันคือ flexibility – ปรับ timeout ได้, เลือกจากหลายตารางได้, งานแบบ multi-source data pull ก็ยังไหว
เชื่อมต่อไปยัง ODBC data source ที่มีชื่อ 'MyDatabase' และคืนค่าเป็น table ของตารางทั้งหมด ถ้า DSN ลงทะเบียนแล้วในระบบ ก็เพียงพอ
ตั้งค่า command timeout เป็น 30 วินาทีและ connection timeout เป็น 20 วินาที จากนั้นเลือกตาราง Customers จากผลลัพธ์ CommandTimeout ใช้สำหรับระยะเวลาการทำงาน query ส่วน ConnectionTimeout คือระยะเวลารอการเชื่อมต่อ
ใช้ record เพื่อส่งข้อมูลการเชื่อมต่อแบบละเอียด แล้วเลือกตาราง Sales การใช้ record format นี้ปลอดภัยกว่า string เพราะสามารถเก็บข้อมูลไวพจน์ได้
เมื่องานมีตารางมากขึ้น ตั้ง HierarchicalNavigation เป็น true เพื่อให้แสดงกลุ่มตามชื่อ schema ทำให้หาตารางได้ง่ายขึ้น
คิดแบบนี้ – Odbc.DataSource เป็นตัวช่วยที่เข้ากับได้หลายระบบ (MySQL, PostgreSQL, Excel Files ผ่าน ODBC) ส่วน Sql.Database เนี่ย มันจบจำเพาะแค่ SQL Server ตรงๆ ผมแนะนำให้ใช้ Odbc.DataSource ถ้าฐานข้อมูลไม่ใช่ SQL Server แต่ถ้าแน่ใจว่าเป็น SQL Server แล้ว Sql.Database จะเร็วกว่า
ConnectionTimeout เนี่ยคือ 'นานไหนถึงจะยอมแพ้ว่าเชื่อมต่อไม่ได้' (ค่าเริ่มต้น 15 วินาที) CommandTimeout เป็น 'นานไหนถึงจะยอมแพ้ว่า query มันแล่นไม่จบ' (ค่าเริ่มต้น 10 นาที) สองตัวนี้ต้องคำนึงถึง network condition ของคุณ ผมแนะนำให้ปรับ CommandTimeout สูงขึ้นถ้า query เป็นแบบหนัก
แน่นอนครับ ต้องติดตั้ง ODBC driver ที่เข้ากับฐานข้อมูลของคุณ MySQL ODBC, PostgreSQL ODBC, ACCESS ODBC – แบบนี้ เครื่องของคุณต้องมีมัน ไม่งั้น Power Query จะไม่เห็น data source
นี่ตัวเลือกที่ช่วยให้ Power Query แสดงตารางและวิวเป็นนวิเกชันที่เข้าใจง่าย (ค่าเริ่มต้น true) ปกติจะตั้งเป็น true แล้ว ถ้าตั้ง false ก็ต้องหาตารางแบบ manual มากกว่า ผมไม่ค่อยปิดตัวนี้หรอก
ตัวนี้บอก Power Query ว่าให้ใช้วิธี Windows authentication ที่เข้ากับ SQL Server (ค่าเริ่มต้น true) ถ้างานของคุณใช้ Windows credentials ก็ปล่อยให้ true ไป
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Odbc.DataSource จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Odbc.InferOptions ใช้สำหรับการประมวลผล
Odbc.Query ใช้สำหรับดำเนินการคำสั่ง SQL โดยตรงต่อฐานข้อมูล ODBC ใดๆ เช่น SQL Server, MySQL, PostgreSQL, Oracle และส่งคืนผลลัพธ์เป็นตาราง
Sql.Database เป็นฟังก์ชันที่ใช้เชื่อมต่อกับฐานข้อมูล SQL Server แล้วดึงข้อมูลเข้ามาประมวลผลใน Power Query ได้เลยครับ
.
ฟังก์ชันนี้จะคืนค่าออกมาเป็น table ที่แสดงรายการของ tables, views และ stored functions ทั้งหมดที่มีในฐานข้อมูลที่เราระบุ ที่เจ๋งคือฟังก์ชันนี้รองรับการทำ query folding ซึ่งทำให้การประมวลผลข้อมูลเกิดขึ้นที่ SQL Server โดยตรง ได้ประสิทธิภาพสูงสุดและลดการใช้ memory ลงมาก
.
นอกจากนี้ยังมี options หลากหลายให้เราปรับแต่งการเชื่อมต่อได้ เช่น การกำหนด CommandTimeout สำหรับ query ที่ใช้เวลานาน การเขียน native SQL query เพื่อดึงข้อมูลแบบกำหนดเองเลย การทำ cross-database folding เพื่อทำงานข้ามหลายฐานข้อมูล และรองรับ authentication หลายรูปแบบด้วย ส่วนตัวผมใช้บ่อยมากเวลาทำงานกับข้อมูลขนาดใหญ่จาก SQL Server ครับ 😎
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่