Table.Join ใช้รวมตารางสองตารางโดยจับคู่ค่าในคอลัมน์กำหนด สนับสนุนทุกประเภท join (Inner, Left Outer, Right Outer, Full Outer, Anti, Semi) เหมือน SQL Join
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| table1 | table | ตารางแรก (ตารางซ้าย) – ตัวอักษรกำหนดว่าจะรักษาแถวจากตารางนี้ไว้ในจำนวนเท่าใด |
| key1 | any | คอลัมน์ key จากตารางแรก – สามารถระบุเป็น text เดี่ยว “ID” หรือ list หลายคอลัมน์ {“TenantID”, “CustomerID”} |
| table2 | table | ตารางที่สอง (ตารางขวา) – ตารางที่ต้องการรวมข้อมูลเข้า |
| key2 | any | คอลัมน์ key จากตารางที่สอง – ต้องตรงกันกับ key1 เพื่อจับคู่ข้อมูล |
| [joinKind]ไม่บังคับ | number | ประเภท join (JoinKind.Inner, JoinKind.LeftOuter, JoinKind.RightOuter, JoinKind.FullOuter, JoinKind.LeftAnti, JoinKind.RightAnti, JoinKind.LeftSemi, JoinKind.RightSemi) – ถ้าไม่ระบุจะเป็น JoinKind.Inner |
| [joinAlgorithm]ไม่บังคับ | number | อัลกอริทึมที่ใช้ในการ join (ใช้ต่อเมื่อต้องการปรับแต่ง performance – ใช้ไม่บ่อยนัก) |
| [keyEqualityComparers]ไม่บังคับ | list | รายการ equality comparer สำหรับการเปรียบเทียบค่า (ใช้ต่อเมื่อต้องการ case-insensitive หรือการเปรียบเทียบพิเศษ) |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
Table.Join ทำหน้าที่รวมตารางสองตารางเข้าด้วยกัน โดยจับคู่แถวตามค่าที่ตรงกันในคอลัมน์ key
ส่วนตัวผมใช้ Table.Join เวลาต้องรวมข้อมูลจากตารางที่มีความสัมพันธ์กัน เช่นรวมออเดอร์กับข้อมูลลูกค้า แล้วระบุว่า join แบบไหน (inner, left outer ฯลฯ) ตรงไปตรงมา ไม่ต้องยุ่งกับ conditional logic แบบ Table.SelectRows 😎
รวมตารางสองตารางโดยจับคู่คอลัมน์ CustomerID ทั้งสองตาราง – ได้เฉพาะแถวที่มีค่า CustomerID ตรงกันในทั้งสองตาราง
Left Outer Join เก็บแถวทั้งหมดจากตารางซ้าย (Customers) และเพิ่มข้อมูลจากตารางขวา (Orders) ถ้ามี – ถ้าไม่มีการจับคู่ให้ null
ใช้ list key {"TenantID", "CustomerID"} เพื่อจับคู่หลายคอลัมน์พร้อมกัน – ทั้งสองคอลัมน์ต้องตรงกันจึงจะจับคู่ได้
Left Anti Join คืนแถวจากตารางซ้ายที่ไม่มีการจับคู่ในตารางขวา – มีประโยชน์สำหรับการหา records ที่ขาดหายไป
ไม่จำเป็น JoinKind.Inner จะถูกใช้เป็น default ถ้าคุณไม่ระบุ – แต่ถ้าต้อง Left Outer หรือประเภทอื่นต้องระบุชัดเจน
Key ไม่ตรงกัน = ไม่มีการจับคู่ (หรือได้ null ใน Left/Right Outer Join) – ค่า null ใน key ถือว่าไม่ตรงกัน (null ≠ null)
Inner = เฉพาะแถวที่มีการจับคู่ | Left Outer = เก็บแถวทั้งหมดจากตารางซ้าย + เพิ่มข้อมูลจากตารางขวา (null ถ้าไม่มีการจับคู่)
ได้ ใช้ list key เช่น {"Col1", "Col2", "Col3"} และต้องตรงกันทั้ง 3 คอลัมน์จึงจะจับคู่
Power Query จะเพิ่มเลขตัวเลขให้ (เช่น Name, Name2) – ถ้าไม่อยากให้เกิดปัญหาควร rename หรือ select เฉพาะคอลัมน์ที่ต้องการก่อน join
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.Join จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Table.AddJoinColumn เชื่อมต่อข้อมูลจากสองตารางตามคีย์ที่ตรงกัน โดยเก็บผลลัพธ์ในคอลัมน์ใหม่เป็นตารางแบบ nested แทนการขยายแนวนอน
Table.AddMatchColumn เพิ่มคอลัมน์ใหม่ที่มีค่าจากการแมตช์แถวในตารางอื่น โดยค้นหาค่าที่ตรงกับคีย์ เหมือน VLOOKUP แต่ทำงานโดยตรงบนตารางทั้งหมด
Table.Combine ใช้สำหรับรวม list ของ table เข้าเป็น table เดียว ยับยั้ง append ตัว 1 แถวหลาย ๆ ตารางพร้อมกัน
Table.ExpandTableColumn ใช้แตกข้อมูลจากคอลัมน์ที่เป็น nested table ออกมาเป็นคอลัมน์และแถวปกติในตารางหลัก โดยรักษาข้อมูลคอลัมน์อื่นไว้ และทำซ้ำแถวหลักสำหรับแต่ละแถวในตารางซ้อน มักใช้คู่กับ Table.NestedJoin หลัง join ตาราง หรือใช้ขยายข้อมูลจากแหล่งที่มีโครงสร้างแบบ hierarchical เช่น JSON หรือ API
Table.FuzzyJoin ใช้สำหรับเชื่อม 2 ตารางเข้าด้วยกันโดยใช้คีย์ที่มีความคล้ายคลึงกัน (Fuzzy Matching) แทนที่จะต้องเหมือนกันทุกตัวอักษร สามารถกำหนดระดับความเหมือน (Threshold) และตัวเลือกอื่นๆ ได้
Table.NestedJoin เชื่อมตารางสองตารางด้วยคีย์ที่กำหนด และสร้างคอลัมน์ใหม่ที่เก็บตารางย่อยของแถวที่จับคู่ได้ เหมาะกับงาน Merge ที่ต้องการเก็บรายละเอียดฝั่งขวาไว้เป็น nested table ก่อนจะ Expand หรือทำขั้นตอนต่อ
Table.SelectRows เป็นฟังก์ชันสำหรับกรองตาราง (filter table) ใน Power Query โดยใช้ฟังก์ชันเงื่อนไข (condition function) เพื่อตรวจสอบแต่ละแถว ถ้าเงื่อนไขคืนค่า true จะเก็บแถวนั้นไว้ ถ้าเป็น false จะตัดทิ้ง สามารถใช้ keyword 'each' ร่วมกับการอ้างอิงคอลัมน์ด้วย [ColumnName] เพื่อเขียนเงื่อนไขได้สะดวก รองรับการกรองตามตัวเลข ข้อความ วันที่ การตรวจสอบค่า null และเงื่อนไขที่ซับซ้อนด้วย and/or operators ฟังก์ชันนี้รองรับ Query Folding ซึ่งช่วยเพิ่มประสิทธิภาพเมื่อทำงานกับ data source ขนาดใหญ่
ระบุอัลกอริทึมที่ใช้ในการ Join ข้อมูลจากสองตาราง ช่วยให้คุณควบคุมประสิทธิภาพการทำงานได้ดีขึ้น
JoinKind.Type คือ enum ที่ระบุประเภทของการ Join (Inner, Outer, Anti, Semi) เมื่อรวมตารางข้อมูลสองตาราง ใช้กับ Table.Join เพื่อควบคุมว่าแถวไหนจะปรากฏในผลลัพธ์
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่