Expression.Constant แปลงค่าใด ๆ ให้เป็นข้อความโค้ด M ที่ถูกต้องทางไวยากรณ์ ใช้เมื่อต้องสร้างโค้ด M แบบไดนามิก
={{ Expression.Constant(value as any) as text }}
={{ Expression.Constant(value as any) as text }}
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| value | any | Yes | ค่าใด ๆ ที่ต้องการแปลงเป็นข้อความโค้ด M (ตัวเลข ข้อความ วันที่ list record ฯลฯ) |
{{ Expression.Constant(123) }}={{ Expression.Constant(123) }}
"123"
{{ Expression.Constant("hello") }}={{ Expression.Constant("hello") }}
"""hello"""
{{ Expression.Constant(#date(2025, 12, 26)) }}={{ Expression.Constant(#date(2025, 12, 26)) }}
"#date(2025, 12, 26)"
{{ Expression.Constant({1, 2, 3}) }}={{ Expression.Constant({1, 2, 3}) }}
{1, 2, 3}
ผมเห็นคำถามนี้บ่อย ส่วนหนึ่งเพราะว่าข้อมูลบางประเภท เช่น 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 เป็นฟังก์ชันเมตา (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 ก็เป็นเครื่องมือที่ดี 😎