---
title: Table.ConformToPageReader – ปรับตารางสำหรับ Page Reader (Internal)
url: https://www.thepexcel.com/functions/power-query/table-functions/table-conformtopagereader/
type: function-explainer
program: Power Query
syntax: "Table.ConformToPageReader(table as table, shapingFunction as function) as table"
date: 2025-12-15
updated: 2025-12-25
scores:
  popularity: 5
  difficulty: 4
  usefulness: 6
---

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

> Table.ConformToPageReader ปรับโครงสร้างตารางให้เข้ากับกลไก page reader โดยรับฟังก์ชันสำหรับการจัดรูป

## คำอธิบาย

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

## Syntax

```excel
Table.ConformToPageReader(table as table, shapingFunction as function) as table
```

## Arguments

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

## เคสการใช้งาน

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

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

_เหมาะกับ:_ internal-page-reader

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: ใช้ Identity Function (ไม่เปลี่ยนตารางเลย)

```excel
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 ตามลำดับ

### 2. ตัวอย่างที่ 2: เลือกเฉพาะคอลัมน์ที่ต้องการ

```excel
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
```

**ผลลัพธ์:** `ตารางที่เหลือเพียง Name และ Age (ลบ Dept ออกไป)`

shapingFunction ใช้ Table.SelectColumns เพื่อเลือกคอลัมน์ที่ต้องการ เมื่อ page reader ทำการอ่านแบบแบ่งหน้า มันจะได้รับตารางที่มีเฉพาะคอลัมน์ที่สำคัญเท่านั้น ช่วยลดปริมาณข้อมูลที่ต้องส่งต่อ

### 3. ตัวอย่างที่ 3: เพิ่มคอลัมน์ลำดับแถว

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

**ผลลัพธ์:** `ตารางที่เพิ่ม RowNumber เริ่มตั้งแต่ 1`

shapingFunction ใช้ Table.AddIndexColumn เพื่อเพิ่มคอลัมน์ลำดับแถว ซึ่งในบางตัวเชื่อมต่อที่ทำงานแบบแบ่งหน้า อาจจำเป็นต้องมีตัวระบุแถว (row identifier) เพื่อติดตามตำแหน่งของข้อมูลในแต่ละหน้า

### 4. ตัวอย่างที่ 4: รวมหลาย transformation ใน shapingFunction

```excel
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
```

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

ใส่ Table.SelectColumns เข้าไปใน Table.AddIndexColumn เพื่อทำ chaining transformations ก่อนที่ page reader จะเข้ามาจัดการ ลำดับการทำงาน: เลือกคอลัมน์ → เพิ่มตัวระบุแถว → ส่งไปให้ page reader

## หมายเหตุเพิ่มเติม

- ถ้าคุณต้องการปรับตารางในโครงการทั่วไป ให้ใช้ฟังก์ชัน public API โดยตรง เช่น Table.SelectColumns Table.AddIndexColumn Table.SelectRows Table.TransformColumns ซึ่งมีเอกสารครบถ้วน

- ผมแนะนำให้หลีกเลี่ยง Table.ConformToPageReader เว้นแต่คุณกำลังทำงานกับตัวเชื่อมต่อขั้นสูง (custom connector) ที่ต้องใช้ paging logic หรือ Microsoft Support บอกให้ใช้โดยเฉพาะ

- ถ้าคุณเห็น ConformToPageReader ในโค้ด generated ให้แก้ไขออกมาใช้ฟังก์ชัน public แทนครับ จะดีต่อ maintenance ในอนาคต

## คำถามที่พบบ่อย

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

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

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

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

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

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

## ฟังก์ชันที่เกี่ยวข้อง

- [Table.FromRecords – สร้างตารางจากรายการ Record](https://www.thepexcel.com/functions/power-query/table-functions/table-fromrecords/)
- [Table.SelectColumns – เลือกคอลัมน์ที่ต้องการจากตาราง](https://www.thepexcel.com/functions/power-query/table-functions/table-selectcolumns/)
- [Table.AddIndexColumn – เพิ่มคอลัมน์ลำดับเลข](https://www.thepexcel.com/functions/power-query/table-functions/table-addindexcolumn/)

## แหล่งข้อมูลเพิ่มเติม

- [Microsoft Learn: Table.ConformToPageReader](https://learn.microsoft.com/en-us/powerquery-m/table-conformtopagereader) _(official)_
- [Power Query M Function Reference](https://learn.microsoft.com/en-us/powerquery-m/) _(official)_

---

_Source: [https://www.thepexcel.com/functions/power-query/table-functions/table-conformtopagereader/](https://www.thepexcel.com/functions/power-query/table-functions/table-conformtopagereader/)_
