แบ่งตารางออกเป็นรายการของตารางย่อยตามจำนวนแถวที่กำหนด เหมาะสำหรับ Pagination และ Batch Processing
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| table | table | ตารางที่ต้องการแบ่ง |
| pageSize | number | จำนวนแถวต่อหนึ่งส่วน (Page Size) ต้องเป็นตัวเลขบวก |
ฟังก์ชัน Table.Split ใช้สำหรับแบ่งตารางออกเป็นรายการของตารางย่อย (List of Tables) ตามขนาด Page Size (จำนวนแถว) ที่กำหนด เหมาะสำหรับการทำ Pagination หรือแบ่งข้อมูลเพื่อประมวลผลทีละชุด (Batch Processing).
ที่เจ๋งของ Table.Split คือมันทำให้คุณไม่ต้องปวดหัวกับเรื่อง modulo หรือการคำนวณหน้าด้วยตัวเอง ถ้าตารางมี 100 แถวและคุณต้องการแบ่งทีละ 30 แถว มันจะสร้างตารางที่มี 30, 30, 30, 10 แถวให้โดยอัตโนมัติ
ส่วนตัวผมมักใช้มันตอน API มีข้อจำกัดจำนวนรายการต่อครั้ง (เช่น 1000 รายการ) และข้อมูลมีเยอะเกินไป ก็แบ่งด้วย Table.Split แล้วใช้ List.Transform ประมวลผลแต่ละ batch ครับ 😎
Pagination
Batch Processing
แบ่งข้อมูล 5 แถวออกเป็นชุดละ 2 แถว จะได้ 3 ตาราง (2, 2, 1 แถว) – ตารางสุดท้ายเหลือแถวน้อยเพราะหารไม่ลงตัว
แบ่งข้อมูล 100 แถว เป็น 10 ชุด (ชุดละ 10 แถว) แล้วนำไปประมวลผลต่อด้วย List.Transform
ตัวอย่างการแบ่งข้อมูลเพื่อส่ง API ที่มีข้อจำกัดจำนวนรายการ – จะส่ง 3 ครั้ง ครั้งละ 2 รายการ
แบ่งตารางแล้วแปลง rows เป็น nested lists สำหรับการประมวลผลที่ต้องการ row-by-row structure
จะส่งกลับ list ที่มีตารางเดียว (ตารางต้นฉบับ) เช่น ถ้าตารางมี 5 แถว แต่กำหนด pageSize=100 ผลลัพธ์จะเป็น list ที่มีตารางเดียวที่มี 5 แถว
จะเกิด error: "Expression.Error: The value of pageSize parameter of Table.Split must be greater than 0" – ต้องใช้ pageSize ที่เป็นตัวเลขบวก
สามารถใช้กับตารางขนาดใดก็ได้ แต่มีประโยชน์มากโดยเฉพาะตารางที่มีแถวนับพันหรือนับหมื่น เพราะช่วยให้ประมวลผล batch ได้ง่ายและหลีกเลี่ยงโอเวอร์โหลด
Table.Split แบ่งตามจำนวนแถว (ตำแหน่ง) ส่วน Table.Group แบ่งตามค่าในคอลัมน์ (หมวดหมู่) – Table.Split สำหรับ pagination, Table.Group สำหรับ grouping ตามข้อมูล
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.Split จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Table.Group จัดกลุ่มข้อมูลตามคอลัมน์ที่กำหนดและสรุปผลในแต่ละกลุ่มด้วย aggregation functions เช่น List.Sum, List.Count, List.Average คล้ายกับ GROUP BY ใน SQL แต่ทรงพลังกว่าเพราะสามารถจัดกลุ่มหลายคอลัมน์พร้อมกันและสร้างคอลัมน์สรุปผลหลายคอลัมน์ในคำสั่งเดียว รองรับ GroupKind.Local เพื่อเพิ่มประสิทธิภาพเมื่อข้อมูลเรียงลำดับแล้ว
แบ่งตารางออกเป็นรายการของตารางย่อย (List of Tables) โดยใช้ hash function กำหนดการกระจายข้อมูล
List.Transform ใช้สำหรับสร้างลิสต์ใหม่โดยนำฟังก์ชันไปประมวลผลแต่ละตัวในลิสต์เดิม
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่