Table.NestedJoin เชื่อมตารางสองตารางด้วยคีย์ที่กำหนด และสร้างคอลัมน์ใหม่ที่เก็บตารางย่อยของแถวที่จับคู่ได้ เหมาะกับงาน Merge ที่ต้องการเก็บรายละเอียดฝั่งขวาไว้เป็น nested table ก่อนจะ Expand หรือทำขั้นตอนต่อ
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| table1 | table | ตารางหลัก (ฝั่งซ้าย) ที่ต้องการคงแถวไว้ตามชนิดการ join | |
| key1 | any | คอลัมน์คีย์ของ table1 ระบุเป็นชื่อคอลัมน์หรือ list ของชื่อคอลัมน์ | |
| table2 | any | ตารางที่ต้องการเชื่อม (ฝั่งขวา) ซึ่งจะถูกจับคู่แล้วเก็บเป็นตารางย่อย | |
| key2 | any | คอลัมน์คีย์ของ table2 ให้ตรงกับ key1 (จำนวนคอลัมน์ต้องเท่ากัน) | |
| newColumnName | text | ชื่อคอลัมน์ใหม่ที่จะเก็บตารางย่อยของข้อมูลที่เชื่อมได้ | |
| [joinKind]ไม่บังคับ | nullable number | JoinKind.LeftOuter | ชนิดการเชื่อม เช่น JoinKind.LeftOuter, JoinKind.Inner, JoinKind.FullOuter ค่าเริ่มต้นคือ LeftOuter |
| [keyEqualityComparers]ไม่บังคับ | nullable list | null | รายการ comparer สำหรับเทียบคีย์แต่ละคอลัมน์ ใช้เฉพาะกรณีพิเศษ เช่น case-insensitive |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
Table.NestedJoin ใช้เชื่อมตารางสองตารางด้วยคีย์ที่กำหนด แล้วสร้างคอลัมน์ใหม่เป็นตารางย่อย (nested table) ของข้อมูลที่จับคู่กันได้ ผลลัพธ์คล้ายการ Merge Queries ใน Power Query แต่จุดเด่นคือได้คอลัมน์ที่ยังเป็นตารางอยู่ เพื่อให้คุณเลือกว่าจะขยาย (Expand) หรือทำขั้นตอนต่อได้ยืดหยุ่น
เชื่อมตารางธุรกรรมกับตารางอ้างอิง (เช่น สินค้า ลูกค้า) แล้วค่อย Expand เพื่อดึงข้อมูลเพิ่ม
เหมาะเมื่ออยากเก็บหลายรายการที่จับคู่กันไว้ในคอลัมน์เดียวก่อน แล้วค่อยเลือกวิธีจัดการภายหลัง
กำหนด joinKind เพื่อเลือกผลลัพธ์แบบ Inner/Left/Right/Full ให้ตรงกับโจทย์
ไม่ระบุ joinKind จะใช้ LeftOuter อัตโนมัติ ทำให้ทุกแถวของ Calls ถูกเก็บไว้ และ CustomerDetails มีข้อมูลเฉพาะแถวที่จับคู่ได้
Inner Join จะเก็บเฉพาะแถวที่จับคู่ได้ทั้งสองฝั่ง ทำให้ OrderID=2 ถูกตัดออก
การส่งคีย์เป็น list ช่วยให้ join หลายคอลัมน์ได้แม่นยำขึ้น ป้องกันการจับคู่ผิด
กำหนด keyEqualityComparers เป็น list ของ Comparer เพื่อควบคุมการเทียบคีย์ เช่น case-insensitive ใช้เฉพาะกรณีพิเศษเท่านั้น
Table.NestedJoin คืนคอลัมน์เป็นตารางย่อย ส่วน Table.Join จะขยายคอลัมน์จากอีกตารางทันที เหมาะคนละสถานการณ์
ใช้ Table.ExpandTableColumn เพื่อเลือกคอลัมน์จากตารางย่อยมาแสดงในตารางหลัก
ตารางย่อยในคอลัมน์ผลลัพธ์จะเก็บทุกแถวที่จับคู่ได้ ไม่ได้จำกัดแค่แถวแรก
ถ้าไม่ระบุ joinKind จะใช้ JoinKind.LeftOuter ซึ่งเก็บทุกแถวจากตารางซ้ายไว้
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.NestedJoin จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Table.AddJoinColumn เชื่อมต่อข้อมูลจากสองตารางตามคีย์ที่ตรงกัน โดยเก็บผลลัพธ์ในคอลัมน์ใหม่เป็นตารางแบบ nested แทนการขยายแนวนอน
Table.AddMatchColumn เพิ่มคอลัมน์ใหม่ที่มีค่าจากการแมตช์แถวในตารางอื่น โดยค้นหาค่าที่ตรงกับคีย์ เหมือน VLOOKUP แต่ทำงานโดยตรงบนตารางทั้งหมด
โหลดตารางเข้าสู่หน่วยความจำ (RAM) เพื่อแยกข้อมูลจากแหล่งเดิมและป้องกันไม่ให้ Query Folding ดึงข้อมูลใหม่
Table.Combine ใช้สำหรับรวม list ของ table เข้าเป็น table เดียว ยับยั้ง append ตัว 1 แถวหลาย ๆ ตารางพร้อมกัน
Table.ExpandListColumn ใช้สำหรับขยายคอลัมน์ที่เก็บข้อมูลแบบ List ให้เป็นแถวแยก โดยแต่ละรายการใน List จะกลายเป็นแถวใหม่ ส่วนข้อมูลในคอลัมน์อื่นจะถูกทำซ้ำตามจำนวน
Table.ExpandTableColumn ใช้แตกข้อมูลจากคอลัมน์ที่เป็น nested table ออกมาเป็นคอลัมน์และแถวปกติในตารางหลัก โดยรักษาข้อมูลคอลัมน์อื่นไว้ และทำซ้ำแถวหลักสำหรับแต่ละแถวในตารางซ้อน มักใช้คู่กับ Table.NestedJoin หลัง join ตาราง หรือใช้ขยายข้อมูลจากแหล่งที่มีโครงสร้างแบบ hierarchical เช่น JSON หรือ API
Table.Join ใช้รวมตารางสองตารางโดยจับคู่ค่าในคอลัมน์กำหนด สนับสนุนทุกประเภท join (Inner, Left Outer, Right Outer, Full Outer, Anti, Semi) เหมือน SQL Join
Table.SelectRows เป็นฟังก์ชันสำหรับกรองตาราง (filter table) ใน Power Query โดยใช้ฟังก์ชันเงื่อนไข (condition function) เพื่อตรวจสอบแต่ละแถว ถ้าเงื่อนไขคืนค่า true จะเก็บแถวนั้นไว้ ถ้าเป็น false จะตัดทิ้ง สามารถใช้ keyword 'each' ร่วมกับการอ้างอิงคอลัมน์ด้วย [ColumnName] เพื่อเขียนเงื่อนไขได้สะดวก รองรับการกรองตามตัวเลข ข้อความ วันที่ การตรวจสอบค่า null และเงื่อนไขที่ซับซ้อนด้วย and/or operators ฟังก์ชันนี้รองรับ Query Folding ซึ่งช่วยเพิ่มประสิทธิภาพเมื่อทำงานกับ data source ขนาดใหญ่
ระบุอัลกอริทึมที่ใช้ในการ Join ข้อมูลจากสองตาราง ช่วยให้คุณควบคุมประสิทธิภาพการทำงานได้ดีขึ้น
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่