Table.ExpandListColumn ใช้สำหรับขยายคอลัมน์ที่เก็บข้อมูลแบบ List ให้เป็นแถวแยก โดยแต่ละรายการใน List จะกลายเป็นแถวใหม่ ส่วนข้อมูลในคอลัมน์อื่นจะถูกทำซ้ำตามจำนวน
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| table | table | ตารางที่ต้องการขยายคอลัมน์ที่เป็น List |
| column | text | ชื่อคอลัมน์ (ในรูป Text) ที่เก็บข้อมูลแบบ List ที่ต้องการขยาย |
Table.ExpandListColumn ใช้สำหรับขยายคอลัมน์ที่มีข้อมูลแบบ List ให้เป็นหลายแถว โดยแต่ละรายการใน List จะกลายเป็นแถวแยก ข้อมูลในคอลัมน์อื่นๆ จะถูกทำซ้ำตามจำนวนรายการในแต่ละ List
ที่เจ๋งคือถ้าเจอ null หรือ List ว่าง มันจะ convert เป็น null แถวเดียว ไม่ใช่ลบทิ้ง ซึ่งช่วยให้เราไม่สูญเสียข้อมูล
ส่วนตัวผมใช้ฟังก์ชันนี้บ่อยมากตอนต้องจัดการ JSON หรือ API response ที่มีข้อมูล List ซ้อนอยู่ โดยปกติจะใช้คู่กับ Table.ExpandRecordColumn เพื่อ”ระเบิด”ข้อมูลซ้อนกันหลายชั้น 😎
จัดการข้อมูล JSON Array ที่ Import เข้ามา
แตกข้อมูล Tags หรือ Categories ที่อยู่ในช่องเดียวกัน
เตรียมข้อมูลสำหรับการวิเคราะห์รายรายการย่อย
แต่ละ Tag จาก List จะกลายเป็นแถวใหม่ โดย ProductID จะถูกทำซ้ำให้ตรงกับจำนวน Tag ในแต่ละแถว
ค่า null จะยังคงอยู่ (ไม่หายไป) ส่วน List ว่าง {} จะกลายเป็น null หนึ่งแถว หลีกเลี่ยงการสูญเสียแถวข้อมูล
ก่อนอื่นขยาย List ให้เป็นแถว จากนั้นขยาย Record ซ้อนอยู่ด้านใน สำหรับจัดการข้อมูลแบบ Nested ที่มีหลายชั้น
ขยายคอลัมน์ Colors ก่อน จากนั้นขยาย Sizes ทำให้ได้ Cartesian Product ของ Color × Size Combination
นี่เป็นการป้องกันการสูญเสียแถว ถ้า List ว่าง ฟังก์ชันจะสร้าง null แถวหนึ่ง เพื่อไม่ให้หายไปทั้งแถว ส่วนตัวผมชอบจุดนี้เพราะไม่ต้องกังวลว่าจะหาที่ไปของข้อมูล 😎
ต้องทำแบบ Sequential (ทีละคอลัมน์) ไม่มีวิธีขยายหลายคอลัมน์พร้อมกันในครั้งเดียว ส่วนตัวผมแนะนำให้สร้าง Step แยกสำหรับแต่ละการขยาย ทำให้อ่านและ Debug ง่ายขึ้น
ใช้ Table.ExpandListColumn ก่อน (เพื่อขยาย List) แล้วตามด้วย Table.ExpandRecordColumn (เพื่อแตกผ้าของ Record) นี่คือเทคนิคทั่วไปสำหรับจัดการ Nested Data
ไม่แตก เพราะมีค่าเดียวอยู่แล้ว หากต้องการเพิ่มแถว ต้องให้ List มี 2 รายการขึ้นไป
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.ExpandListColumn จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Table.AddColumn เพิ่มคอลัมน์ใหม่ลงในตารางโดยคำนวณค่าจากฟังก์ชันที่กำหนด ใช้คำสั่ง each เพื่ออ้างอิงข้อมูลในแต่ละแถว เช่น each [Price] * [Quantity] สามารถระบุชนิดข้อมูลได้เพื่อเพิ่มประสิทธิภาพและป้องกันข้อผิดพลาดจากการคาดเดาชนิดข้อมูล ทำงานแบบทีละแถวและเหมาะสำหรับสร้างคอลัมน์คำนวณ รวมข้อมูล ใช้เงื่อนไข และการแปลงข้อมูลต่างๆ ใช้ร่วมกับฟังก์ชัน Table.TransformColumns สำหรับแก้ไขคอลัมน์เดิม Table.AddIndexColumn สำหรับเพิ่มหมายเลขลำดับ Table.SelectRows สำหรับกรองแถว Table.FromRecords สำหรับสร้างตารางจากข้อมูล Text.Combine สำหรับรวมข้อความ Number.Round สำหรับปัดเศษ Date.Year สำหรับดึงค่าปี และ Text.Upper สำหรับแปลงเป็นตัวพิมพ์ใหญ่ เพื่อสร้างกระบวนการแปลงข้อมูลที่สมบูรณ์
Table.ExpandTableColumn ใช้แตกข้อมูลจากคอลัมน์ที่เป็น nested table ออกมาเป็นคอลัมน์และแถวปกติในตารางหลัก โดยรักษาข้อมูลคอลัมน์อื่นไว้ และทำซ้ำแถวหลักสำหรับแต่ละแถวในตารางซ้อน มักใช้คู่กับ Table.NestedJoin หลัง join ตาราง หรือใช้ขยายข้อมูลจากแหล่งที่มีโครงสร้างแบบ hierarchical เช่น JSON หรือ API
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 ขนาดใหญ่
List.TransformMany ประมวลผลข้อมูลและคืนค่าผลลัพธ์ ใช้สำหรับการจัดการข้อมูล การแปลงข้อมูล และการวิเคราะห์
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่