Odbc.DataSource เชื่อมต่อแหล่งข้อมูล ODBC และดึงรายชื่อตารางพร้อมวิว ช่วยให้คุณเข้าถึงฐานข้อมูลจากเครื่อง ODBC-compliant โดยไม่ต้องใช้ SQL Server Connection โดยตรง
= Odbc.DataSource(connectionString as any, optional options as nullable record) as table
= Odbc.DataSource(connectionString as any, optional options as nullable record) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| connectionString | Text or Record | Yes | Connection string สำหรับแหล่งข้อมูล ODBC เช่น ‘dsn=MyDatabase’ หรือ record ที่มี property-value pairs | |
| options | Record | Optional | null | ตัวเลือกการตั้งค่าเพิ่มเติม เช่น CreateNavigationProperties, HierarchicalNavigation, ConnectionTimeout, CommandTimeout |
Odbc.DataSource("dsn=MyDatabase")= Odbc.DataSource("dsn=MyDatabase")
Table ที่มีรายชื่อตารางและวิวทั้งหมดจากแหล่งข้อมูล ODBC
let Options = [CommandTimeout = Duration.FromSeconds(30), ConnectionTimeout = Duration.FromSeconds(20)], DataSource = Odbc.DataSource("dsn=MyDatabase", Options)…let
Options = [CommandTimeout = Duration.FromSeconds(30), ConnectionTimeout = Duration.FromSeconds(20)],
DataSource = Odbc.DataSource("dsn=MyDatabase", Options),
SelectedTable = DataSource{[Name = "Customers"]}
in
SelectedTable
ข้อมูลจากตาราง Customers พร้อม timeout control ที่กำหนดเอง
let ConnInfo = [Driver = "MySQL ODBC 8.0 Driver", Server = "localhost", Database = "MyDB", Uid = "user", Pwd = "password"], DataSource = Odbc.DataSource(ConnInf…let
ConnInfo = [Driver = "MySQL ODBC 8.0 Driver", Server = "localhost", Database = "MyDB", Uid = "user", Pwd = "password"],
DataSource = Odbc.DataSource(ConnInfo),
SalesTable = DataSource{[Name = "Sales"]}
in
SalesTable
ข้อมูลจากตาราง Sales โดยใช้ ODBC driver ของ MySQL
Odbc.DataSource ใช้สำหรับ ODBC data sources (MySQL, PostgreSQL, Excel File ODBC) ส่วน Sql.Database เป็นการเชื่อมต่อ SQL Server โดยตรง Odbc.DataSource ยืดหยุ่นมากกว่า แต่ Sql.Database มีประสิทธิภาพดีกว่า
ConnectionTimeout ควบคุมว่านานเท่าไหร่จึงจะหยุด การเชื่อมต่อ CommandTimeout ควบคุมว่านานเท่าไหร่จึงจะหยุด การ execute query บนเซิร์ฟเวอร์
ใช่ ต้องติดตั้ง ODBC driver สำหรับฐานข้อมูลที่ต้องเชื่อมต่อ เช่น MySQL ODBC Driver สำหรับ MySQL
เป็นตัวเลือกที่เมื่อตั้ง true (default) จะสร้าง navigation properties บน returned values ทำให้เข้าถึงเมตาดาต้าได้ง่ายขึ้น
Odbc.DataSource(connectionString, [options]) ใช้สำหรับเชื่อมต่อแหล่งข้อมูล ODBC เช่น MySQL, PostgreSQL, Excel Files, และฐานข้อมูลอื่นๆ ที่รองรับ ODBC ฟังก์ชันนี้จะเปิด connection ไปยังฐานข้อมูลและดึงรายชื่อตารางทั้งหมดกลับมา
ที่เจ๋งคือ Odbc.DataSource จะคืนมาเป็น table ที่มีทุกตารางและวิวที่มีในแหล่งข้อมูล ทำให้คุณสามารถเลือกตารางที่ต้องการ และนำข้อมูลเข้ามา Power Query ได้อย่างสะดวก คุณยังสามารถกำหนดค่า timeout ระยะเวลาการเชื่อมต่อ และควบคุมการแสดงผลตารางได้อีกด้วย
ส่วนตัวผมใช้ Odbc.DataSource เวลาต้องเชื่อมต่อกับฐานข้อมูลที่ไม่ใช่ SQL Server หรือเวลาต้องการ timeout control ที่ละเอียด ก็เปลี่ยนความ timeout ผ่าน options ได้เลย เหมาะมากสำหรับงานที่ต้องดึงข้อมูลจากหลายแหล่ง 🔌