ฟังก์ชันสำหรับดึงรายชื่อ Field ทั้งหมดจาก Record และคืนค่าเป็น List ของ Text
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| record | record | Record ที่ต้องการดึงชื่อ Field ทั้งหมด |
Record.FieldNames คืนค่ารายชื่อ Field ทั้งหมดจาก Record ที่กำหนด โดยเรียงลำดับตามที่ปรากฏใน Record ต่างจาก Record.FieldValues ที่คืนค่าข้อมูล Record.FieldNames ให้เฉพาะชื่อของ Field เท่านั้น
ที่เจ๋งคือสามารถใช้ฟังก์ชันนี้เพื่อตรวจสอบโครงสร้างของ Record แบบ Dynamic ก่อนเข้าถึงข้อมูล เหมาะสำหรับการ Loop ผ่าน Field ทั้งหมด หรือสร้าง Custom Function ที่รองรับ Record ที่มีโครงสร้างไม่แน่นอน
ส่วนตัวผมใช้ Record.FieldNames บ่อยมากเวลาต้องดึงข้อมูลจาก API ที่ Return Structure ไม่แน่นอน หรือต้องเปรียบเทียบว่า Record ขาดฟิลด์อะไรไป
ใช้ดูว่าใน Record มี Field อะไรบ้าง เพื่อนำไปตรวจสอบหรือเปรียบเทียบ
เช่น ใช้ร่วมกับ List.Count เพื่อนับจำนวน Field หรือใช้ในการ Reorder Field
Record มี 3 Field คืนค่าเป็น List ที่มี 3 สมาชิกคือ CustomerID, Name, Phone ตามลำดับเดิม
ใช้ List.Contains เพื่อตรวจสอบว่า Field ชื่อ Email มีอยู่ใน Record หรือไม่ ถ้ามีจะคืนค่า true
ใช้ List.Transform กับ Record.FieldNames เพื่อดึงค่าของแต่ละ Field ออกมา Record.Field รับชื่อ Field เป็น Text (each _) ซึ่งเป็นวิธีที่ Dynamic
ใช้ List.Count เพื่อนับจำนวน Field ทั้งหมด ซึ่ง Product Record มี 4 Field
ถ้า Record ว่าง (ไม่มี Field) จะคืนค่าเป็น List ว่าง ไม่มีสมาชิก
ลำดับจะตามที่ปรากฏใน Record ซึ่ง Record ใน Power Query M เป็น Ordered Collection หมายความว่าลำดับ Field มีความสำคัญ ผมทดสอบแล้วลำดับจะไม่เปลี่ยนแปลง แม้ว่าจะสร้าง Record ด้วยวิธีต่างกัน
Record.FieldNames คืนค่าแค่ชื่อ Field เป็น List ของ Text ส่วน Record.FieldValues คืนค่าข้อมูล (Value) ของแต่ละ Field ออกมา ถ้าต้องชื่อให้ใช้ FieldNames ถ้าต้องค่าให้ใช้ FieldValues
ผมทดสอบแล้ว Record ว่าง (Empty Record) จะคืนค่าเป็น List ว่าง {} ไม่มีข้อผิดพลาด ปลอดภัยใช้ได้
ไม่ได้ Record.FieldNames ทำงานกับ Record เท่านั้น ถ้าต้องดึงชื่อ Column จาก Table ให้ใช้ Table.ColumnNames แทน ผมเคยลืมเรื่องนี้เองจึงเตือน
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Record.FieldNames จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Record.Field ดึงค่าของฟิลด์ที่ระบุจากบันทึก (record) โดยใช้ชื่อฟิลด์เป็นข้อความ ต่างจาก Record.FieldOrDefault ตรงที่จะเกิดข้อผิดพลาดหากฟิลด์ไม่พบ
นับจำนวน Field ทั้งหมดใน Record
คืนค่าข้อมูล (Values) ทั้งหมดจาก Record เป็น List
ตรวจสอบว่า Record มี Field ที่ระบุหรือไม่
List.Contains จะคืนค่า true หาก value ที่กำหนดเป็นสมาชิกของ List และคืนค่า false หากไม่พบ สามารถระบุ Comparer เพื่อกำหนดว่าจะให้ตรวจสอบแบบ Case Sensitive หรือ Case Insensitive ได้
Table.ColumnNames ดึงชื่อคอลัมน์ทั้งหมดจากตาราง และส่งกลับมาเป็นลิสต์ข้อความ ซึ่งจำเป็นสำหรับการตรวจสอบ schema แบบ dynamic
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่