Expression.Constant แปลงค่าใด ๆ ให้เป็นข้อความโค้ด M ที่ถูกต้องทางไวยากรณ์ ใช้เมื่อต้องสร้างโค้ด M แบบไดนามิก
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| value | any | ค่าใด ๆ ที่ต้องการแปลงเป็นข้อความโค้ด M (ตัวเลข ข้อความ วันที่ list record ฯลฯ) |
Expression.Constant เป็นฟังก์ชันเมตา (meta function) ที่รับค่าใด ๆ แล้วส่งกลับการแทนค่านั้นในรูปแบบโค้ด M ที่ถูกต้อง เช่น ตัวเลข 123 จะกลายเป็น “123” ส่วนข้อความ “abc” จะกลายเป็น “””abc””” ฟังก์ชันนี้ส่งคืนผลลัพธ์เป็น text เสมอ
ที่เจ๋งคือ ผมสามารถใช้มันสร้างโค้ด M โปรแกรม (programmatic) ได้จริง ๆ เวลาอยากสร้าง step ใหม่ หรอ generate formula แบบ dynamic ตามเงื่อนไขต่าง ๆ ใช้ได้ทั้งตัวเลข วันที่ ข้อความ ทั้ง list record และแม้กระทั่ง function reference
ส่วนตัวผม พบว่าคนส่วนใหญ่เขียน Power Query ปกติ ๆ ไม่ค่อยต้องสัมผัสฟังก์ชันแบบนี้หรอก เพราะมันอยู่ในระดับ meta programming ที่ค่อนข้างลึก แต่ถ้าเจอปัญหาที่ต้อง generate code string หรือทำ code injection ด้วยความชาญฉลาด Expression.Constant ก็เป็นเครื่องมือที่ดี 😎
ตัวเลข 123 ถูกแปลงเป็นข้อความ "123" ซึ่งเป็นรูปแบบที่ถูกต้องในโค้ด M
ข้อความ "hello" ถูกแปลงเป็น """hello""" (escaped quotes) เพื่อให้ใช้ได้ใน M code
วันที่ถูกแปลงเป็นรูปแบบ M date literal พร้อมสัญลักษณ์ # เพื่อให้สามารถใช้ในโค้ดได้
List ถูกแปลงเป็นข้อความที่แสดงรูปแบบ M list literal ที่ถูกต้อง
ผมเห็นคำถามนี้บ่อย ส่วนหนึ่งเพราะว่าข้อมูลบางประเภท เช่น text ต้องมี quote ด้านข้าง และบางประเภท เช่น date ต้องมีสัญลักษณ์พิเศษ Expression.Constant จัดการทุกเรื่องให้อัตโนมัติ ถ้า concat ธรรมชาติ อาจจะมี syntax error ได้
ปกติใช้ได้กับค่า constant ที่เฉพาะเจาะจง เช่น number text logical date time duration list record ถ้าเป็นฟังก์ชัน (function values) บางประเภท อาจจะทำให้เกิด error ได้เพราะฟังก์ชันไม่ใช่ constant
ใช่ครับ ผม Expression.Constant คืน text สตริง ถ้าต้องการใช้ผลลัพธ์เป็นโค้ด M จริง ต้องใช้ Expression.Evaluate เพื่อประมวลผลสตริงนั้นให้กลายเป็น M expression ที่ทำงานได้จริง
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Expression.Constant จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
Expression.Evaluate ใช้สำหรับประเมินผลนิพจน์ M ที่เก็บไว้เป็นข้อความ โดยสามารถระบุตัวแปรและฟังก์ชันที่ใช้ได้ในสภาพแวดล้อม ทำให้สามารถเขียนโค้ด M แบบไดนามิก
Expression.Identifier แปลงชื่อตัวแปรเป็นรูปแบบ M source code ที่ถูกต้อง โดยจัดการกับช่องว่างและอักษรพิเศษอัตโนมัติ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่