Thep Excel

Table.FromRecordsสร้างตารางจากรายการ Record

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

fx
=Table.FromRecords(records, [columns], [missingField]) as table

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
records List รายการ Record ที่ต้องการแปลงเป็นตาราง เช่น {[ID=1, Name=”Alice”], [ID=2, Name=”Bob”]}
[columns]ไม่บังคับ Any null ระบุชื่อคอลัมน์ (List of Text) หรือ Type ของตาราง (type table […]) เพื่อกำหนดลำดับคอลัมน์ตามที่ต้อง
[missingField]ไม่บังคับ Number MissingField.Error วิธีการจัดการฟิลด์ที่หายไปในบาง Record – MissingField.Error (ค่า default) หรือ MissingField.UseNull (เติม null)

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

Additional Notes

ฟังก์ชัน Table.FromRecords ใช้เปลี่ยน List ของ Record (รูปแบบคล้าย Dictionary) เป็นตาราง Structure ตามธรรมชาติ โดยชื่อฟิลด์ใน Record จะกลายเป็นชื่อคอลัมน์ และค่าแต่ละ Record เป็นหนึ่งแถว

ที่เจ๋งคือเมื่อคุณทำงานกับ API ที่คืน JSON หรือข้อมูลที่มาจากการ Transform ขั้นกลาง Table.FromRecords ช่วยให้เปลี่ยนข้อมูลลง Table ได้อย่างมีประสิทธิภาพ โดยคุณสามารถควบคุมลำดับคอลัมน์ และจัดการฟิลด์ที่หายไปได้

ส่วนตัวผม มักใช้ Table.FromRecords ตอนสร้างตารางจากข้อมูล JSON ที่ได้มาจาก API หรือสร้าง test data ในการ debug ข้อสำคัญคือ parameter columns เพราะถ้าไม่กำหนดลำดับคอลัมน์ อาจไม่ตรงตามที่คาดหวัง และ parameter missingField ช่วยให้ไม่ต้อง Error เมื่อ Record บางอันไม่มีฟิลด์บาง 😎

Examples

สร้างตารางพื้นฐานlet Source = Table.FromRecords({ [ID = 1, Name = "Alice", Sales = 500], [ID = 2, Name = "Bob", Sales = 750], [ID = 3, Name = "Charlie", Sales = 600] }) in Sourc…

แปลง List ของ Record 3 ตัวเป็นตาราง โดยไม่ระบุ columns parameter ลำดับคอลัมน์อาจขึ้นอยู่กับลำดับการปรากฏตัวของฟิลด์

fx
let
Source = Table.FromRecords({
[ID = 1, Name = "Alice", Sales = 500],
[ID = 2, Name = "Bob", Sales = 750],
[ID = 3, Name = "Charlie", Sales = 600]
})
in
Source

ผลลัพธ์Table 3 rows, 3 columns (ID, Name, Sales)
กำหนดลำดับคอลัมน์และ Typelet Source = Table.FromRecords({ [ID = 1, Name = "Alice"], [ID = 2, Name = "Bob"] }, type table [Name = text, ID = number]) in Source

ใช้ columns parameter ด้วย type table เพื่อบังคับลำดับคอลัมน์ให้ Name มาก่อน ID และกำหนด Type ของแต่ละคอลัมน์

fx
let
Source = Table.FromRecords({
[ID = 1, Name = "Alice"],
[ID = 2, Name = "Bob"]
}, type table [Name = text, ID = number])
in
Source

ผลลัพธ์Table (Name, ID) – ชื่อคอลัมน์อยู่ก่อน ID
จัดการฟิลด์ที่หายไปlet Source = Table.FromRecords({ [CustomerID = 1, FirstName = "Alice", Email = "alice@company.com"], [CustomerID = 2, FirstName = "Bob"], [CustomerID = 3, First…

Record ที่ 2 ไม่มี Email field จะแสดงเป็น null แทน ซึ่ง MissingField.UseNull ช่วยให้ไม่เกิด Error

fx
let
Source = Table.FromRecords({
[CustomerID = 1, FirstName = "Alice", Email = "alice@company.com"],
[CustomerID = 2, FirstName = "Bob"],
[CustomerID = 3, FirstName = "Charlie", Email = "charlie@company.com"]
},
type table [CustomerID = number, FirstName = text, Email = text],
MissingField.UseNull)
in
Source

ผลลัพธ์Table 3 rows – แถวที่ 2 มี null ในคอลัมน์ Email
สร้างจากข้อมูล JSON APIlet JsonData = Json.Document(Web.Contents("https://api.example.com/users")), RecordsList = JsonData[data], Table = Table.FromRecords( RecordsList, type table [i…

รับข้อมูล JSON จาก API, แปลงเป็น Record List, แล้วสร้างตาราง โดยจัดการฟิลด์ที่อาจหายไป

fx
let
JsonData = Json.Document(Web.Contents("https://api.example.com/users")),
RecordsList = JsonData[data],
Table = Table.FromRecords(
RecordsList,
type table [id = number, username = text, email = text],
MissingField.UseNull
)
in
Table

ผลลัพธ์Table ของผู้ใช้จาก API

FAQs

ต่างกันระหว่าง Table.FromRecords กับ Table.FromRows ยังไง?+

Table.FromRecords ใช้กับ List of Record (named fields) เช่น {[Name="Alice", Age=25]} ส่วน Table.FromRows ใช้กับ List of List (positional values) เช่น {{"Alice", 25}} เลือกตามรูปแบบข้อมูลที่มี

ถ้า Record ตัวหนึ่งไม่มีฟิลด์ที่ Record อื่นมี จะเกิดอะไร?+

ตามค่า default (MissingField.Error) จะเกิด Error หากต้องให้มันเติม null แทน ให้ใช้ MissingField.UseNull

ลำดับคอลัมน์ไม่ตรงตามที่ต้องการ ต้องทำยังไง?+

ใช้ columns parameter โดยระบุ type table เช่น type table [ColA = text, ColB = number] จะบังคับลำดับตามลำดับการประกาศ

เวอร์ชัน Power Query ไหนรองรับ Table.FromRecords?+

สองพารามิเตอร์แรก (records, columns) มีจากแรก ส่วน missingField parameter เพิ่มมาในเวอร์ชันหลัง (Power Query 2016 ขึ้นไป)

Resources & Related

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

ฟังก์ชันนี้Table.FromRecordsTable functions
Table functions (15)
Table.AddColumn

Table.AddColumn เพิ่มคอลัมน์ใหม่ลงในตารางโดยคำนวณค่าจากฟังก์ชันที่กำหนด ใช้คำสั่ง each เพื่ออ้างอิงข้อมูลในแต่ละแถว เช่น each [Price] * [Quantity] สามารถระบุชนิดข้อมูลได้เพื่อเพิ่มประสิทธิภาพและป้องกันข้อผิดพลาดจากการคาดเดาชนิดข้อมูล ทำงานแบบทีละแถวและเหมาะสำหรับสร้างคอลัมน์คำนวณ รวมข้อมูล ใช้เงื่อนไข และการแปลงข้อมูลต่างๆ ใช้ร่วมกับฟังก์ชัน Table.TransformColumns สำหรับแก้ไขคอลัมน์เดิม Table.AddIndexColumn สำหรับเพิ่มหมายเลขลำดับ Table.SelectRows สำหรับกรองแถว Table.FromRecords สำหรับสร้างตารางจากข้อมูล Text.Combine สำหรับรวมข้อความ Number.Round สำหรับปัดเศษ Date.Year สำหรับดึงค่าปี และ Text.Upper สำหรับแปลงเป็นตัวพิมพ์ใหญ่ เพื่อสร้างกระบวนการแปลงข้อมูลที่สมบูรณ์

Table.AddJoinColumn

Table.AddJoinColumn เชื่อมต่อข้อมูลจากสองตารางตามคีย์ที่ตรงกัน โดยเก็บผลลัพธ์ในคอลัมน์ใหม่เป็นตารางแบบ nested แทนการขยายแนวนอน

Table.Buffer

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

Table.Column

Table.Column ดึงค่าจากคอลัมน์เฉพาะออกมาจากตาราง และคืนค่าเป็น List เพื่อให้สามารถนำไปประมวลผลต่อได้

Table.Combine

Table.Combine ใช้สำหรับรวม list ของ table เข้าเป็น table เดียว ยับยั้ง append ตัว 1 แถวหลาย ๆ ตารางพร้อมกัน

Table.ConformToPageReader

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

Table.FromColumns

Table.FromColumns สร้างตารางจากลิสต์ของลิสต์ โดยแต่ละลิสต์จะเป็นคอลัมน์หนึ่ง เหมาะกับข้อมูล column-oriented จาก API หรือ JSON

Table.FromList

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

Table.FromRows

Table.FromRows สร้างตารางจาก List ของ List โดยแต่ละ List ย่อยแทนข้อมูลในแถวหนึ่ง คล้ายกับการ transpose ข้อมูลแบบแถว-คอลัมน์ แต่ทำให้เป็นตารางจริงในทันที

Table.ReplacePartitionKey

Table.ReplacePartitionKey แทนที่ partition key ของตาราง ซึ่งเป็น metadata สำหรับการแบ่งพาร์ทิชันและการจัดการข้อมูลภายใน เอาไว้ควบคุมวิธีการแบ่งพาร์ทิชันของข้อมูลในตารางนั้น

Table.SelectColumns

Table.SelectColumns ใช้สำหรับเลือกคอลัมน์เฉพาะจากตารางและสร้างตารางใหม่ที่มีเฉพาะคอลัมน์เหล่านั้น

Table.StopFolding

Table.StopFolding ป้องกันไม่ให้ขั้นตอน downstream ถูกส่งกลับไปประมวลผลที่ data source เดิม ช่วยเมื่อต้องดีบักหรือเมื่อการบังคับประมวลผลใน Power Query ให้ผลลัพธ์ที่คาดหวัง

Table.TransformColumnTypes

Table.TransformColumnTypes เปลี่ยน Data Type ของคอลัมน์ที่ระบุให้เป็นประเภทใหม่ (เช่น Text เป็น Number, Date เป็น Text) โดยใช้ built-in conversion methods เบื้องหลัง รองรับการแปลงหลายคอลัมน์พร้อมกัน และสามารถระบุ culture parameter เพื่อจัดการ locale-specific formatting สำหรับวันที่และตัวเลข เหมาะสำหรับขั้นตอนเตรียมข้อมูลก่อน Load เข้า Data Model เพื่อป้องกัน conversion errors และเพิ่มประสิทธิภาพ ใช้ร่วมกับ Table.TransformColumns, Number.From, Text.From และ Date.From เมื่อต้องการ custom transformation logic

Table.UnpivotOtherColumns

Table.UnpivotOtherColumns แปลงคอลัมน์ที่ไม่ได้ระบุทั้งหมดให้กลายเป็นแถว (Unpivot) โดยระบุเฉพาะคอลัมน์ที่ต้องการคงไว้ ข้อดีคือเป็น Dynamic ถ้ามีคอลัมน์ใหม่เพิ่มเข้ามาในอนาคตก็จะถูก Unpivot ให้อัตโนมัติ เหมาะสำหรับแปลงข้อมูลจาก Wide Format (หลายคอลัมน์) ให้เป็น Long Format (หลายแถว) สำหรับ PivotTable และ Database

Table.View

สร้างหรือแก้ไขพฤติกรรมของตาราง สำหรับการพัฒนา Custom Connector และการจัดการ Query Folding

enumerations (1)
AccessControlKind

ประเภทการแจงนับ (Enumeration Type) สำหรับกำหนดประเภทการควบคุมการเข้าถึงข้อมูล ใช้ในการพัฒนาตัวเชื่อมต่อ Power Query แบบกำหนดเอง

Accessing data functions (1)
DeltaLake.Table

DeltaLake.Table ใช้ดึงข้อมูลจากตาราง Delta Lake โดยระบุที่อยู่ไดเรกทอรี่ของตาราง เหมาะสำหรับเชื่อมต่อกับ Data Lake หรือ Microsoft Fabric

List functions (1)
List.ConformToPageReader

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

Comments

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