Thep Excel

List.ConformToPageReaderแปลง List ของ Record เป็น Table สำหรับ Page Reader

List.ConformToPageReader ใช้ภายในเพื่อแปลง List ของ Record เป็น Table ตาม Schema ที่กำหนด เหมาะสำหรับโครงสร้างข้อมูลที่ Page Reader ต้องการ

fx
=List.ConformToPageReader(list, [options]) as table

ความนิยม5/10
ความยาก4/10
ประโยชน์5/10

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
list list List ที่ต้องแปลงเป็น Table สำหรับ Page Reader ซึ่งมักจะเป็น List ของ Record
[options]ไม่บังคับ nullable record null Record ที่มีตัวเลือก (options) สำหรับการกำหนดค่า โดยทั่วไปมักจะเป็น null

[ ] = อาร์กิวเมนต์ที่ไม่บังคับ

Additional Notes

List.ConformToPageReader เป็นฟังก์ชันสำหรับแปลง List ของ Record เป็น Table โดยแต่ละ Record จะกลายเป็นแถวในตารางผลลัพธ์ อย่างไรก็ตาม ฟังก์ชันนี้ถูกออกแบบมาเพื่อใช้ภายในเท่านั้น (internal use) ซึ่งแปลว่าคุณไม่ควรเรียกใช้มันในโค้ด M ทั่วไป

ที่เจ๋งคือ ผม… ไปเจอฟังก์ชันนี้ได้ยากมากครับ เพราะมันไม่ได้เป็นฟังก์ชันแบบ Public API ส่วนใหญ่จะเห็นมันใน generated code จาก Power BI เท่านั้น

ส่วนตัวผม แนะนำให้ใช้ Table.FromRecords หรือ Table.FromList แทน เพราะมันมี documentation ที่ชัดเจน ทำให้ code ของคุณอ่านและ maintain ได้ง่ายกว่า 😎

How it works

การใช้ภายในโดย Power BI

ฟังก์ชันนี้ถูกใช้โดย Power BI เองเมื่อมีการแสดงข้อมูลจาก List ของ Record ในรายงานที่ต้องการโครงสร้างแบบ Table ที่ชัดเจน

การเตรียมข้อมูลสำหรับ Output เฉพาะ

หากมีการพัฒนา Custom Connector หรือส่วนเสริมที่ต้องการส่งข้อมูลในรูปแบบเฉพาะที่ Page Reader ต้องการ (ซึ่งไม่แนะนำให้ใช้ทั่วไป)

Examples

แปลง List ของ Record เป็น Table ด้วย options เป็น nulllet SalesData = { [Product = "A", Amount = 1000], [Product = "B", Amount = 2000] }, Result = List.ConformToPageReader(SalesData, null) in Result

แปลง SalesData (List ของ Record) เป็น Table โดยส่ง null เป็นพารามิเตอร์ options ซึ่งเป็นวิธีใช้งานแบบทั่วไป

fx
let
SalesData =
{
[Product = "A", Amount = 1000],
[Product = "B", Amount = 2000]
},
Result = List.ConformToPageReader(SalesData, null)
in
Result

ผลลัพธ์| Product | Amount |
|———|——–|
| A | 1000 |
| B | 2000 |
ใช้ในบริบทของ generated code จาก Power BIlet Source = SomeFunction(…), ConvertedTable = List.ConformToPageReader(Source, null) in ConvertedTable

ในความเป็นจริง คุณมักจะเห็นฟังก์ชันนี้ในโค้ดที่ Power BI auto-generate แทนที่จะเขียนด้วยตัวเองครับ

fx
let
Source = SomeFunction(…),
ConvertedTable = List.ConformToPageReader(Source, null)
in
ConvertedTable

ผลลัพธ์Table ที่ได้จากการแปลง Source
เปรียบเทียบกับ Table.FromRecords (วิธีที่ดีกว่า)let CustomerData = { [Name = "John", Age = 30, City = "Bangkok"], [Name = "Jane", Age = 28, City = "Chiang Mai"] }, ConformMethod = List.ConformToPageReader(Cus…

ถึงแม้ว่า List.ConformToPageReader จะทำงานได้เหมือนกัน แต่ Table.FromRecords เข้าใจง่ายกว่า และถูก document อย่างเต็มที่ ดังนั้นจึงเป็นตัวเลือกที่ดีกว่าสำหรับโค้ด M ที่เขียนด้วยตัวเอง

fx
let
CustomerData =
{
[Name = "John", Age = 30, City = "Bangkok"],
[Name = "Jane", Age = 28, City = "Chiang Mai"]
},
ConformMethod = List.ConformToPageReader(CustomerData, null),
FromRecordsMethod = Table.FromRecords(CustomerData)
in
FromRecordsMethod

ผลลัพธ์| Name | Age | City |
|——|—–|———-|
| John | 30 | Bangkok |
| Jane | 28 | Chiang Mai |

FAQs

ควรใช้ List.ConformToPageReader ในโค้ด M ของเราโดยตรงหรือไม่?+

ผมบอกคุณตรงๆ เลยว่า ไม่ควรครับ เพราะมันเป็นฟังก์ชันสำหรับใช้ภายใน ถ้ามันเกิด error หรือทำงานไม่ถูกต้อง ผมก็จะไม่มีวิธีช่วยอะไรเพราะ Microsoft ไม่ได้ document มันเลย

ถ้าผมเห็นฟังก์ชันนี้ใน generated code ควรลบออกได้หรือไม่?+

อย่าลบนะครับ ปล่อยไว้อย่างนั้นดีกว่า เพราะมันถูก auto-generate เพื่ออ่าน Page Reader ข้อมูลที่ถูกต้อง ถ้าคุณลบมันออก อาจจะเกิด error ได้

อะไรคือทางเลือกที่ดีกว่า?+

ผมแนะนำให้ใช้ Table.FromRecords หรือ Table.FromList ซึ่งสามารถ document และสนับสนุนได้อย่างเต็มที่ ถ้าคุณเขียนโค้ด M ด้วยตัวเองนะครับ

Resources & Related

ฟังก์ชันที่ผู้เขียนโยงไว้กับ List.ConformToPageReader จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง

ฟังก์ชันนี้List.ConformToPageReaderList functions
Table functions (3)
Table.Buffer

โหลดตารางเข้าสู่หน่วยความจำ (RAM) เพื่อแยกข้อมูลจากแหล่งเดิมและป้องกันไม่ให้ Query Folding ดึงข้อมูลใหม่

Table.FromList

แปลง List เป็น Table โดยใช้ฟังก์ชัน Splitter เพื่อแยกข้อมูลเป็นคอลัมน์

Table.FromRecords

แปลง List ของ Record เป็นตาราง โดยแต่ละ Record กลายเป็นหนึ่งแถว เหมาะสำหรับข้อมูลจาก API หรือ JSON

List functions (1)
List.Accumulate

List.Accumulate เป็นฟังก์ชันสำหรับการวนลูปผ่านแต่ละ element ใน list พร้อมทั้งเก็บสถานะสะสมไว้ตลอดการทำงาน
.
โดยจะเริ่มต้นจากค่าเริ่มต้นที่กำหนด (seed value) และในแต่ละรอบของการวนลูป ฟังก์ชันจะส่งค่าสถานะปัจจุบัน (current state) พร้อมกับ element ปัจจุบันเข้าไปใน accumulator function ที่คุณกำหนดขึ้นมา เพื่อคำนวณและสร้างสถานะใหม่สำหรับรอบถัดไป
.
เมื่อวนลูปครบทุก element แล้ว ฟังก์ชันจะคืนค่าสถานะสุดท้ายกลับมา เหมาะสำหรับการคำนวณยอดสะสม (running totals) การรวมแบบกำหนดเอง (custom aggregations) และการสร้างรูปแบบ For-Next loop pattern ใน M language ครับ

Comments

อีเมลของคุณจะไม่ถูกเผยแพร่