Thep Excel

MySQL.Databaseเชื่อมต่อและโหลดข้อมูลจากฐานข้อมูล MySQL

MySQL.Database เป็นฟังก์ชันตัวเชื่อมต่อ (connector) ที่ใช้ส่งข้อมูลจากฐานข้อมูล MySQL ไปยัง Power Query ช่วยให้คุณสามารถโหลดตารางและมุมมองจากเซิร์ฟเวอร์ MySQL ได้

fx
= MySQL.Database(server, database, [options]) as table

ความนิยม6/10
ความยาก4/10
ประโยชน์6/10

อัปเดต 12 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
server Text ที่อยู่ของเซิร์ฟเวอร์ MySQL เช่น ‘localhost’ หรือ ‘myserver.com’ สามารถระบุพอร์ตได้โดยเพิ่ม ‘:3306’ ไว้ท้าย
database Text ชื่อของฐานข้อมูล MySQL ที่ต้องการเชื่อมต่อ
[options]ไม่บังคับ Record (nullable) null ระเบียนตัวเลือกที่มีการตั้งค่าเพิ่มเติม เช่น Encoding CommandTimeout Query ReturnSingleDatabase ฯลฯ

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

MySQL.Database เป็นตัวเชื่อมต่อที่อนุญาตให้คุณเชื่อมต่อกับเซิร์ฟเวอร์ MySQL และ โหลดข้อมูลจากฐานข้อมูลตัวเลือก ฟังก์ชันนี้จะคืนค่าตารางที่มีรายการของตารางทั้งหมด มุมมอง (views) และฟังก์ชันสเกลาร์ที่เก็บไว้ในฐานข้อมูล

ประเด็นสำคัญคือ MySQL.Database ให้ความยืดหยุ่นสูงในการประมวลผลข้อมูลผ่านตัวเลือกต่างๆ อย่างเช่น การกำหนด Encoding การตั้ง CommandTimeout หรือแม้กระทั่งการเขียน SQL query แบบ native เพื่อดึงข้อมูลที่เจาะจงมากขึ้น

ส่วนตัวผมชอบการใช้ ReturnSingleDatabase = true เพราะมันช่วยให้ฉันดึงข้อมูลจากฐานข้อมูลที่ระบุเท่านั้น ทำให้รายการในนำทางไม่ยุ่งเหยิง และ HierarchicalNavigation = true นั้นเหมาะเวลาที่เรามีจำนวนตารางมากมาย เพราะมันจะจัดกลุ่มตารางตามชื่อ schema ได้ 😎

Examples

เชื่อมต่อพื้นฐานกับฐานข้อมูล MySQLMySQL.Database("localhost", "myDatabase")

เชื่อมต่อกับเซิร์ฟเวอร์ localhost และดึงรายการตารางจากฐานข้อมูล myDatabase

fx
= MySQL.Database("localhost", "myDatabase")

ผลลัพธ์ตารางแสดงรายชื่อตารางทั้งหมด มุมมอง และฟังก์ชันสเกลาร์ที่เก็บไว้ในฐานข้อมูล myDatabase
เชื่อมต่อกับเซิร์ฟเวอร์ที่ระบุพอร์ตแบบกำหนดเองMySQL.Database("myserver.com:3307", "salesDB")

เมื่อฐานข้อมูล MySQL ทำงานบนพอร์ต 3307 (ไม่ใช่ค่าเริ่มต้น 3306) สามารถระบุในอยู่เซิร์ฟเวอร์ได้

fx
= MySQL.Database("myserver.com:3307", "salesDB")

ผลลัพธ์ตารางแสดงรายชื่อตารางจากฐานข้อมูล salesDB บนเซิร์ฟเวอร์ myserver.com พอร์ต 3307
ใช้ตัวเลือก Query เพื่อดึงข้อมูลด้วย SQL query แบบ nativelet Source = MySQL.Database("localhost", "salesDB", [Query = "SELECT * FROM orders WHERE amount > 1000"]) in Source

การใช้ Query option ช่วยให้คุณสามารถเขียน SQL แบบเหมาะสม เพื่อดึงข้อมูลที่เจาะจงมากขึ้น แล้วไม่ต้องกรองข้อมูลภายใน Power Query

fx
let
Source = MySQL.Database("localhost", "salesDB", [Query = "SELECT * FROM orders WHERE amount > 1000"])
in
Source

ผลลัพธ์ตารางแสดงเฉพาะแถวจากตาราง orders ที่มี amount มากกว่า 1000
ใช้ ReturnSingleDatabase เพื่อคืนเฉพาะฐานข้อมูลที่ระบุlet Source = MySQL.Database("localhost", "targetDB", [ReturnSingleDatabase = true]) in Source

เมื่อตั้ง ReturnSingleDatabase = true Power Query จะคืนเฉพาะตารางจากฐานข้อมูลที่ระบุเท่านั้น ทำให้รายการนำทางไม่ยุ่งเหยิง

fx
let
Source = MySQL.Database("localhost", "targetDB", [ReturnSingleDatabase = true])
in
Source

ผลลัพธ์ตารางแสดงเฉพาะตารางจากฐานข้อมูล targetDB โดยไม่รวมฐานข้อมูลอื่นๆ
ใช้ HierarchicalNavigation เพื่อจัดกลุ่มตารางตาม Schemalet Source = MySQL.Database("localhost", "largeDB", [HierarchicalNavigation = true]) in Source

เมื่อตั้ง HierarchicalNavigation = true ตารางจะถูกจัดกลุ่มตามชื่อ schema ทำให้ง่ายต่อการนำทางเมื่อมีจำนวนตารางมากมาย

fx
let
Source = MySQL.Database("localhost", "largeDB", [HierarchicalNavigation = true])
in
Source

ผลลัพธ์ตารางแสดงรายชื่อตารางที่จัดกลุ่มตามชื่อ schema
ใช้ CommandTimeout เพื่อตั้งเวลา timeout ของการส่งสอบถามlet Source = MySQL.Database("localhost", "largeDataDB", [CommandTimeout = #duration(0, 0, 5, 0)]) in Source

สำหรับฐานข้อมูลขนาดใหญ่หรือสอบถาม heavy query สามารถเพิ่มเวลา CommandTimeout โดยใช้ #duration(days, hours, minutes, seconds)

fx
let
Source = MySQL.Database("localhost", "largeDataDB", [CommandTimeout = #duration(0, 0, 5, 0)])
in
Source

ผลลัพธ์ตารางแสดงรายชื่อตารางพร้อมกำหนดให้การส่งสอบถามมี timeout 5 นาที

FAQs

MySQL.Database ให้ผลลัพธ์แบบอะไร+

MySQL.Database คืนค่าตารางที่มีรายการของตารางทั้งหมด มุมมอง (views) และฟังก์ชันสเกลาร์ที่เก็บไว้ในฐานข้อมูล MySQL ที่ระบุ

ต้องตั้งค่าอะไรเพื่อให้ฟังก์ชันนี้ทำงานได้+

ต้องมี MySQL Connector หรือ driver ที่เหมาะสมติดตั้งบนเครื่องของคุณ และต้องระบุที่อยู่เซิร์ฟเวอร์ MySQL และชื่อฐานข้อมูลให้ถูกต้อง นอกจากนี้อาจต้องตั้งชื่อผู้ใช้และรหัสผ่านหากเซิร์ฟเวอร์ต้องการการยืนยันตัวตน

สามารถใช้ Query option เพื่อรันคำสั่ง SQL ได้ไหม+

ได้ สามารถใช้ Query option ในการระบุคำสั่ง SQL แบบ native ได้ อย่างไรก็ตาม Query option จะคืนเฉพาะชุดผลลัพธ์แรกเท่านั้น

ฟังก์ชัน TreatTinyAsBoolean มีหมายความว่าอะไร+

โดยค่าเริ่มต้น ฟังก์ชัน TreatTinyAsBoolean ถูกตั้งเป็น true ซึ่งหมายความว่าคอลัมน์ tinyint จะถูกมองว่าเป็นค่าลอจิกัล (true/false) แต่ถ้าตั้งเป็น false มันจะเป็นค่าตัวเลขแทน

พอร์ต MySQL ค่าเริ่มต้นคืออะไร+

พอร์ต MySQL ค่าเริ่มต้นคือ 3306 หากฐานข้อมูล MySQL ของคุณทำงานบนพอร์ตอื่น สามารถระบุในพารามิเตอร์ server เช่น 'localhost:3307'

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ MySQL.Database จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้MySQL.DatabaseAccessing data functions
Accessing data functions (5)
OData.Feed

OData.Feed เชื่อมต่อบริการ OData และดึงข้อมูลจาก OData endpoints ซึ่งมักจะเป็น API ที่มีโครงสร้างมาตรฐาน

Odbc.Query

Odbc.Query ใช้สำหรับดำเนินการคำสั่ง SQL โดยตรงต่อฐานข้อมูล ODBC ใดๆ เช่น SQL Server, MySQL, PostgreSQL, Oracle และส่งคืนผลลัพธ์เป็นตาราง

OleDb.DataSource

OleDb.DataSource ใช้สำหรับเชื่อมต่อกับฐานข้อมูล OLE DB (SQL Server, Access, MySQL ผ่าน ODBC เป็นต้น) และนำเข้าตารางหรือแสดงผลจากคำสั่ง SQL

Sql.Database

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 ครับ 😎

Web.Contents

Web.Contents เป็นฟังก์ชันสำหรับดาวน์โหลดเนื้อหาจากเว็บไซต์หรือแหล่งข้อมูลบนอินเทอร์เน็ตผ่าน URL และคืนค่าเป็นข้อมูลแบบ binary data ที่สามารถนำไปประมวลผลต่อได้
.
รองรับการเชื่อมต่อและเรียกใช้งาน REST API อย่างครบถ้วนพร้อมระบบการยืนยันตัวตนผ่านทางตัวเลือกต่างๆ เช่น การกำหนดค่า Headers สำหรับส่งข้อมูลเพิ่มเติมในคำขอ การใช้ Query parameters สำหรับการกรองข้อมูลและส่งพารามิเตอร์ และการระบุ ApiKeyName เพื่อจัดเก็บคีย์การเข้าถึงอย่างปลอดภัย
.
เหมาะอย่างยิ่งสำหรับการเชื่อมต่อกับบริการเว็บและจุดเชื่อมต่อ API แบบไดนามิก โดยใช้ความสามารถของ RelativePath และตัวเลือก Query เพื่อสร้าง URL แบบยืดหยุ่นและทำให้กระบวนการรีเฟรชข้อมูลทำงานได้อย่างราบรื่นและมีประสิทธิภาพในระบบ Power BI Service

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่