=RIGHT(<text>, [<num_chars>])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| text | text | Yes | ข้อความที่ต้องการตัดคำ หรือคอลัมน์ที่มีข้อความ (Table[Column] format) | |
| num_chars | integer | Optional | 1 | จำนวนตัวอักษรที่ต้องการดึง ถ้าไม่ใส่จะดึง 1 ตัว สามารถเป็นค่าคงที่หรือคอลัมน์อื่นได้ |
ดึงตัวเลข 4 ตัวท้ายของรหัส Invoice ที่แสดงปี (เช่น INV-2023)
Year Suffix = RIGHT(Sales[InvoiceNo], 4)Year Suffix = RIGHT(Sales[InvoiceNo], 4)
"2023"
Last Code = RIGHT(Product[Code])Last Code = RIGHT(Product[Code])
"D"
Is Premium = IF(RIGHT(Product[SKU], 3) = "PRE", TRUE, FALSE)Is Premium = IF(RIGHT(Product[SKU], 3) = "PRE", TRUE, FALSE)
TRUE/FALSE
Last 2 Digits = VALUE(RIGHT(Sales[OrderID], 2))Last 2 Digits = VALUE(RIGHT(Sales[OrderID], 2))
23 (Number, not Text)
Variable Extract = RIGHT(Product[Description], Product[CharCount])Variable Extract = RIGHT(Product[Description], Product[CharCount])
ขึ้นอยู่กับค่า CharCount
เป็น Text เสมอ ถ้าต้องการนำไปคำนวณทางคณิตศาสตร์ต้องใช้ฟังก์ชัน VALUE() แปลง เช่น RIGHT(Code, 3) + 100 จะเกิดข้อผิดพลาด ต้องเป็น VALUE(RIGHT(Code, 3)) + 100
ไม่ใช่ ฟังก์ชัน RIGHT เป็นของ DAX เท่านั้น Power Query จะใช้ Text.End() แทน
DAX จะคืนค่าข้อความทั้งหมด เช่น RIGHT(“Hello”, 10) จะคืน “Hello” ไม่ใช่ข้อผิดพลาด
RIGHT ดึงจากด้านขวา LEFT ดึงจากด้านซ้าย เช่น RIGHT(“ABC123”, 3) ได้ “123” แต่ LEFT(“ABC123”, 3) ได้ “ABC”
ไม่ได้ ถ้าใช้ DirectQuery สำหรับ Calculated Column หรือ RLS จะเกิดข้อผิดพลาด ต้องใช้ Import Mode
ฟังก์ชัน RIGHT ใน DAX ใช้สำหรับดึงตัวอักษรจากด้านขวาสุดของข้อความตามจำนวนที่กำหนด เมื่อคุณต้องการแยกส่วนท้ายของข้อมูล เช่น ปีจากวันที่ รหัสหมวดหมู่จากรหัสสินค้า หรือคำนำหน้า/นามสกุลจากชื่อเต็ม
ส่วนตัวผมคิดว่า RIGHT กับ LEFT เป็นเหมือนกรรไกรของนักเขียนโค้ด – ธรรมชาติแล้วเราต้องตัดข้อความประมาณนี้ทุกวันในการทำความสะอาดข้อมูล 😎
ความเจ๋งของ RIGHT คือมันทำงานได้ดีทั้งในเมิจเมอร์ (Calculated Column) และมิเจอร์ (Measure) แต่ต้องเข้าใจ Row Context – ถ้าคุณใช้มันในเมิจเมอร์ มันจะรันแต่ละแถวทีละแถว (Row Context) ถ้าใช้ในมิเจอร์ต้องผ่าน CONCATENATEX หรือสร้างคอลัมน์ช่วย
ข้อควรระวัง: RIGHT คืนค่าเป็น Text เสมอ ถ้าตัวอักษรที่ดึงมาคือตัวเลขและต้องคำนวณต่อ ต้องแปลงด้วย VALUE() ก่อน