Table.ExpandRecordColumn ขยายคอลัมน์ที่เก็บ Record values ออกเป็นคอลัมน์แยกกัน โดยแต่ละฟิลด์ใน Record จะกลายเป็นคอลัมน์ใหม่ สามารถระบุว่าต้องการขยายฟิลด์ใดบ้างผ่าน fieldNames parameter และสามารถกำหนดชื่อคอลัมน์ใหม่ผ่าน newColumnNames เพื่อป้องกันชื่อซ้ำ มักใช้หลังจาก API calls หรือการ parse JSON ที่ได้ข้อมูลแบบ nested
=Table.ExpandRecordColumn(table as table, column as text, fieldNames as list, optional newColumnNames as nullable list) as table
=Table.ExpandRecordColumn(table as table, column as text, fieldNames as list, optional newColumnNames as nullable list) as table
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| table | table | Yes | ตารางข้อมูลที่มีคอลัมน์ประเภท Record ที่ต้องการขยาย | |
| column | text | Yes | ชื่อคอลัมน์ที่เก็บ Record values ที่ต้องการขยาย | |
| fieldNames | list | Yes | List ของชื่อฟิลด์ที่ต้องการดึงออกมาจาก Record เช่น {“name”, “age”, “email”} | |
| newColumnNames | nullable list | Optional | null | List ของชื่อคอลัมน์ใหม่ที่ต้องการใช้แทนชื่อฟิลด์เดิม เพื่อป้องกันชื่อซ้ำกับคอลัมน์อื่นในตาราง |
เมื่อเรียก API แล้วได้ JSON response ที่มีโครงสร้างซ้อนกัน ใช้ฟังก์ชันนี้เพื่อขยาย Record fields ออกเป็นคอลัมน์แยกเพื่อความสะดวกในการวิเคราะห์
แปลงข้อมูล JSON ที่มีโครงสร้างซ้อนกันหลายชั้นให้เป็นตารางแบน (flat table) เพื่อให้ง่ายต่อการประมวลผลและการสร้างรายงาน
ดึงฟิลด์ที่ต้องการออกจากคอลัมน์ที่เก็บข้อมูลหลายฟิลด์รวมกัน เช่น คอลัมน์ Address ที่มี street, city, zipcode
let Source = Table.FromRecords({ [ a = [aa = 1, bb = 2, cc = 3], b = 2 ] }), Expanded = Table.ExpandRecordColumn(Source, "a", {"aa", "bb", "cc"}) in Expandedlet
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]}
let Source = Table.FromRecords({ [ ID = 1, Details = [Name = "John", Age = 30, City = "Bangkok"] ], [ ID = 2, Details = [Name = "Jane", Age = 25, City = "Chiang…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, ...]}
let Source = Table.FromRecords({ [ OrderID = 101, Customer = [Name = "Bob", Email = "bob@email.com", Phone = "123-4567"] ] }), Expanded = Table.ExpandRecordColu…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"]}
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…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]}
จะเกิด error ทันที ต้องตรวจสอบให้แน่ใจว่าชื่อฟิลด์ใน fieldNames parameter ตรงกับฟิลด์ที่มีอยู่จริงใน Record หรือใช้ try…otherwise เพื่อจัดการ error
ไม่จำเป็น สามารถเลือกขยายเฉพาะฟิลด์ที่ต้องการได้โดยระบุเฉพาะชื่อฟิลด์นั้นใน fieldNames parameter ฟิลด์อื่นที่ไม่ระบุจะไม่ถูกขยายออกมา
ใช้เมื่อชื่อฟิลด์ใน Record ซ้ำกับชื่อคอลัมน์อื่นที่มีอยู่แล้วในตาราง หรือเมื่อต้องการให้ชื่อคอลัมน์ใหม่มีความหมายชัดเจนกว่า เช่น เปลี่ยนจาก “Name” เป็น “CustomerName”
Table.ExpandRecordColumn ใช้ขยาย Record (single row of fields) ส่วน Table.ExpandTableColumn ใช้ขยาย Table (multiple rows) ถ้าคอลัมน์เก็บข้อมูลเป็น table ให้ใช้ Table.ExpandTableColumn แทน
ได้ แต่ต้องขยายทีละชั้น เช่น ขยายชั้นแรกก่อน จะได้คอลัมน์ที่เป็น Record ชั้นที่สอง จากนั้นใช้ Table.ExpandRecordColumn อีกครั้งเพื่อขยายชั้นที่สอง
ฟังก์ชัน Table.ExpandRecordColumn ใช้สำหรับขยายคอลัมน์ที่มีข้อมูลประเภท Record ออกเป็นหลายคอลัมน์แยกกัน โดยแต่ละฟิลด์ใน Record จะกลายเป็นคอลัมน์ใหม่ในตาราง เหมาะสำหรับแปลงข้อมูลแบบ nested structure ให้เป็นตารางแบน