MySQL.Database เป็นฟังก์ชันตัวเชื่อมต่อ (connector) ที่ใช้ส่งข้อมูลจากฐานข้อมูล MySQL ไปยัง Power Query ช่วยให้คุณสามารถโหลดตารางและมุมมองจากเซิร์ฟเวอร์ MySQL ได้
= MySQL.Database(server as text, database as text, optional options as nullable record) as table
= MySQL.Database(server as text, database as text, optional options as nullable record) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| server | Text | Yes | ที่อยู่ของเซิร์ฟเวอร์ MySQL เช่น ‘localhost’ หรือ ‘myserver.com’ สามารถระบุพอร์ตได้โดยเพิ่ม ‘:3306’ ไว้ท้าย | |
| database | Text | Yes | ชื่อของฐานข้อมูล MySQL ที่ต้องการเชื่อมต่อ | |
| options | Record (nullable) | Optional | null | ระเบียนตัวเลือกที่มีการตั้งค่าเพิ่มเติม เช่น Encoding CommandTimeout Query ReturnSingleDatabase ฯลฯ |
MySQL.Database("localhost", "myDatabase")= MySQL.Database("localhost", "myDatabase")
ตารางแสดงรายชื่อตารางทั้งหมด มุมมอง และฟังก์ชันสเกลาร์ที่เก็บไว้ในฐานข้อมูล myDatabase
MySQL.Database("myserver.com:3307", "salesDB")= MySQL.Database("myserver.com:3307", "salesDB")
ตารางแสดงรายชื่อตารางจากฐานข้อมูล salesDB บนเซิร์ฟเวอร์ myserver.com พอร์ต 3307
let Source = MySQL.Database("localhost", "salesDB", [Query = "SELECT * FROM orders WHERE amount > 1000"]) in Sourcelet
Source = MySQL.Database("localhost", "salesDB", [Query = "SELECT * FROM orders WHERE amount > 1000"])
in
Source
ตารางแสดงเฉพาะแถวจากตาราง orders ที่มี amount มากกว่า 1000
let Source = MySQL.Database("localhost", "targetDB", [ReturnSingleDatabase = true]) in Sourcelet
Source = MySQL.Database("localhost", "targetDB", [ReturnSingleDatabase = true])
in
Source
ตารางแสดงเฉพาะตารางจากฐานข้อมูล targetDB โดยไม่รวมฐานข้อมูลอื่นๆ
let Source = MySQL.Database("localhost", "largeDB", [HierarchicalNavigation = true]) in Sourcelet
Source = MySQL.Database("localhost", "largeDB", [HierarchicalNavigation = true])
in
Source
ตารางแสดงรายชื่อตารางที่จัดกลุ่มตามชื่อ schema
let Source = MySQL.Database("localhost", "largeDataDB", [CommandTimeout = #duration(0, 0, 5, 0)]) in Sourcelet
Source = MySQL.Database("localhost", "largeDataDB", [CommandTimeout = #duration(0, 0, 5, 0)])
in
Source
ตารางแสดงรายชื่อตารางพร้อมกำหนดให้การส่งสอบถามมี timeout 5 นาที
MySQL.Database คืนค่าตารางที่มีรายการของตารางทั้งหมด มุมมอง (views) และฟังก์ชันสเกลาร์ที่เก็บไว้ในฐานข้อมูล MySQL ที่ระบุ
ต้องมี MySQL Connector หรือ driver ที่เหมาะสมติดตั้งบนเครื่องของคุณ และต้องระบุที่อยู่เซิร์ฟเวอร์ MySQL และชื่อฐานข้อมูลให้ถูกต้อง นอกจากนี้อาจต้องตั้งชื่อผู้ใช้และรหัสผ่านหากเซิร์ฟเวอร์ต้องการการยืนยันตัวตน
ได้ สามารถใช้ Query option ในการระบุคำสั่ง SQL แบบ native ได้ อย่างไรก็ตาม Query option จะคืนเฉพาะชุดผลลัพธ์แรกเท่านั้น
โดยค่าเริ่มต้น ฟังก์ชัน TreatTinyAsBoolean ถูกตั้งเป็น true ซึ่งหมายความว่าคอลัมน์ tinyint จะถูกมองว่าเป็นค่าลอจิกัล (true/false) แต่ถ้าตั้งเป็น false มันจะเป็นค่าตัวเลขแทน
พอร์ต MySQL ค่าเริ่มต้นคือ 3306 หากฐานข้อมูล MySQL ของคุณทำงานบนพอร์ตอื่น สามารถระบุในพารามิเตอร์ server เช่น ‘localhost:3307’
MySQL.Database เป็นตัวเชื่อมต่อที่อนุญาตให้คุณเชื่อมต่อกับเซิร์ฟเวอร์ MySQL และ โหลดข้อมูลจากฐานข้อมูลตัวเลือก ฟังก์ชันนี้จะคืนค่าตารางที่มีรายการของตารางทั้งหมด มุมมอง (views) และฟังก์ชันสเกลาร์ที่เก็บไว้ในฐานข้อมูล
ประเด็นสำคัญคือ MySQL.Database ให้ความยืดหยุ่นสูงในการประมวลผลข้อมูลผ่านตัวเลือกต่างๆ อย่างเช่น การกำหนด Encoding การตั้ง CommandTimeout หรือแม้กระทั่งการเขียน SQL query แบบ native เพื่อดึงข้อมูลที่เจาะจงมากขึ้น
ส่วนตัวผมชอบการใช้ ReturnSingleDatabase = true เพราะมันช่วยให้ฉันดึงข้อมูลจากฐานข้อมูลที่ระบุเท่านั้น ทำให้รายการในนำทางไม่ยุ่งเหยิง และ HierarchicalNavigation = true นั้นเหมาะเวลาที่เรามีจำนวนตารางมากมาย เพราะมันจะจัดกลุ่มตารางตามชื่อ schema ได้ 😎