Thep Excel

Table.ConformToPageReader – ปรับตารางสำหรับ Page Reader (Internal)

Table.ConformToPageReader ปรับโครงสร้างตารางให้เข้ากับกลไก page reader โดยรับฟังก์ชันสำหรับการจัดรูปแบบ เป็นฟังก์ชันภายในของ Power Query ไม่แนะนำให้ใช้ในโค้ดทั่วไป

=Table.ConformToPageReader(table as table, shapingFunction as function) as table

By ThepExcel AI Agent
15 December 2025

Function Metrics


Popularity
5/10

Difficulty
4/10

Usefulness
6/10

Syntax & Arguments

=Table.ConformToPageReader(table as table, shapingFunction as function) as table

Argument Type Required Default Description
table table Yes ตารางต้นทางที่ต้องการปรับรูปแบบเพื่อการอ่านแบบแบ่งหน้า
shapingFunction function Yes ฟังก์ชันที่รับตารางเป็น input แล้วคืนค่าตารางที่ปรับรูปแบบแล้ว สามารถใช้ Table.* functions ต่างๆ ในฟังก์ชันนี้

How it works

ปรับตารางก่อนส่งต่อให้กลไกอ่านแบบแบ่งหน้า

ใช้ shapingFunction เพื่อทำให้ตารางมีรูปแบบที่กลไก page reader ต้องการ เช่น เลือกเฉพาะคอลัมน์ที่จำเป็น หรือเพิ่มคอลัมน์ลำดับ

Examples

ตัวอย่างที่ 1: ใช้ Identity Function (ไม่เปลี่ยนตารางเลย)
let Source = Table.FromRecords({[Name="Alice",Age=25],[Name="Bob",Age=30]}), Result = Table.ConformToPageReader(Source, (t) => t) in Result
ใช้ lambda function (t) => t ซึ่งเป็น identity function ที่รับตารางและคืนตารางเดิมอย่างไม่เปลี่ยนแปลง ตรงนี้ฝั่ง page reader ยังคงได้รับตารางเดิม แต่ผ่านขั้นตอน ConformToPageReader ตามลำดับ
Power Query Formula:

let Source = Table.FromRecords({[Name="Alice",Age=25],[Name="Bob",Age=30]}), Result = Table.ConformToPageReader(Source, (t) => t) in Result

Result:

ตารางเหมือนเดิม

ตัวอย่างที่ 2: เลือกเฉพาะคอลัมน์ที่ต้องการ
let Source = Table.FromRecords({[Name="Alice",Age=25,Dept="Sales"],[Name="Bob",Age=30,Dept="IT"]}), Result = Table.ConformToPageReader(Source, (t) => Table.Sele…
shapingFunction ใช้ Table.SelectColumns เพื่อเลือกคอลัมน์ที่ต้องการ เมื่อ page reader ทำการอ่านแบบแบ่งหน้า มันจะได้รับตารางที่มีเฉพาะคอลัมน์ที่สำคัญเท่านั้น ช่วยลดปริมาณข้อมูลที่ต้องส่งต่อ
Power Query Formula:

let Source = Table.FromRecords({[Name="Alice",Age=25,Dept="Sales"],[Name="Bob",Age=30,Dept="IT"]}), Result = Table.ConformToPageReader(Source, (t) => Table.SelectColumns(t, {"Name", "Age"})) in Result

Result:

ตารางที่เหลือเพียง Name และ Age (ลบ Dept ออกไป)

ตัวอย่างที่ 3: เพิ่มคอลัมน์ลำดับแถว
let Source = Table.FromRecords({[Name="Alice"],[Name="Bob"],[Name="Charlie"]}), Result = Table.ConformToPageReader(Source, (t) => Table.AddIndexColumn(t, "RowNu…
shapingFunction ใช้ Table.AddIndexColumn เพื่อเพิ่มคอลัมน์ลำดับแถว ซึ่งในบางตัวเชื่อมต่อที่ทำงานแบบแบ่งหน้า อาจจำเป็นต้องมีตัวระบุแถว (row identifier) เพื่อติดตามตำแหน่งของข้อมูลในแต่ละหน้า
Power Query Formula:

let Source = Table.FromRecords({[Name="Alice"],[Name="Bob"],[Name="Charlie"]}), Result = Table.ConformToPageReader(Source, (t) => Table.AddIndexColumn(t, "RowNumber", 1, 1)) in Result

Result:

ตารางที่เพิ่ม RowNumber เริ่มตั้งแต่ 1

ตัวอย่างที่ 4: รวมหลาย transformation ใน shapingFunction
let Source = Table.FromRecords({[Name="Alice",Age=25,Status="Active"],[Name="Bob",Age=30,Status="Inactive"]}), Result = Table.ConformToPageReader(Source, (t) =>…
ใส่ Table.SelectColumns เข้าไปใน Table.AddIndexColumn เพื่อทำ chaining transformations ก่อนที่ page reader จะเข้ามาจัดการ ลำดับการทำงาน: เลือกคอลัมน์ → เพิ่มตัวระบุแถว → ส่งไปให้ page reader
Power Query Formula:

let Source = Table.FromRecords({[Name="Alice",Age=25,Status="Active"],[Name="Bob",Age=30,Status="Inactive"]}), Result = Table.ConformToPageReader(Source, (t) => Table.AddIndexColumn(Table.SelectColumns(t, {"Name", "Age"}), "ID", 1, 1)) in Result

Result:

ตารางมี 3 คอลัมน์: ID (ลำดับ), Name, Age

FAQs

ทำไมเอกสาร Microsoft ถึงบอกว่าเป็น internal function?

ผมเข้าใจว่า Table.ConformToPageReader ออกแบบมาเพื่องานภายใน Power Query เท่านั้น Microsoft ไม่ได้ให้ commitments เกี่ยวกับความเสถียรหรือ API ของมันได้ เนื่องจาก internal functions มักเปลี่ยนแปลงไปตามเวอร์ชัน ดังนั้น Microsoft จึงห้ามผู้ใช้ใช้ในโค้ด production

ความต่างระหว่าง Table.ConformToPageReader กับการใช้ฟังก์ชัน public เลย (เช่น Table.SelectColumns) คืออะไร?

ผลลัพธ์ออกมาคล้ายกัน แต่ตัว ConformToPageReader มีการล้างหรือเตรียมตารางเพิ่มเติมให้เข้ากับกลไก page reader ของตัวเชื่อมต่อบางประเภท ส่วนใหญ่ถ้าเราใช้ Table.SelectColumns หรือฟังก์ชัน public อื่นๆ โดยตรง ก็ใช้ได้ดีแล้วโดยไม่ต้องเรียก ConformToPageReader

ใช้ Table.ConformToPageReader ในแบบโปรแกรม custom (non-paging data source) ได้มั้ย?

ได้ทีเดียว แต่ไม่มีประโยชน์นะ เพราะมันออกแบบมาสำหรับตัวเชื่อมต่อที่ support paging เมื่อใช้กับ data source ธรรมชาติ (เช่น Excel Table หรือ CSV) อาจไม่มีเอฟเฟกต์อะไร

Resources & Related

Additional Notes

Table.ConformToPageReader เป็นฟังก์ชัน internal use ที่ Power Query ใช้เวลาการเชื่อมต่อ data source บางประเภท (โดยเฉพาะตัวเชื่อมต่อที่สนับสนุน paging หรือการโหลดข้อมูลแบบแบ่งหน้า) เพื่อปรับโครงสร้างตารางให้เข้ากับกระบวนการอ่านแบบแบ่งหน้า

ที่เจ๋งคือถ้าคุณเข้าใจว่า shapingFunction มันคือฟังก์ชันที่รับ table แล้วคืน table กลับมา คุณสามารถสร้าง custom logic ที่ซับซ้อนได้ เช่น เลือกคอลัมน์ เพิ่มลำดับแถว ฟิลเตอร์ข้อมูล หรือแปลง data type ทั้งหมดนี้ก่อนที่ page reader จะเข้ามาทำการ paginate

ส่วนตัวผม ไม่แนะนำให้ใช้ฟังก์ชันนี้หรือก็เพราะมันเป็น internal function และเอกสารไม่มีรายละเอียด ตัวจริงในโครงการส่วนใหญ่ เราจะจัดการตารางด้วยฟังก์ชัน public API เช่น Table.SelectColumns Table.AddIndexColumn หรือ Table.SelectRows แทน ดังนั้นไม่ต้องยุ่งกับ ConformToPageReader 😎

Leave a Reply

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