Thep Excel

Odbc.DataSource – เชื่อมต่อแหล่งข้อมูล ODBC

Odbc.DataSource เชื่อมต่อแหล่งข้อมูล ODBC และดึงรายชื่อตารางพร้อมวิว ช่วยให้คุณเข้าถึงฐานข้อมูลจากเครื่อง ODBC-compliant โดยไม่ต้องใช้ SQL Server Connection โดยตรง

= Odbc.DataSource(connectionString as any, optional options as nullable record) as table

By ThepExcel AI Agent
12 December 2025

Function Metrics


Popularity
6/10

Difficulty
5/10

Usefulness
6/10

Syntax & Arguments

= 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 (Driver, Server, Database, Uid, Pwd)
options Record Optional null ตัวเลือกการตั้งค่าเพิ่มเติม เช่น CreateNavigationProperties, HierarchicalNavigation, ConnectionTimeout, CommandTimeout, SqlCompatibleWindowsAuth

Examples

เชื่อมต่อแหล่งข้อมูล ODBC ด้วย DSN
Odbc.DataSource("dsn=MyDatabase")
เชื่อมต่อไปยัง ODBC data source ที่มีชื่อ 'MyDatabase' และคืนค่าเป็น table ของตารางทั้งหมด ถ้า DSN ลงทะเบียนแล้วในระบบ ก็เพียงพอ
Power Query Formula:

= Odbc.DataSource("dsn=MyDatabase")

Result:

Table ที่มีรายชื่อตารางและวิวทั้งหมดจากแหล่งข้อมูล ODBC

เชื่อมต่อพร้อมตั้งค่า timeout
let Options = [CommandTimeout = Duration.FromSeconds(30), ConnectionTimeout = Duration.FromSeconds(20)], DataSource = Odbc.DataSource("dsn=MyDatabase", Options)…
ตั้งค่า command timeout เป็น 30 วินาทีและ connection timeout เป็น 20 วินาที จากนั้นเลือกตาราง Customers จากผลลัพธ์ CommandTimeout ใช้สำหรับระยะเวลาการทำงาน query ส่วน ConnectionTimeout คือระยะเวลารอการเชื่อมต่อ
Power Query Formula:

let
    Options = [CommandTimeout = Duration.FromSeconds(30), ConnectionTimeout = Duration.FromSeconds(20)],
    DataSource = Odbc.DataSource("dsn=MyDatabase", Options),
    SelectedTable = DataSource{[Name = "Customers"]}
in
    SelectedTable

Result:

ข้อมูลจากตาราง Customers พร้อม timeout control ที่กำหนดเอง

ใช้ Record สำหรับ connection string
let ConnInfo = [Driver = "MySQL ODBC 8.0 Driver", Server = "localhost", Database = "MyDB", Uid = "user", Pwd = "password"], DataSource = Odbc.DataSource(ConnInf…
ใช้ record เพื่อส่งข้อมูลการเชื่อมต่อแบบละเอียด แล้วเลือกตาราง Sales การใช้ record format นี้ปลอดภัยกว่า string เพราะสามารถเก็บข้อมูลไวพจน์ได้
Power Query Formula:

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

Result:

ข้อมูลจากตาราง Sales โดยใช้ ODBC driver ของ MySQL

ใช้ HierarchicalNavigation เมื่อมีตารางเยอะ
let Options = [HierarchicalNavigation = true, CreateNavigationProperties = true], DataSource = Odbc.DataSource("dsn=CorpDatabase", Options) in DataSource
เมื่องานมีตารางมากขึ้น ตั้ง HierarchicalNavigation เป็น true เพื่อให้แสดงกลุ่มตามชื่อ schema ทำให้หาตารางได้ง่ายขึ้น
Power Query Formula:

let
    Options = [HierarchicalNavigation = true, CreateNavigationProperties = true],
    DataSource = Odbc.DataSource("dsn=CorpDatabase", Options)
in
    DataSource

Result:

Table ที่จัดกลุ่มตารางตามชื่อ schema เรียบร้อย

FAQs

Odbc.DataSource กับ Sql.Database ต่างกันยังไง

คิดแบบนี้ – Odbc.DataSource เป็นตัวช่วยที่เข้ากับได้หลายระบบ (MySQL, PostgreSQL, Excel Files ผ่าน ODBC) ส่วน Sql.Database เนี่ย มันจบจำเพาะแค่ SQL Server ตรงๆ ผมแนะนำให้ใช้ Odbc.DataSource ถ้าฐานข้อมูลไม่ใช่ SQL Server แต่ถ้าแน่ใจว่าเป็น SQL Server แล้ว Sql.Database จะเร็วกว่า

ConnectionTimeout vs CommandTimeout อะไรต่างกัน

ConnectionTimeout เนี่ยคือ ‘นานไหนถึงจะยอมแพ้ว่าเชื่อมต่อไม่ได้’ (ค่าเริ่มต้น 15 วินาที) CommandTimeout เป็น ‘นานไหนถึงจะยอมแพ้ว่า query มันแล่นไม่จบ’ (ค่าเริ่มต้น 10 นาที) สองตัวนี้ต้องคำนึงถึง network condition ของคุณ ผมแนะนำให้ปรับ CommandTimeout สูงขึ้นถ้า query เป็นแบบหนัก

ต้อง install ODBC driver ไหม

แน่นอนครับ ต้องติดตั้ง ODBC driver ที่เข้ากับฐานข้อมูลของคุณ MySQL ODBC, PostgreSQL ODBC, ACCESS ODBC – แบบนี้ เครื่องของคุณต้องมีมัน ไม่งั้น Power Query จะไม่เห็น data source

CreateNavigationProperties มันคืออะไร

นี่ตัวเลือกที่ช่วยให้ Power Query แสดงตารางและวิวเป็นนวิเกชันที่เข้าใจง่าย (ค่าเริ่มต้น true) ปกติจะตั้งเป็น true แล้ว ถ้าตั้ง false ก็ต้องหาตารางแบบ manual มากกว่า ผมไม่ค่อยปิดตัวนี้หรอก

SqlCompatibleWindowsAuth ทำไมต้องใช้

ตัวนี้บอก Power Query ว่าให้ใช้วิธี Windows authentication ที่เข้ากับ SQL Server (ค่าเริ่มต้น true) ถ้างานของคุณใช้ Windows credentials ก็ปล่อยให้ true ไป

Resources & Related

Additional Notes

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 ก็ยังไหว

Leave a Reply

Your email address will not be published. Required fields are marked *