Thep Excel

Record.TransformFieldsแปลงค่าในฟิลด์เรคอร์ด

Record.TransformFields แปลงค่าในฟิลด์ที่ระบุของเรคอร์ดโดยใช้ฟังก์ชันแปลงค่า สามารถแปลงฟิลด์เดียวหรือหลายฟิลด์พร้อมกันได้ เหมาะสำหรับการทำความสะอาดข้อมูลและการแปลงประเภทข้อมูล

fx
=Record.TransformFields(record, transformOperations, [missingField]) as record

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

อัปเดต 3 December 2025

Syntax & Arguments

อาร์กิวเมนต์ ชนิด คำอธิบาย
record record เรคอร์ดที่ต้องการแปลงค่า
transformOperations list รายการคู่ของชื่อฟิลด์และฟังก์ชันแปลงค่า รูปแบบ: {“FieldName”, Function} สำหรับฟิลด์เดียว หรือ {{“Field1”, Function1}, {“Field2”, Function2}} สำหรับหลายฟิลด์
[missingField]ไม่บังคับ nullable number พารามิเตอร์ทางเลือกสำหรับการจัดการกับฟิลด์ที่ไม่พบ

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

Additional Notes

Record.TransformFields คือฟังก์ชันที่ช่วยแปลงค่าฟิลด์ได้หลายตัวพร้อมกันในเรคอร์ดเดียว เหมือนว่าคุณสามารถให้แต่ละฟิลด์ผ่านการ “ปรับปรุง” ของตัวเองในครั้งเดียวได้ แทนที่จะจัดการทีละตัว.
ที่เจ๋งคือ มันรองรับการแปลงทุกแบบ ตั้งแต่การเปลี่ยนประเภทข้อมูล (ข้อความเป็นตัวเลข) ไปจนถึงการแปลงตามเงื่อนไขที่คุณกำหนดเอง โดยใช้ฟังก์ชัน each ได้
ส่วนตัวผม ใช้มันเมื่อต้องทำความสะอาดข้อมูลจากระบบภายนอก มันช่วยประหยัดเวลาหลายนาทีเทียบกับการแปลงทีละฟิลด์

Examples

ตัวอย่างที่ 1: แปลงฟิลด์ราคาจากข้อความเป็นตัวเลขRecord.TransformFields( [OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = "100.0"], {{"Price", Number.FromText}} )

แปลงฟิลด์ Price จากข้อความ "100.0" เป็นตัวเลข 100 โดยใช้ฟังก์ชัน Number.FromText ฟิลด์อื่นๆ ยังคงเหมือนเดิม

fx
=Record.TransformFields(
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = "100.0"],
{{"Price", Number.FromText}}
)

ผลลัพธ์[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100]
ตัวอย่างที่ 2: แปลงหลายฟิลด์เป็นตัวพิมพ์ใหญ่Record.TransformFields( [FirstName = "john", LastName = "smith", City = "new york"], {{"FirstName", Text.Upper}, {"LastName", Text.Upper}, {"City", Text.Upper}}…

แปลงทั้งสามฟิลด์เป็นตัวพิมพ์ใหญ่พร้อมกัน โดยใช้ฟังก์ชัน Text.Upper กับฟิลด์ FirstName LastName และ City

fx
=Record.TransformFields(
[FirstName = "john", LastName = "smith", City = "new york"],
{{"FirstName", Text.Upper}, {"LastName", Text.Upper}, {"City", Text.Upper}}
)

ผลลัพธ์[FirstName = "JOHN", LastName = "SMITH", City = "NEW YORK"]
ตัวอย่างที่ 3: การแปลงหลายแบบพร้อมกันlet Data = [Value1 = 5, Value2 = 10, Name = "alex"], Transformed = Record.TransformFields( Data, {{"Value1", each _ * 2}, {"Value2", each _ + 100}, {"Name", Tex…

แปลงฟิลด์ Value1 โดยคูณด้วย 2 แปลง Value2 โดยบวก 100 และแปลง Name เป็นตัวพิมพ์ใหญ่ ทั้งนี้ทำในการเรียกฟังก์ชันครั้งเดียว

fx
let
Data = [Value1 = 5, Value2 = 10, Name = "alex"],
Transformed = Record.TransformFields(
Data,
{{"Value1", each _ * 2}, {"Value2", each _ + 100}, {"Name", Text.Upper}}
)
in
Transformed

ผลลัพธ์[Value1 = 10, Value2 = 110, Name = "ALEX"]
ตัวอย่างที่ 4: เปลี่ยนประเภทข้อมูลจากข้อความlet OrderRecord = [OrderID = "12345", Quantity = "50", Price = "99.99"], Converted = Record.TransformFields( OrderRecord, {{"OrderID", Number.FromText}, {"Quant…

แปลงทั้งสามฟิลด์จากข้อความเป็นตัวเลข เหมาะสำหรับการทำความสะอาดข้อมูลที่นำเข้ามาเป็นข้อความทั้งหมด

fx
let
OrderRecord = [OrderID = "12345", Quantity = "50", Price = "99.99"],
Converted = Record.TransformFields(
OrderRecord,
{{"OrderID", Number.FromText}, {"Quantity", Number.FromText}, {"Price", Number.FromText}}
)
in
Converted

ผลลัพธ์[OrderID = 12345, Quantity = 50, Price = 99.99]

FAQs

ฟังก์ชัน each ใช้ในการแปลงอย่างไร?+

each คือตัวสั้นของ Power Query ที่บอกว่า "เอาค่านี้ แล้วทำอะไรสักอย่าง" โดย _ คือค่าปัจจุบัน เช่น each _ * 2 คือ "เอาค่านี้ คูณ 2" แบบนี้เขียนการแปลงแบบไหนก็ได้โดยไม่ต้องเขียนฟังก์ชันเต็ม

สามารถแปลงฟิลด์ที่ไม่มีอยู่ได้หรือไม่?+

ไม่ได้ ถ้าคุณพยายามแปลงฟิลด์ที่ไม่มีจริง มันจะตัดสินใจได้ว่าจะให้ error หรือไม่ขึ้นอยู่กับพารามิเตอร์ missingField เลยดีที่สุดคือ ตรวจสอบชื่อฟิลด์ให้ถูกต้องก่อนรัน

จะแปลงฟิลด์ทั้งหมดในเรคอร์ดได้อย่างไร?+

ง่ายแค่ระบุทั้งหมดในรายการ transformOperations แต่จริงๆ ไม่ต้องจัดการฟิลด์ที่ไม่ต้องแปลง เลยโฟกัสแค่ที่ต้องปรับ

ถ้าค่าฟิลด์เป็น null จะเกิดอะไร?+

ขึ้นอยู่กับฟังก์ชันที่ใช้ พอ Number.FromText เจอ null มันจะ error เลย แต่บางฟังก์ชันมี null handling อยู่แล้ว วิธีที่ดีที่สุดคือเทสต์ก่อน หรือใช้ฟังก์ชัน error handling จาก Power Query

สามารถใช้ฟังก์ชันที่กำหนดเองได้หรือไม่?+

ได้เลย ใช้ each ได้ทั้ง lambda ที่สร้างขึ้นใหม่ กับฟังก์ชันที่สร้างมาแล้ว เช่น each Text.Upper(_) หรือ Text.Upper ตรงๆ ทั้งหมดใช้ได้หมด

Resources & Related

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

ฟังก์ชันนี้Record.TransformFieldsRecord functions
Record functions (5)
Record.AddField

Adds a new field with a specified name and value to a record | เพิ่มฟิลด์ใหม่พร้อมชื่อและค่าเข้าไปใน Record

Record.RemoveFields

Removes specified fields from a record | ลบฟิลด์ที่ระบุออกจาก Record

Record.RenameFields

Returns a record after renaming specified fields | เปลี่ยนชื่อฟิลด์ที่ระบุใน Record

Record.ReorderFields

Rearranges the order of fields in a record | จัดเรียงลำดับฟิลด์ใหม่ใน Record ตามที่ต้องการ

Record.SelectFields

Record.SelectFields จะคืนค่า Record ใหม่ที่มีเฉพาะ Field ที่ระบุใน List เท่านั้น สามารถจัดการกับ Field ที่หายไปได้ด้วย option missingField

Text functions (2)
Text.Lower

Text.Lower ใช้แปลงอักขระทั้งหมดในข้อความให้เป็นตัวพิมพ์เล็ก (lowercase) ช่วยให้ข้อมูลมีรูปแบบสอดคล้องกัน สามารถกำหนด Culture เพื่อให้การแปลงเป็นไปตามกฎของภาษาและภูมิภาคที่ต้องการ

Text.Upper

Text.Upper แปลงอักขระทั้งหมดในข้อความเป็นตัวอักษรใหญ่ โดยรองรับการตั้งค่า culture ต่างๆ เพื่อจัดการการแปลงที่ถูกต้องตามภาษา

Number functions (1)
Number.FromText

Number.FromText แปลงค่าข้อความที่เป็นตัวแทนของตัวเลขเป็นค่าตัวเลขจริง รองรับการจัดรูปแบบตัวเลขต่างๆ รวมถึงสัญกรณ์วิทยาศาสตร์

Comments

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