Table.CombineColumns รวมข้อมูลจากหลายคอลัมน์เข้าด้วยกันเป็นคอลัมน์เดียว โดยใช้ฟังก์ชัน Combiner ที่กำหนดเอง เช่น รวมชื่อ-นามสกุล หรือสร้างรหัสประจำตัว
=Table.CombineColumns(table as table, sourceColumns as list, combiner as function, newColumnName as text) as table
=Table.CombineColumns(table as table, sourceColumns as list, combiner as function, newColumnName as text) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table | table | Yes | ตารางต้นทางที่ต้องการรวมคอลัมน์ | |
| sourceColumns | list | Yes | รายชื่อคอลัมน์ที่ต้องการรวม (ลำดับเรื่อง – ตัวแรกจะถูกรวมเข้าก่อน) | |
| combiner | function | Yes | ฟังก์ชันรวมข้อมูล เช่น Combiner.CombineTextByDelimiter() หรือฟังก์ชันกำหนดเอง | |
| newColumnName | text | Yes | ชื่อของคอลัมน์ใหม่ที่เก็บข้อมูลรวมทั้งหมด |
สร้าง Full Name จาก First/Last Name
สร้าง Full Address จากส่วนประกอบที่อยู่
สร้าง Key สำหรับการ Join จากหลายคอลัมน์
let Source = Table.FromRecords({[First="John", Last="Doe"]}), Combined = Table.CombineColumns( Source, {"First", "Last"}, Combiner.CombineTextByDelimiter(" ", Q…let
Source = Table.FromRecords({[First="John", Last="Doe"]}),
Combined = Table.CombineColumns(
Source,
{"First", "Last"},
Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),
"FullName"
)
in
Combined
Table with columns: [First, Last, FullName]
FullName = "John Doe"
let Source = #table( type table [Year=text, Month=text, Day=text], {{"2025", "12", "23"}} ), Combined = Table.CombineColumns( Source, {"Year", "Month", "Day"},…let
Source = #table(
type table [Year=text, Month=text, Day=text],
{{"2025", "12", "23"}}
),
Combined = Table.CombineColumns(
Source,
{"Year", "Month", "Day"},
Combiner.CombineTextByDelimiter("-", QuoteStyle.None),
"DateCode"
)
in
Combined
Table with DateCode="2025-12-23"
let Source = Table.FromRecords({ [Street="123 Main St", City="Bangkok", Country="Thailand"] }), Combined = Table.CombineColumns( Source, {"Street", "City", "Cou…let
Source = Table.FromRecords({
[Street="123 Main St", City="Bangkok", Country="Thailand"]
}),
Combined = Table.CombineColumns(
Source,
{"Street", "City", "Country"},
Combiner.CombineTextByDelimiter(", ", QuoteStyle.None),
"FullAddress"
)
in
Combined
Table with FullAddress="123 Main St, Bangkok, Thailand"
let Source = Table.FromRecords({ [Product="Apple", Category="Fruit", Price="50"] }), Combined = Table.CombineColumns( Source, {"Product", "Category", "Price"},…let
Source = Table.FromRecords({
[Product="Apple", Category="Fruit", Price="50"]
}),
Combined = Table.CombineColumns(
Source,
{"Product", "Category", "Price"},
Combiner.CombineTextByDelimiter("|", QuoteStyle.All),
"ProductInfo"
)
in
Combined
Table with ProductInfo="\"Apple\"|\"Fruit\"|\"50\""
Text.Combine รวมลิสต์ข้อความและส่งคืนข้อความอย่างเดียว ส่วน Table.CombineColumns ทำการรวมคอลัมน์จากตาราง แล้วสร้างคอลัมน์ใหม่เพิ่มเข้าไป ใช้ Table.CombineColumns เวลาต้องการเพิ่มคอลัมน์รวมในตาราง ไม่ต้องสร้างขั้นตอนแยกต่างหาก
Combiner.CombineTextByDelimiter() เป็นที่นิยมสำหรับรวมข้อมูลแบบง่าย หรือสามารถเขียนฟังก์ชันเอง เช่น each Text.Combine(List.Transform(_, Text.From), “-“) สำหรับการรวมแบบกำหนดเอง
สำคัญมาก! ลำดับในรายการเป็นตัวกำหนดลำดับการรวม เช่น {“First”, “Last”} จะให้ First + Last แต่ {“Last”, “First”} จะให้ Last + First
ไม่ คอลัมน์เดิมยังคงอยู่ Table.CombineColumns เพียงเพิ่มคอลัมน์ใหม่เข้ามา ถ้าต้องการลบคอลัมน์เดิม ใช้ Table.RemoveColumns() หลังจากนั้น
ได้ แต่ต้องระวัง Combiner.CombineTextByDelimiter จัดการ null อัตโนมัติ ถ้าใช้ combiner แบบกำหนดเอง ต้องจัดการ null เอง ด้วย Text.From() หรือ Text.Replace()
QuoteStyle.None ไม่ใส่เครื่องหมาย quote รอบค่า (ปกติสำหรับข้อมูลทั่วไป), QuoteStyle.All ใส่เครื่องหมาย quote รอบทุกค่า (สำหรับ CSV หรือข้อมูลที่มีคอมมา)
Table.CombineColumns ใช้สำหรับรวมข้อมูลจากหลายคอลัมน์เข้าด้วยกันเป็นคอลัมน์เดียว โดยใช้ฟังก์ชันรวมข้อความ (Combiner) ที่เรากำหนด
ที่เจ๋งคือ มันทำให้เราไม่ต้องแยกเขียนโค้ด Text.Combine หลายบรรทัด – เพียงแค่บอกว่าคอลัมน์ไหนที่ต้องรวม, รวมยังไง, ชื่อคอลัมน์ใหม่คืออะไร แล้วเสร็จ บอกเลยว่ามันช่วยเวลาและทำให้โค้ดสั้นลงเยอะ
ส่วนตัวผม มักใช้ Table.CombineColumns คู่กับ Combiner.CombineTextByDelimiter เวลาต้องการรวมข้อมูลแบบง่ายๆ โดยใช้ตัวคั่นที่กำหนดเอง – เหมือนการรวมวันที่ (Year-Month-Day) หรือสร้างรหัสประจำตัวจากหลายคอลัมน์ ทำให้โค้ดอ่านเข้าใจง่าย และแก้ไขได้ง่ายด้วย