UNION รวมหลายตารางให้เป็นตารางเดียวด้วยการต่อแถว โดยเก็บแถวซ้ำไว้ทั้งหมด เหมาะกับการรวมชุดข้อมูลที่มีโครงสร้างคอลัมน์สอดคล้องกัน
=UNION(<table1>, <table2>[, <table3>, ...])
=UNION(<table1>, <table2>[, <table3>, ...])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table1 | Table | Yes | ตารางแรก (จะใช้ชื่อคอลัมน์จากตารางนี้) | |
| table2 | Table | Yes | ตารางที่สอง (จะต่อเพิ่มเข้าไปหลังตารางแรก) | |
| table3 | Table | Optional | ไม่ระบุ | ตารางที่สาม (และต่อเติมได้อีก) |
เช่น รวมยอดขายจากหลายไฟล์/หลายช่วงที่แยกตารางไว้
รวมรายการจากหลายเงื่อนไขก่อนสรุปด้วย COUNTROWS หรือ SUMX
All Transactions = UNION( VALUES(Sales[ProductID]), VALUES(Returns[ProductID]) )All Transactions =
UNION(
VALUES(Sales[ProductID]),
VALUES(Returns[ProductID])
)
ตารางที่มี ProductID จากทั้ง Sales และ Returns รวมกัน
All Years Data = UNION( VALUES(Year2022[CustomerID]), VALUES(Year2023[CustomerID]), VALUES(Year2024[CustomerID]) )All Years Data =
UNION(
VALUES(Year2022[CustomerID]),
VALUES(Year2023[CustomerID]),
VALUES(Year2024[CustomerID])
)
ตารางที่มี CustomerID จากทั้งสามปีรวมกัน
Unique Products = DISTINCT( UNION( VALUES(Sales[ProductID]), VALUES(Returns[ProductID]) ) )Unique Products =
DISTINCT(
UNION(
VALUES(Sales[ProductID]),
VALUES(Returns[ProductID])
)
)
ตารางที่มี ProductID ที่ไม่ซ้ำ
Combined Data = UNION( SELECTCOLUMNS(Sales, "ID", Sales[ID], "Amount", Sales[Amount]), SELECTCOLUMNS(Returns, "ID", Returns[ID], "Amount", Returns[Amount]) )Combined Data =
UNION(
SELECTCOLUMNS(Sales, "ID", Sales[ID], "Amount", Sales[Amount]),
SELECTCOLUMNS(Returns, "ID", Returns[ID], "Amount", Returns[Amount])
)
ตารางที่มี ID และ Amount จากทั้ง Sales และ Returns
ไม่ลบ UNION เก็บแถวซ้ำไว้ทั้งหมด ต่างจาก SQL UNION ถ้าต้องการลบแถวซ้ำ ให้ใช้ DISTINCT(UNION(…))
ต้องมีจำนวนคอลัมน์เท่ากัน และชนิดข้อมูลต้องเข้ากันได้ คอลัมน์จะจับคู่ตามตำแหน่ง (position) ไม่ใช่ชื่อ
UNION ต่อแนวตั้ง (append rows) JOIN ต่อแนวนอน (combine columns) เลือกตามลักษณะงาน
ได้ สามารถระบุตารางได้กี่ตัวก็ได้ UNION(Table1, Table2, Table3, … )
จะใช้ชื่อคอลัมน์จากตารางแรก (table1) ตารางที่เหลือจะปรับตามตำแหน่ง
UNION เป็นฟังก์ชันที่ใช้รวมหลายตารางให้เป็นตารางเดียว โดยนำแถวของแต่ละตารางมาต่อรวมกันแนวตั้ง (แบบ append/stack) ซึ่งต่างจากการ join ที่ต่อแนวนอน
ประเด็นสำคัญคือ UNION เก็บแถวซ้ำไว้ทั้งหมด (duplicates retained) ต่างจาก SQL UNION ที่ลบแถวซ้ำ ถ้าต้องการลบแถวซ้ำ ให้ครอบ UNION ด้วย DISTINCT
คอลัมน์ต้องตรงกันตามตำแหน่ง (position, ไม่ใช่ชื่อ) และตารางที่ได้จะใช้ชื่อคอลัมน์จากตารางตัวแรก
ส่วนตัวผมเห็นว่า UNION จริงๆ มีประโยชน์มากเวลาต้องรวมข้อมูลจากหลายแหล่ง เช่น ข้อมูลปีต่างๆ หรือสาขาต่างๆ หรือแม้แต่รวมข้อมูล sales กับ returns ให้เป็นชุดเดียว ก่อนจะนำไปสรุปรวม 😎