Value.ReplaceType แทนที่ประเภทข้อมูล (type) ของค่าด้วยประเภทใหม่ที่กำหนด โดยไม่เปลี่ยนข้อมูลจริง
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| value | any | ค่าที่ต้องการแทนที่ประเภท เช่น เรคคอร์ด, ตาราง, หรือค่าอื่นๆ |
| type | type | ประเภทใหม่ที่ต้องการกำหนดให้กับค่า |
Value.ReplaceType บอก Power Query ว่าข้อมูลนี้ควรถูกปฏิบัติเป็นประเภทไหน (record, table หรือ type อื่นๆ) โดยไม่เปลี่ยนค่าจริง เพียงแต่เปลี่ยน Type Metadata เท่านั้น
ที่เจ๋งคือ ใช้ Value.ReplaceType แล้ว IntelliSense จะเข้าใจโครงสร้างข้อมูลของคุณ ช่วยจับข้อผิดพลาด Type ได้เร็วกว่า และเมื่อต้องรวมข้อมูลจากหลายแหล่ง มันจะไม่สับสนว่า Amount ตัวนี้มันควรเป็นจำนวนจริงหรือข้อความ
ส่วนตัวผม ใช้ Value.ReplaceType ในทุกครั้งที่สร้าง Custom Function ที่ต้องการให้ Type Signature ชัดเจน ลองแล้วแม่นมากครับ ผมไม่ต้องเดาหรือ debug Type Error อีก 😎
สร้างเรคคอร์ดแล้วแทนที่ประเภทของมันด้วยประเภทที่กำหนดชัดเจน ทำให้ Power Query รู้ว่าแต่ละช่องควรเป็นประเภทไหน ค่าจริงไม่เปลี่ยน เพียงแต่ Type Metadata
แทนที่ประเภทของเรคคอร์ดแล้วใช้ Value.Type และ Type.RecordFields เพื่อตรวจสอบและยืนยันว่าช่อง Amount มีประเภท number
แทนที่ประเภทตารางเพื่อให้ Power Query รู้ว่า ID ควรเป็น number และ Name ควรเป็น text ช่วยให้ IntelliSense และ Type Checking ทำงานได้ดี
แปลง List ของ Tuples เป็น List ของ Records จากนั้นใช้ Value.ReplaceType เพื่อบังคับให้แต่ละ Record มี Type ที่ชัดเจน ทำให้List มี Consistent Type
สร้าง Record และใช้ Value.ReplaceType กับ Type ที่มี optional Field (Age) จากนั้นตรวจสอบด้วย Type.RecordFields เพื่อยืนยันว่า Age เป็น Optional Field
เจอคำถามนี้บ่อยครับ 😅 Value.ReplaceType แทนที่ 'ประเภท' ของข้อมูล (type definition) ส่วน Value.ReplaceMetadata แทนที่ 'ตัวอักษร' (metadata) เช่น ชื่อแสดงผล, รูปแบบวันที่ ข้อมูลจริงไม่เปลี่ยน Type ก็ไม่เปลี่ยนเหมือนกัน
ไม่เลยครับ เฉพาะ Type Tag ที่บอก Power Query ว่า "ค่า 123 นี้คือ number" เท่านั้น ค่า 123 ยังคงเป็น 123 เหมือนเดิม ไม่มีการแปลงค่า
ได้ห้อยครับ ใช้ได้กับ table, record, list หรือค่าใดๆ ก็ได้ แค่ต้องมี Type ที่ตรงกับโครงสร้างจริง
เมื่อต้องรวม (merge) ข้อมูลจากหลายแหล่ง หรือสร้าง Custom Function ที่ต้องการให้ Type ชัดเจน ลองไม่ใช้แล้ว debug Type Error บ่อยเหว่ 😭 ใช้ Value.ReplaceType แล้วมันจะจับปัญหาเร็ว
คนส่วนใหญ่งง เรื่องนี้ครับ Value.ReplaceType แค่บอก Type ไม่เปลี่ยนค่า ส่วน Type Conversion (เช่น Number.FromText("123")) เปลี่ยนค่าจริง "123" ตัวอักษร เป็น 123 ตัวเลข ReplaceType = ติดป้ายให้ Conversion = เปลี่ยนจริง
ไม่ได้นะครับ ต้องเป็น Type Value เช่น type [Amount = number] หรือ type table [ID = number] โปรแกรมต้องเข้าใจ Type ของคุณ จึงไม่สามารถ parse จาก Text String ได้
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Value.ReplaceType จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Value.ReplaceMetadata ใช้สำหรับการประมวลผล
Value.Type คืนค่า Type ของข้อมูลที่กำหนด ช่วยตรวจสอบว่าเป็น number, text, date, table, list หรือชนิดอื่นๆ มีประโยชน์มากสำหรับ data validation และการเขียน dynamic functions
List.Transform ใช้สำหรับสร้างลิสต์ใหม่โดยนำฟังก์ชันไปประมวลผลแต่ละตัวในลิสต์เดิม
Table.FromRows สร้างตารางจาก List ของ List โดยแต่ละ List ย่อยแทนข้อมูลในแถวหนึ่ง คล้ายกับการ transpose ข้อมูลแบบแถว-คอลัมน์ แต่ทำให้เป็นตารางจริงในทันที
Type.RecordFields ใช้สำหรับการประมวลผล
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่