=CONCATENATE(<text1>, <text2>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| text1 | scalar | Yes | ข้อความ/ค่าสเกลาร์ตัวแรก สามารถเป็นข้อความ ตัวเลข boolean หรือ reference ไปยังคอลัมน์ | |
| text2 | scalar | Yes | ข้อความ/ค่าสเกลาร์ตัวที่สอง สามารถเป็นข้อความ ตัวเลข boolean หรือ reference ไปยังคอลัมน์ |
เช่น รหัส + ชื่อ เพื่อใช้ในตารางหรือการ์ด
เช่น “ยอดขาย: 1,234” (เมื่อเตรียมสตริงส่วนเลขไว้แล้ว)
Product Label = CONCATENATE( Products[ProductCode], Products[ProductName] )Product Label =
CONCATENATE(
Products[ProductCode],
Products[ProductName]
)
สตริงที่เป็นการต่อ 2 คอลัมน์เข้าด้วยกัน เช่น "ABC123Widget"
Product Label (Dash) = CONCATENATE( Products[ProductCode], CONCATENATE(" - ", Products[ProductName]) )=Product Label (Dash) =
CONCATENATE(
Products[ProductCode],
CONCATENATE(" - ", Products[ProductName])
)
สตริงลักษณะ "ABC123 - Widget"
Title Text = CONCATENATE("ยอดขาย ", "(รวม)")Title Text =
CONCATENATE("ยอดขาย ", "(รวม)")
สตริง "ยอดขาย (รวม)"
Sales Info = CONCATENATE( "ยอดขาย: ", CONCATENATE(FORMAT([Total Sales], "$#,##0"), " USD") )Sales Info =
CONCATENATE(
"ยอดขาย: ",
CONCATENATE(FORMAT([Total Sales], "$#,##0"), " USD")
)
สตริง "ยอดขาย: $1,250 USD"
// ❌ ทำให้ปัญหา Full Name (Bad) = CONCATENATE( Sales[FirstName], CONCATENATE(" ", Sales[LastName]) ) // ✅ แก้ปัญหา ใช้ IF Full Name (Good) = IF( ISBLANK(Sales[F…=// ❌ ทำให้ปัญหา
Full Name (Bad) =
CONCATENATE(
Sales[FirstName],
CONCATENATE(" ", Sales[LastName])
)
// ✅ แก้ปัญหา ใช้ IF
Full Name (Good) =
IF(
ISBLANK(Sales[FirstName]),
Sales[LastName],
IF(
ISBLANK(Sales[LastName]),
Sales[FirstName],
CONCATENATE(Sales[FirstName], CONCATENATE(" ", Sales[LastName]))
)
)
Version ✅ แสดง "John Smith" หรือ "John" หรือ "Smith" (ไม่มีช่องว่างเปล่า)
DAX CONCATENATE รับ 2 ค่าเท่านั้น (ต่างจาก Excel ที่รับได้ถึง 255 ค่า) ถ้าต้องต่อหลายค่า ให้ใช้ & operator เช่น [Col1] & [Col2] & [Col3] หรือใช้ CONCATENATEX ถ้าต้องต่อจากหลายแถว
ใช้ได้ใน Calculated Column, Measure, และ Calculated Table ส่วน DirectQuery mode ไม่รองรับ CONCATENATE ในคอลัมน์หรือ RLS rules
ไม่ต่างมากนัก & operator เร็วกว่า และอ่านง่ายกว่า เมื่อต้องต่อหลายค่า CONCATENATE ต้อง nest ซ้อนกันเหมือน CONCATENATE(CONCATENATE([Col1], [Col2]), [Col3]) ส่วน & ได้เลย [Col1] & [Col2] & [Col3]
ไม่ตัด ถ้าค่าใดค่าหนึ่งเป็น BLANK ผลลัพธ์อาจมี space ว่างหรือค่าพิการ จึงต้องใช้ IF หรือ COALESCE ก่อนต่อ
คืนค่าเป็นข้อความ (string) เสมอ ตัวเลขถูกแปลงโดยอัตโนมัติ ถ้าต้องจัดรูปแบบ ให้ใช้ FORMAT ก่อน
CONCATENATE ใช้ต่อข้อความ 2 ส่วนให้เป็นสตริงเดียว เหมาะกับงานทำชื่อแสดงผล (label) หรือประกอบข้อความจากหลายคอลัมน์ เช่น “รหัส – ชื่อสินค้า” โดยฟังก์ชันนี้รับได้ครั้งละ 2 ค่า ส่วนตัวผมชอบใช้เมื่ออยากต่อข้อความจากสองที่แหล่งเท่านั้น เพราะความชัดเจน ได้เลย ไม่ต้อง nest หลาย ๆ ครั้งเหมือนแบบซ้อนกัน
ถ้าต้องต่อหลายค่าแบบยาว ๆ หรือต่อจากตารางทั้งแถว ให้พิจารณาใช้ CONCATENATEX (iterator version) ซึ่งสามารถนำค่าจากหลายแถวมาต่อเป็นสตริงเดียวได้
ที่เจ๋งคือ CONCATENATE ไม่ตัด BLANK โดยอัตโนมัติ ถ้าหนึ่งในสองค่าเป็น BLANK มันจะแสดงผล “” (empty string) เฉย ๆ บางครั้งนี่เป็นปัญหา เลยต้องใช้ COALESCE หรือ IF เพื่อเช็คค่า BLANK ก่อนต่อ