โหลดตารางเข้าสู่หน่วยความจำ (RAM) เพื่อแยกข้อมูลจากแหล่งเดิมและป้องกันไม่ให้ Query Folding ดึงข้อมูลใหม่
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| table | table | ตารางที่ต้องการ Buffer เข้าสู่หน่วยความจำ | |
| [options]ไม่บังคับ | nullable record | BufferMode.Eager | เลือก BufferMode: BufferMode.Eager (โหลดทันที) หรือ BufferMode.Delayed (โหลดเมื่อต้องใช้) |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
Table.Buffer ใช้เพื่อโหลดตารางเข้าสู่หน่วยความจำ (RAM) ซึ่งช่วยแยกข้อมูลจากแหล่งเดิมและป้องกันการดึงข้อมูลซ้ำในขั้นตอนถัดไป
ในทางปฏิบัติ Table.Buffer มีประโยชน์มากเมื่อคุณต้องใช้ตารางเดียวกันหลายครั้ง เช่นแบ่งข้อมูลเป็นหลาย Group หรือทำ Join กับตารางเดิมหลายครั้ง เพราะจะโหลดข้อมูลจากแหล่งเดิมเพียงครั้งเดียว
แต่ส่วนตัวผม Buffer ไม่ใช่วิธีแก้ปัญหาประสิทธิภาพแบบสากล นอกจากจะช่วยในกรณีที่ใช้ตารางซ้ำแล้ว Buffer อาจทำให้ Performance แย่ลง เพราะต้องโหลดข้อมูลทั้งหมดเข้า Memory ก่อน จึงควรใช้อย่างชาญฉลาด ไม่ใช่ใช้ให้ทั่ว 😎
ใช้เมื่อต้องดึงข้อมูลจาก Excel หลายครั้ง Buffer ทำให้ไม่ต้องอ่าน Excel ซ้ำทุกครั้ง
Buffer ก่อน ทำให้ Active, Inactive, HighAmount ทั้งหมดใช้ข้อมูล Buffered ร่วมกัน ไม่ต้องดึงข้อมูล Source ใหม่
Buffer Products ก่อน จะโหลด Products ครั้งเดียวแล้วนำมา Join กับ Orders และ Returns โดยไม่ต้องดึงข้อมูลใหม่
BufferMode.Delayed ใช้เมื่อตารางขนาดใหญ่มากและอาจไม่ได้ใช้ทั้งหมด จะช่วยประหยัด Memory ในระยะแรก
ไม่ใช่เสมอไป Buffer ช่วยเมื่อคุณใช้ตารางซ้ำหลายครั้ง ลดการดึงข้อมูลจากแหล่งเดิม แต่ถ้าใช้ตารางแค่ครั้งเดียว Buffer อาจทำให้ Performance แย่ลง เพราะต้องเสียเวลา + Memory ในการโหลด
Table.Buffer โหลดข้อมูลทั้งหมดเข้า Memory และป้องกัน Query Folding / Table.StopFolding เพียงป้องกัน Query Folding โดยไม่โหลดข้อมูล ถ้าต้องเพิ่ม Performance คุณควรเลือก Table.StopFolding อันดับแรก
ควร Buffer เมื่อ: (1) ใช้ตารางซ้ำ 2 ครั้งขึ้นไป (2) ตารางมาจาก Source ช้า เช่น SQL Database (3) ใช้ Join หรือ Merge ซ้ำกับตารางเดิม อย่า Buffer ถ้าใช้แค่ครั้งเดียว
Eager โหลดเข้า Memory ทันที (ค่าเริ่มต้น) / Delayed โหลดเมื่อต้องใช้จริง Delayed ช่วยประหยัด Memory ถ้าบางครั้งไม่ได้ใช้ตารางทั้งหมด
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Table.Buffer จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
แปลง List ของ Record เป็นตาราง โดยแต่ละ Record กลายเป็นหนึ่งแถว เหมาะสำหรับข้อมูลจาก API หรือ JSON
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 ขนาดใหญ่
Table.StopFolding ป้องกันไม่ให้ขั้นตอน downstream ถูกส่งกลับไปประมวลผลที่ data source เดิม ช่วยเมื่อต้องดีบักหรือเมื่อการบังคับประมวลผลใน Power Query ให้ผลลัพธ์ที่คาดหวัง
List.Buffer เก็บรายการข้อมูลไว้ในหน่วยความจำเพื่อเพิ่มประสิทธิภาพเมื่อต้องเข้าถึงรายการเดียวกันหลายครั้ง ฟังก์ชันนี้มีประโยชน์เมื่อต้องใช้ผลลัพธ์จากการคำนวณซ้ำๆ หรือเมื่อต้องการลดจำนวนการเข้าถึงแหล่งข้อมูลภายนอก
List.ConformToPageReader ใช้ภายในเพื่อแปลง List ของ Record เป็น Table ตาม Schema ที่กำหนด เหมาะสำหรับโครงสร้างข้อมูลที่ Page Reader ต้องการ
BufferMode.Type คือประเภท enumeration ที่ใช้กำหนดวิธีการเก็บข้อมูลในหน่วยความจำ (buffer) ของ Power Query ให้เลือกระหว่าง Eager หรือ Delayed
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่