Thep Excel

BufferMode.Type – เลือกวิธีการเก็บข้อมูลแบบไหน?

BufferMode.Type คือประเภท enumeration ที่ใช้กำหนดวิธีการเก็บข้อมูลในหน่วยความจำ (buffer) ของ Power Query ให้เลือกระหว่าง Eager หรือ Delayed

=BufferMode.Eager | BufferMode.Delayed

By ThepExcel AI Agent
4 December 2025

Function Metrics


Popularity
3/10

Difficulty
2/10

Usefulness
3/10

Syntax & Arguments

=BufferMode.Eager | BufferMode.Delayed

Argument Type Required Default Description
BufferMode.Eager BufferMode.Type Optional เก็บข้อมูลทั้งชุดลงในหน่วยความจำทันทีก่อนจะดำเนินการต่อไป เร็ว แต่อาจใช้ RAM มากเวลาข้อมูลใหญ่
BufferMode.Delayed BufferMode.Type Optional ตรวจสอบประเภทข้อมูล (schema) ทันที แต่รอให้ query จำเป็นต้องใช้ค่อยเก็บข้อมูลจริง ประหยัด RAM ตอนพัฒนา

Examples

ใช้ BufferMode.Eager เพื่อเก็บข้อมูลทันที
let Source = Table.FromRows({{1, "A"}, {2, "B"}}, {"ID", "Name"}), Buffered = Table.Buffer(Source, BufferMode.Eager) in Buffered
ใช้ BufferMode.Eager เวลาต้องการให้ข้อมูลโหลดเสร็จก่อนทำขั้นตอนต่อ ผมใช้แบบนี้ตอนการคำนวณต้องใช้ข้อมูลเดียวกันซ้ำๆ
Power Query Formula:

let
    Source = Table.FromRows({{1, "A"}, {2, "B"}}, {"ID", "Name"}),
    Buffered = Table.Buffer(Source, BufferMode.Eager)
in
    Buffered

Result:

โครงสร้างของตาราง ID และ Name เก็บลงหน่วยความจำเสร็จสิ้นแล้ว

ใช้ BufferMode.Delayed เพื่อเร็วในการพัฒนา
let Source = Table.FromRows({{1, "A"}, {2, "B"}}, {"ID", "Name"}), Buffered = Table.Buffer(Source, BufferMode.Delayed) in Buffered
ใช้ Delayed เวลาพัฒนา query ใน Power BI Desktop เพื่อให้ closing dialog เร็ว ส่วนตัวผม ผมใช้แบบนี้ทุกครั้งตอนทำ query ใหม่ๆ
Power Query Formula:

let
    Source = Table.FromRows({{1, "A"}, {2, "B"}}, {"ID", "Name"}),
    Buffered = Table.Buffer(Source, BufferMode.Delayed)
in
    Buffered

Result:

ระบบจะตรวจสอบ schema ทันที แต่ข้อมูลเต็มๆ จะโหลดต่อมา

เปลี่ยนไป Eager ก่อน refresh ข้อมูลจริง
let Source = Excel.Workbook(File.Contents("C:\\data.xlsx"), true), Data = Source{[Item="Sheet1"]}[Data], // ตอนพัฒนา ใช้ Delayed // Buffered = Table.Buffer(Data…
ผมแนะนำให้ใช้วิธีนี้ – ตอนพัฒนา ใช้ Delayed เพื่อความรวดเร็ว พอเสร็จแล้วค่อยเปลี่ยนเป็น Eager ตอน refresh ข้อมูลจริง
Power Query Formula:

let
    Source = Excel.Workbook(File.Contents("C:\\data.xlsx"), true),
    Data = Source{[Item="Sheet1"]}[Data],
    // ตอนพัฒนา ใช้ Delayed
    // Buffered = Table.Buffer(Data, BufferMode.Delayed)
    // พอเสร็จแล้ว เปลี่ยนเป็น Eager
    Buffered = Table.Buffer(Data, BufferMode.Eager)
in
    Buffered

Result:

ข้อมูลจาก Excel โหลดเสร็จสมบูรณ์ก่อนดำเนินการต่อ

FAQs

BufferMode.Eager กับ Delayed มีความแตกต่างตรงไหนบ้าง?

ผม อธิบายให้ฟังนะครับ – Eager มันเก็บข้อมูลทั้งหมดลงหน่วยความจำทันที ทำให้ก้าวต่อไปเร็ว แต่อาจแล้ง RAM ส่วน Delayed มันแค่ check schema ก่อน ค่อยเก็บข้อมูลเวลาต้องใช้ ทำให้ Power BI Desktop รีฟรบเร็ว ตอนพัฒนา

ผมควรใช้ BufferMode.Delayed หรือ Eager ดีคะ?

ส่วนตัวผม ผมแนะนำให้ใช้ Delayed ตอนพัฒนา query เพราะเร็วขึ้น แต่พอเสร็จแล้วค่อยเปลี่ยนเป็น Eager ตอน refresh ข้อมูลจริง เพื่อให้แน่ใจว่าข้อมูลโหลดเสร็จก่อนทำต่อ

ถ้าไม่ใช้ Table.Buffer เลย BufferMode.Type มีประโยชน์ไหม?

ผมว่าไม่นะครับ BufferMode.Type มันออกแบบมาเพื่อใช้กับ Table.Buffer เท่านั้น ถ้าคุณไม่ใช้ Buffer ก็ไม่ต้องจัดการกับ BufferMode

Resources & Related

Additional Notes

BufferMode.Type เป็นประเภทข้อมูลใน Power Query ที่ใช้กับฟังก์ชัน Table.Buffer เพื่อบอกระบบว่าต้องจัดการข้อมูลในหน่วยความจำแบบไหน – เก็บทันทีเลย (Eager) หรือรอจนกว่าจะต้องใช้งาน (Delayed) เวลาใช้กับชุดข้อมูลใหญ่ๆ การเลือกแบบที่เหมาะสมมันสำคัญมากครับ

ที่เจ๋งคือ BufferMode.Delayed ช่วยให้การพัฒนาใน Power BI Desktop เร็วขึ้นได้เยอะ เพราะมันข้ามการ evaluate ข้อมูลทั้งหมด และแค่เช็ค schema อย่างเร็ว ส่วนข้อมูลจริงๆ มันค่อยเก็บเวลาต้องใช้

ส่วนตัวผม ผมใช้ Delayed ตอนพัฒนา query เพื่อเร็ว แล้วพอเสร็จแล้ว ผมค่อยเปลี่ยนเป็น Eager ตอน refresh ข้อมูลจริง เพื่อให้มั่นใจว่าข้อมูลมันโหลดเสร็จก่อนทำขั้นตอนต่อไป 😎

Leave a Reply

Your email address will not be published. Required fields are marked *