CONCATENATEX ทำหน้าที่รวมข้อความจากแต่ละแถวในตารางเข้าด้วยกัน เหมาะสำหรับสร้างรายชื่อค่าที่คั่นด้วยจุลภาค หรือรวมข้อมูลจากหลายแถว ใช้ได้กับตัวอักษรหรือค่าใดๆที่ต้องการทำให้เป็นข้อความ
=CONCATENATEX(<table>, <expression>, [<delimiter>], [<orderBy_expression>], [<order>])
=CONCATENATEX(<table>, <expression>, [<delimiter>], [<orderBy_expression>], [<order>])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table | Table | Yes | ตารางที่มีแถวต่างๆ ที่ต้องการประเมิน expression ในแต่ละแถว | |
| expression | Scalar | Yes | Expression ที่ประเมินในแต่ละแถว สามารถอ้างอิงคอลัมน์จากตารางหรือสร้าง expression ใหม่ | |
| delimiter | Text | Optional | "" | ข้อความที่ใช้คั่นระหว่างค่าต่างๆ (เช่น “,” หรือ ” | “) ค่าเริ่มต้นคือ “” |
| orderBy_expression | Scalar | Optional | Expression ที่ใช้กำหนดลำดับการเรียง สามารถเรียงตามค่า หรือตามคอลัมน์อื่น | |
| order | Numeric/Boolean | Optional | 0 | ลำดับการเรียง 0 หรือ FALSE สำหรับ descending, 1 หรือ TRUE สำหรับ ascending |
รวมชื่อสินค้าหลายแถวให้แสดงเป็นสตริงเดียว
เช่น รวมหมายเหตุของออเดอร์ให้แสดงในบรรทัดเดียวพร้อมตัวคั่น
Employee List = CONCATENATEX(Employees, Employees[FirstName] & " " & Employees[LastName], ", ")Employee List = CONCATENATEX(Employees, Employees[FirstName] & " " & Employees[LastName], ", ")
"Alan Brewer, Michael Blythe, James Bailey"
Category Products = CONCATENATEX(FILTER(Products, Products[Category] = "Electronics"), Products[ProductName], " | ", Products[Price], 0)Category Products = CONCATENATEX(FILTER(Products, Products[Category] = "Electronics"), Products[ProductName], " | ", Products[Price], 0)
"Laptop | Monitor | Keyboard"
Items Summary = VAR ItemList = CONCATENATEX( TOPN(5, Sales, Sales[Amount], 0), Sales[ProductName] & " (" & Sales[Amount] & ")", "; " ) RETURN "Top 5: " & ItemLi…Items Summary =
VAR ItemList = CONCATENATEX(
TOPN(5, Sales, Sales[Amount], 0),
Sales[ProductName] & " (" & Sales[Amount] & ")",
"; "
)
RETURN
"Top 5: " & ItemList
"Top 5: Product A (500); Product B (450); Product C (400); Product D (350); Product E (300)"
Breadcrumb = VAR CurrentCategory = VALUES(Products[Category]) VAR RelatedSubcategories = RELATEDTABLE(Subcategories) RETURN CONCATENATEX( RelatedSubcategories,…Breadcrumb =
VAR CurrentCategory = VALUES(Products[Category])
VAR RelatedSubcategories = RELATEDTABLE(Subcategories)
RETURN
CONCATENATEX(
RelatedSubcategories,
Subcategories[Name],
" > ",
Subcategories[SortOrder],
1
)
"Electronics > Computers > Laptops"
CONCATENATE รวมค่าจากคอลัมน์เดียวหรือที่ระบุเฉพาะ ส่วน CONCATENATEX ประเมิน expression ในแต่ละแถวของตารางทั้งหมด ทำให้ยืดหยุ่นมากขึ้น
ค่าเริ่มต้นคือ “” (ว่างเปล่า) ข้อความจะรวมติดกันโดยไม่มีตัวคั่น ถ้าต้องการคั่นต้องระบุ delimiter เช่น “, ” หรือ ” | “
ไม่ได้ CONCATENATEX ไม่รองรับ DirectQuery mode สำหรับ calculated columns หรือ RLS rules ต้องใช้ Import mode แทน
ใช้เมื่อต้องการเรียงลำดับค่าในผลลัพธ์ เช่น ต้องการเรียงตามหมวดหมู่ หรือเรียงตามค่าตัวเลข หากไม่ระบุจะเรียงตามลำดับของข้อมูลดั้งเดิม
CONCATENATEX ประเมิน expression ในแต่ละแถวของตารางแล้วรวมผลลัพธ์เข้าด้วยกันเป็นข้อความเดียว ใช้ delimiter ช่วยคั่นค่าต่างๆ
ที่เจ๋งคือ มันเป็น iterator function ที่มี row context เวลาประเมิน expression แต่ยังคงเป็น scalar result – เข้าใจ concept นี้แล้ว DAX ก็ไม่ยากแล้ว
ส่วนตัวผม ใช้ CONCATENATEX บ่อยมากเมื่อต้องการทำ summary ของข้อมูลย่อย หรือสร้าง breadcrumb list เพื่อให้ผู้ใช้เข้าใจโครงสร้างข้อมูลได้ดีขึ้น