Thep Excel

Table.ExpandRecordColumnขยาย Record Column เป็นหลายคอลัมน์

Table.ExpandRecordColumn ขยายคอลัมน์ที่เก็บ Record values ออกเป็นคอลัมน์แยกกัน โดยแต่ละฟิลด์ใน Record จะกลายเป็นคอลัมน์ใหม่ สามารถระบุว่าต้องการขยายฟิลด์ใดบ้างผ่าน fieldNames parameter และสามารถกำหนดชื่อคอลัมน์ใหม่ผ่าน newColumnNames เพื่อป้องกันชื่อซ้ำ มักใช้หลังจาก API calls หรือการ parse JSON ที่ได้ข้อมูลแบบ nested

fx
=Table.ExpandRecordColumn(table, column, fieldNames, [newColumnNames]) as table

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

อัปเดต 17 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด ค่าเริ่มต้น คำอธิบาย
table table ตารางข้อมูลที่มีคอลัมน์ประเภท Record ที่ต้องการขยาย
column text ชื่อคอลัมน์ที่เก็บ Record values ที่ต้องการขยาย
fieldNames list List ของชื่อฟิลด์ที่ต้องการดึงออกมาจาก Record เช่น {“name”, “age”, “email”}
[newColumnNames]ไม่บังคับ nullable list null List ของชื่อคอลัมน์ใหม่ที่ต้องการใช้แทนชื่อฟิลด์เดิม เพื่อป้องกันชื่อซ้ำกับคอลัมน์อื่นในตาราง

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

ฟังก์ชัน Table.ExpandRecordColumn ใช้สำหรับขยายคอลัมน์ที่มีข้อมูลประเภท Record ออกเป็นหลายคอลัมน์แยกกัน โดยแต่ละฟิลด์ใน Record จะกลายเป็นคอลัมน์ใหม่ในตาราง เหมาะสำหรับแปลงข้อมูลแบบ nested structure ให้เป็นตารางแบน

How it works

ขยายข้อมูลจาก API Response

เมื่อเรียก API แล้วได้ JSON response ที่มีโครงสร้างซ้อนกัน ใช้ฟังก์ชันนี้เพื่อขยาย Record fields ออกเป็นคอลัมน์แยกเพื่อความสะดวกในการวิเคราะห์

แปลง Nested JSON เป็น Flat Table

แปลงข้อมูล JSON ที่มีโครงสร้างซ้อนกันหลายชั้นให้เป็นตารางแบน (flat table) เพื่อให้ง่ายต่อการประมวลผลและการสร้างรายงาน

ดึงข้อมูลจาก Nested Columns

ดึงฟิลด์ที่ต้องการออกจากคอลัมน์ที่เก็บข้อมูลหลายฟิลด์รวมกัน เช่น คอลัมน์ Address ที่มี street, city, zipcode

Examples

ตัวอย่างที่ 1: ขยาย Record Column พื้นฐานlet Source = Table.FromRecords({ [ a = [aa = 1, bb = 2, cc = 3], b = 2 ] }), Expanded = Table.ExpandRecordColumn(Source, "a", {"aa", "bb", "cc"}) in Expanded

ขยายคอลัมน์ a ซึ่งเป็น Record ที่มี 3 ฟิลด์ (aa, bb, cc) ออกเป็น 3 คอลัมน์แยกกัน คอลัมน์ b ยังคงอยู่ในตารางเหมือนเดิม

fx
let
Source = Table.FromRecords({
[
a = [aa = 1, bb = 2, cc = 3],
b = 2
]
}),
Expanded = Table.ExpandRecordColumn(Source, "a", {"aa", "bb", "cc"})
in
Expanded

ผลลัพธ์Table: {[aa=1, bb=2, cc=3, b=2]}
ตัวอย่างที่ 2: ขยายพร้อมเปลี่ยนชื่อคอลัมน์let Source = Table.FromRecords({ [ ID = 1, Details = [Name = "John", Age = 30, City = "Bangkok"] ], [ ID = 2, Details = [Name = "Jane", Age = 25, City = "Chiang…

ขยาย Record column Details และเปลี่ยนชื่อคอลัมน์ใหม่เป็น CustomerName, CustomerAge, CustomerCity เพื่อให้ชัดเจนและป้องกันชื่อซ้ำ

fx
let
Source = Table.FromRecords({
[
ID = 1,
Details = [Name = "John", Age = 30, City = "Bangkok"]
],
[
ID = 2,
Details = [Name = "Jane", Age = 25, City = "Chiang Mai"]
]
}),
Expanded = Table.ExpandRecordColumn(
Source,
"Details",
{"Name", "Age", "City"},
{"CustomerName", "CustomerAge", "CustomerCity"}
)
in
Expanded

ผลลัพธ์Table: {[ID=1, CustomerName="John", CustomerAge=30, CustomerCity="Bangkok"], [ID=2, …]}
ตัวอย่างที่ 3: ขยายเฉพาะฟิลด์ที่ต้องการlet Source = Table.FromRecords({ [ OrderID = 101, Customer = [Name = "Bob", Email = "bob@email.com", Phone = "123-4567"] ] }), Expanded = Table.ExpandRecordColu…

ขยายเฉพาะ Name และ Email จาก Customer record โดยไม่เอา Phone field ออกมา เหมาะสำหรับเลือกข้อมูลที่จำเป็นเท่านั้น

fx
let
Source = Table.FromRecords({
[
OrderID = 101,
Customer = [Name = "Bob", Email = "bob@email.com", Phone = "123-4567"]
]
}),
Expanded = Table.ExpandRecordColumn(
Source,
"Customer",
{"Name", "Email"}
)
in
Expanded

ผลลัพธ์Table: {[OrderID=101, Name="Bob", Email="bob@email.com"]}
ตัวอย่างที่ 4: ขยายหลาย Records ในตารางlet Source = Table.FromRecords({ [ID = 1, Data = [X = 10, Y = 20]], [ID = 2, Data = [X = 30, Y = 40]], [ID = 3, Data = [X = 50, Y = 60]] }), Expanded = Table.Ex…

ขยาย Record ในทุกแถวของตาราง ทำให้แต่ละแถวมีคอลัมน์ X และ Y แยกจาก Data record pattern นี้ใช้บ่อยในการทำงานกับข้อมูลจาก API

fx
let
Source = Table.FromRecords({
[ID = 1, Data = [X = 10, Y = 20]],
[ID = 2, Data = [X = 30, Y = 40]],
[ID = 3, Data = [X = 50, Y = 60]]
}),
Expanded = Table.ExpandRecordColumn(Source, "Data", {"X", "Y"})
in
Expanded

ผลลัพธ์Table: {[ID=1, X=10, Y=20], [ID=2, X=30, Y=40], [ID=3, X=50, Y=60]}

FAQs

ถ้าระบุฟิลด์ที่ไม่มีใน Record จะเกิดอะไรขึ้น?+

จะเกิด error ทันที ต้องตรวจสอบให้แน่ใจว่าชื่อฟิลด์ใน fieldNames parameter ตรงกับฟิลด์ที่มีอยู่จริงใน Record หรือใช้ try…otherwise เพื่อจัดการ error

จำเป็นต้องขยายทุกฟิลด์ใน Record หรือไม่?+

ไม่จำเป็น สามารถเลือกขยายเฉพาะฟิลด์ที่ต้องการได้โดยระบุเฉพาะชื่อฟิลด์นั้นใน fieldNames parameter ฟิลด์อื่นที่ไม่ระบุจะไม่ถูกขยายออกมา

ควรใช้ newColumnNames เมื่อไร?+

ใช้เมื่อชื่อฟิลด์ใน Record ซ้ำกับชื่อคอลัมน์อื่นที่มีอยู่แล้วในตาราง หรือเมื่อต้องการให้ชื่อคอลัมน์ใหม่มีความหมายชัดเจนกว่า เช่น เปลี่ยนจาก "Name" เป็น "CustomerName"

ต่างจาก Table.ExpandTableColumn อย่างไร?+

Table.ExpandRecordColumn ใช้ขยาย Record (single row of fields) ส่วน Table.ExpandTableColumn ใช้ขยาย Table (multiple rows) ถ้าคอลัมน์เก็บข้อมูลเป็น table ให้ใช้ Table.ExpandTableColumn แทน

สามารถขยาย Record ที่ซ้อนกันหลายชั้นได้ไหม?+

ได้ แต่ต้องขยายทีละชั้น เช่น ขยายชั้นแรกก่อน จะได้คอลัมน์ที่เป็น Record ชั้นที่สอง จากนั้นใช้ Table.ExpandRecordColumn อีกครั้งเพื่อขยายชั้นที่สอง

Resources & Related

Comments

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