Table.RenameColumns ใช้สำหรับเปลี่ยนชื่อคอลัมน์หนึ่งหรือหลายคอลัมน์ในตารางพร้อมกัน โดยส่งผ่าน list ของ rename pairs {ชื่อเก่า, ชื่อใหม่}
=Table.RenameColumns(table as table, renames as list, optional missingField as nullable number) as table
=Table.RenameColumns(table as table, renames as list, optional missingField as nullable number) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table | table | Yes | ตารางที่ต้องการเปลี่ยนชื่อคอลัมน์ | |
| renames | list | Yes | List ของ Rename Pairs โดยแต่ละ Pair คือ {ชื่อเก่า, ชื่อใหม่} เช่น {{“OldName”, “NewName”}} สำหรับเปลี่ยนชื่อเดียว หรือ {{“Old1”, “New1”}, {“Old2”, “New2”}} สำหรับหลายชื่อ | |
| missingField | number | Optional | กำหนดพฤติกรรมเมื่อไม่พบคอลัมน์ที่ต้องการเปลี่ยนชื่อ สามารถใช้ MissingField.Ignore (ข้ามผ่าน) หรือ MissingField.UseNull (ใช้ Null) ถ้าไม่ระบุจะ throw Error |
เปลี่ยนชื่อคอลัมน์ที่ได้มาจาก Source ให้เป็นชื่อที่เข้าใจง่ายและสอดคล้องกัน
เมื่อชื่อคอลัมน์ถูกโหลดมาผิดพลาด สามารถแก้ไขได้ทันทีใน Power Query
let Sales = Table.FromRecords( {{[ProductID = 1, Name = "Laptop", Amount = 15000]}, {[ProductID = 2, Name = "Mouse", Amount = 500]}} ), Renamed = Table.RenameCo…let
Sales = Table.FromRecords(
{{[ProductID = 1, Name = "Laptop", Amount = 15000]},
{[ProductID = 2, Name = "Mouse", Amount = 500]}}
),
Renamed = Table.RenameColumns(Sales, {{"ProductID", "รหัสสินค้า"}})
in
Renamed
Table with columns: รหัสสินค้า, Name, Amount
let CustomerData = Table.FromRecords( {{[CustID = 1, FullName = "Alice", PhoneNum = "081-xxx"]}, {[CustID = 2, FullName = "Bob", PhoneNum = "082-yyy"]}} ), Rena…let
CustomerData = Table.FromRecords(
{{[CustID = 1, FullName = "Alice", PhoneNum = "081-xxx"]},
{[CustID = 2, FullName = "Bob", PhoneNum = "082-yyy"]}}
),
Renamed = Table.RenameColumns(CustomerData,
{{"CustID", "Customer ID"},
{"FullName", "Full Name"},
{"PhoneNum", "Phone Number"}})
in
Renamed
Table with columns: Customer ID, Full Name, Phone Number
let Data = Table.FromRecords( {{[OrderID = 1, OrderDate = "2025-01-01"]}, {[OrderID = 2, OrderDate = "2025-01-02"]}} ), Renamed = Table.RenameColumns(Data, {{"O…let
Data = Table.FromRecords(
{{[OrderID = 1, OrderDate = "2025-01-01"]},
{[OrderID = 2, OrderDate = "2025-01-02"]}}
),
Renamed = Table.RenameColumns(Data,
{{"OrderID", "Order ID"},
{"NonExistentColumn", "New Name"}},
MissingField.Ignore)
in
Renamed
Table with columns: Order ID, OrderDate (ชื่อ NonExistentColumn ถูกข้ามผ่านโดยไม่เกิด Error)
let RawData = Table.FromRecords( {{[prod_id = 1, prod_name = "A", unit_price = 100]}, {[prod_id = 2, prod_name = "B", unit_price = 200]}} ), RenamingList = {{"p…let
RawData = Table.FromRecords(
{{[prod_id = 1, prod_name = "A", unit_price = 100]},
{[prod_id = 2, prod_name = "B", unit_price = 200]}}
),
RenamingList = {{"prod_id", "ProductID"},
{"prod_name", "ProductName"},
{"unit_price", "UnitPrice"}},
Cleaned = Table.RenameColumns(RawData, RenamingList)
in
Cleaned
Table with columns: ProductID, ProductName, UnitPrice (เปลี่ยนจาก snake_case เป็น PascalCase)
ต้องตรงเป๊ะครับ เพราะ Power Query เป็น Case Sensitive (สำคัญ Capital/Lowercase) และสำคัญช่องว่าง (Space) ด้วย ถ้าพิมพ์เสีย “ProductId” แทน “ProductID” มันจะหาไม่เจอและเกิด Error
โดยปกติจะเกิด Error ครับ แต่สามารถใช้ MissingField.Ignore เพื่อข้ามผ่านได้ ไม่ว่าจะหาเจอหรือไม่เจอก็จะ Rename ชื่อที่เจออยู่เท่านั้นค่ะ
ได้ครับ แต่มันจะเกิด Error เพราะจะทำให้มีชื่อคอลัมน์ซ้ำกัน Power Query ไม่อนุญาตให้มีชื่อคอลัมน์ซ้ำ ต้องระวังจุดนี้นะครับ
Table.RenameColumns เปลี่ยนชื่อเฉพาะที่ระบุ แต่ Table.TransformColumnNames ใช้ function เพื่อแปลงชื่อทุกคอลัมน์ เช่นต้องการเปลี่ยนทั้งหมดเป็น UPPER CASE
ฟังก์ชัน Table.RenameColumns ใช้เพื่อเปลี่ยนชื่อคอลัมน์ในตาราง โดยที่สำคัญคือสามารถเปลี่ยนชื่อได้พร้อมกันหลายคอลัมน์ในครั้งเดียว
ที่เจ๋งคือมันรับ List ของ Rename Pairs ได้อย่างสะดวก ทำให้ Code มันอ่านง่ายมากเมื่อเทียบกับการเปลี่ยนชื่อทีละคอลัมน์ ส่วนตัวผมใช้กับ Data Cleaning บ่อยมากครับ เพราะมักต้องจัดระเบียบชื่อคอลัมน์ให้เป็นมาตรฐาน
ที่ต้องระวังคือ Power Query มัน Case Sensitive ครับ ถ้าชื่อเก่าไม่ตรงเป๊ะ (เลือก Space สั้นยาว) จะเกิด Error แบบเพิ่มเติม ซึ่งเราสามารถจัดการได้ด้วย missingField parameter ครับ 😎