UNION รวมหลายตารางให้เป็นตารางเดียวด้วยการต่อแถว โดยเก็บแถวซ้ำไว้ทั้งหมด เหมาะกับการรวมชุดข้อมูลที่มีโครงสร้างคอลัมน์สอดคล้องกัน
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| table1 | Table | ตารางแรก (จะใช้ชื่อคอลัมน์จากตารางนี้) | |
| table2 | Table | ตารางที่สอง (จะต่อเพิ่มเข้าไปหลังตารางแรก) | |
| [table3]ไม่บังคับ | Table | ไม่ระบุ | ตารางที่สาม (และต่อเติมได้อีก) |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
UNION เป็นฟังก์ชันที่ใช้รวมหลายตารางให้เป็นตารางเดียว โดยนำแถวของแต่ละตารางมาต่อรวมกันแนวตั้ง (แบบ append/stack) ซึ่งต่างจากการ join ที่ต่อแนวนอน
ประเด็นสำคัญคือ UNION เก็บแถวซ้ำไว้ทั้งหมด (duplicates retained) ต่างจาก SQL UNION ที่ลบแถวซ้ำ ถ้าต้องการลบแถวซ้ำ ให้ครอบ UNION ด้วย DISTINCT
คอลัมน์ต้องตรงกันตามตำแหน่ง (position, ไม่ใช่ชื่อ) และตารางที่ได้จะใช้ชื่อคอลัมน์จากตารางตัวแรก
ส่วนตัวผมเห็นว่า UNION จริงๆ มีประโยชน์มากเวลาต้องรวมข้อมูลจากหลายแหล่ง เช่น ข้อมูลปีต่างๆ หรือสาขาต่างๆ หรือแม้แต่รวมข้อมูล sales กับ returns ให้เป็นชุดเดียว ก่อนจะนำไปสรุปรวม 😎
เช่น รวมยอดขายจากหลายไฟล์/หลายช่วงที่แยกตารางไว้
รวมรายการจากหลายเงื่อนไขก่อนสรุปด้วย COUNTROWS หรือ SUMX
นำ ProductID จาก Sales และ Returns มาต่อรวมกัน ถ้าสินค้า ID ตัวเดียวมีทั้ง sales และ return ก็จะปรากฏ 2 แถว
สามารถระบุตารางได้มากกว่า 2 ตัว เพื่อรวมข้อมูลหลายปีหรือหลายช่วงเวลาในครั้งเดียว
เพราะ UNION เก็บแถวซ้ำ หากต้องการเอาซ้ำออก ให้ครอบด้วย DISTINCT
ใช้ SELECTCOLUMNS เพื่อแนวทางคอลัมน์ให้ตรงกัน (ชื่อและประเภทข้อมูล) ก่อนที่จะ UNION
ไม่ลบ UNION เก็บแถวซ้ำไว้ทั้งหมด ต่างจาก SQL UNION ถ้าต้องการลบแถวซ้ำ ให้ใช้ DISTINCT(UNION(…))
ต้องมีจำนวนคอลัมน์เท่ากัน และชนิดข้อมูลต้องเข้ากันได้ คอลัมน์จะจับคู่ตามตำแหน่ง (position) ไม่ใช่ชื่อ
UNION ต่อแนวตั้ง (append rows) JOIN ต่อแนวนอน (combine columns) เลือกตามลักษณะงาน
ได้ สามารถระบุตารางได้กี่ตัวก็ได้ UNION(Table1, Table2, Table3, … )
จะใช้ชื่อคอลัมน์จากตารางแรก (table1) ตารางที่เหลือจะปรับตามตำแหน่ง
ฟังก์ชันที่ผู้เขียนโยงไว้กับ UNION จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
DATATABLE สร้างตารางแบบ hardcode ด้วยข้อมูลคงที่ โดยระบุชื่อคอลัมน์ ชนิดข้อมูล และค่าของแต่ละแถว เหมาะสำหรับตารางอ้างอิงเล็กๆ เช่น lookup table หรือข้อมูลตัวอย่าง
DISTINCT คืนค่าตารางที่มีคอลัมน์เดียว ซึ่งประกอบด้วยค่าที่ไม่ซ้ำกันจากคอลัมน์ที่ระบุ โดยไม่รวม Blank Row ที่เกิดจาก Invalid Relationship ความแตกต่างหลักจาก VALUES คือ DISTINCT จะซ่อน Data Quality Issues ในขณะที่ VALUES จะเตือนให้เห็น
EXCEPT คืนตารางของแถวที่อยู่ใน LeftTable แต่ไม่อยู่ใน RightTable เหมาะกับการหาสิ่งที่ขาดหาย เช่น สินค้าที่ไม่เคยขาย ลูกค้าที่ไม่มีธุรกรรม
INTERSECT คืนตารางของแถวที่อยู่ในทั้ง LeftTable และ RightTable เหมาะกับการหาสิ่งที่ซ้ำกัน/ร่วมกันระหว่างสองชุดข้อมูล โดยรักษาเอาแถวที่ซ้ำกันไว้ด้วย
สร้างตารางใหม่โดยเลือกเฉพาะคอลัมน์ที่ต้องการจากตารางต้นฉบับและเพิ่มคอลัมน์ที่คำนวณได้ ต่างจาก ADDCOLUMNS ตรงที่ SELECTCOLUMNS เริ่มจากตารางว่างแล้วเพิ่มเฉพาะคอลัมน์ที่ระบุ ทำให้สามารถปรับโครงสร้างตารางและเลือกข้อมูลที่จำเป็นได้อย่างยืดหยุ่น
SUMMARIZE สร้างตารางสรุปโดยจัดกลุ่มข้อมูลตามคอลัมน์ที่กำหนด คล้าย GROUP BY ใน SQL หรือ Pivot Table ใน Excel คืนค่าตารางที่มีหนึ่งแถวต่อหนึ่ง unique combination ของคอลัมน์ที่เลือก สามารถอ้างถึงคอลัมน์จาก related table ได้โดยตรงโดยไม่ต้องใช้ RELATED มักใช้สร้าง virtual table ใน measure เพื่อทำ intermediate calculations ก่อนใช้ iterator functions อย่าง SUMX, AVERAGEX คำนวณต่อ ⚠️ Best Practice: ใช้ ADDCOLUMNS ครอบ SUMMARIZE แทนการใส่ extension columns ตรงๆ เพื่อ performance และ filter context control ที่ดีกว่า สำหรับ calculated table แนะนำใช้ SUMMARIZECOLUMNS แทนเนื่องจากมี performance ดีกว่าอย่างมาก
VALUES ดึงค่าที่ไม่ซ้ำจากคอลัมน์ หรือดึงแถวทั้งหมดจากตาราง โดยรวมแถว BLANK ที่เกิดจากข้อผิดพลาดของความสัมพันธ์ (Referential Integrity Violations) ส่วน DISTINCT จะไม่รวมแถว BLANK นี้
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่