Odbc.Query ใช้สำหรับดำเนินการคำสั่ง SQL โดยตรงต่อฐานข้อมูล ODBC ใดๆ เช่น SQL Server, MySQL, PostgreSQL, Oracle และส่งคืนผลลัพธ์เป็นตาราง
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| connectionString | text or record | สตริงการเชื่อมต่อ ODBC หรือระเบียน property-value pairs สำหรับเชื่อมต่อฐานข้อมูล | |
| query | text | คำสั่ง SQL ที่ต้องการดำเนินการบนฐานข้อมูล (เช่น SELECT, UPDATE, DELETE) | |
| [options]ไม่บังคับ | record | null | ตัวเลือกเพิ่มเติมเพื่อกำหนดค่าพฤติกรรมการเชื่อมต่อ (ConnectionTimeout, CommandTimeout เป็นต้น) |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
Odbc.Query คือฟังก์ชัน Power Query ที่ช่วยให้คุณเชื่อมต่อกับฐานข้อมูลต่างๆ ผ่าน ODBC (Open Database Connectivity) และดำเนินการคำสั่ง SQL โดยตรง ไม่ว่าจะเป็น SELECT, UPDATE, DELETE หรืออื่นๆ บนฐานข้อมูลเหล่านั้น ผลลัพธ์จะส่งกลับมาเป็นตาราง Power Query ที่พร้อมใช้งาน
ที่เจ๋งของ Odbc.Query คือมันรองรับฐานข้อมูลเกือบทุกประเภท SQL Server, MySQL, PostgreSQL, Oracle, SQLite ฯลฯ ตัวคุณไม่ต้องใจเรื่องฟังก์ชัน SQL.Database หรือ Access.Database ที่มีจำเพาะเจาะจงแต่ละตัว แค่ใช้ Odbc.Query ตัวเดียวก็ทำงานได้ทั้งระบบปืนเก่า legacy database และระบบใหม่สุด modern database
ส่วนตัวผม 😎 ถ้าต้องเชื่อมต่อหลายประเภทฐานข้อมูล Odbc.Query เป็นตัวเลือกแรกของผม เพราะไม่ต้องคิดมาก ดำเนินการได้ตรงไปตรงมา และสามารถใช้ได้กับเกือบทุกฐานข้อมูลที่มี ODBC driver ติดตั้งไว้
ใช้ DSN (Data Source Name) ที่กำหนดไว้แล้วในระบบเพื่อเชื่อมต่อฐานข้อมูล แล้ว SELECT ข้อมูลทั้งหมดจากตาราง Customers
กำหนด connection string อย่างสมบูรณ์พร้อม driver, server, database, username, password แล้วทำการค้นหาสินค้าที่มีราคามากกว่า 1000
ตั้งเวลารอการเชื่อมต่อ 30 วินาที และเวลารอการดำเนินการ SQL 5 นาที เพื่อหลีกเลี่ยงการค้างอย่างไม่สิ้นสุด
ใช้ JOIN เพื่อรวมข้อมูลจากหลายตารางในฐานข้อมูล และกรองข้อมูลตามวันที่ที่ระบุ
ใช้ GROUP BY เพื่อรวมข้อมูลขายตามประเภท และคำนวณยอดขายรวมและจำนวนธุรกรรม
เกือบทุกฐานข้อมูลเลยครับ ตราบใจ ODBC driver เค้ารองรับ SQL Server, MySQL, PostgreSQL, Oracle, Microsoft Access, SQLite ฯลฯ ถ้าฐานข้อมูลไหนมี ODBC driver ก็ใช้ได้เหมือนกัน
Odbc.DataSource มันโชว์รายชื่อตารางและ views ที่อยู่ในฐานข้อมูลให้คุณเลือก แล้ว Odbc.Query ต่างหากครับ มันเอา SQL command ที่คุณเขียนไปรันตรงๆ แล้วส่งผลลัพธ์กลับมา ดังนั้นถ้าต้องคิด query ที่ซับซ้อน ใช้ Odbc.Query นะครับ
ต้องแน่นอนครับ ถ้าเครื่องของคุณไม่มี ODBC driver สำหรับฐานข้อมูลที่ต้องการ Odbc.Query มันจะไม่หาเจออยู่แล้ว หาอันที่เหมาะสมติดตั้งเสียก่อน
Connection timeout คือ 'นานเท่าไหร่ถึงจะยอมท้อว่าเชื่อมต่อไม่ได้' ส่วน Command timeout คือ 'นานเท่าไหร่ถึงจะยอมเพิ่มเติมว่า query นั่นค้างไป' เท่านั้นแหละ อันแรกเรื่องการเชื่อมต่อ อันหลังเรื่องการรันคำสั่ง
ได้นะครับ แต่จริงๆ ก็ไม่ค่อยเห็นใครใช้เพื่อแก้ไขข้อมูล มักจะใช้สำหรับดึงข้อมูล (SELECT) มากกว่า เพราะถ้าใช้ INSERT/UPDATE/DELETE ต้องมี permission พอ และต้องระวังไว้ด้วย ไม่อย่างนั้นขึ้นตัวที่ผิดไปเต็มฐานข้อมูล 😅
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Odbc.Query จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Access.Database ใช้สำหรับการเชื่อมต่อกับไฟล์ฐานข้อมูล Microsoft Access (.mdb, .accdb) และดึงข้อมูลจากตาราต่างๆ
MySQL.Database เป็นฟังก์ชันตัวเชื่อมต่อ (connector) ที่ใช้ส่งข้อมูลจากฐานข้อมูล MySQL ไปยัง Power Query ช่วยให้คุณสามารถโหลดตารางและมุมมองจากเซิร์ฟเวอร์ MySQL ได้
Odbc.DataSource เชื่อมต่อแหล่งข้อมูล ODBC และดึงรายชื่อตารางพร้อมวิว ช่วยให้คุณเข้าถึงฐานข้อมูลจากเครื่อง ODBC-compliant โดยไม่ต้องใช้ SQL Server Connection โดยตรง
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
อีเมลของคุณจะไม่ถูกเผยแพร่