| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| text | text | ข้อความที่ต้องการตัดคำ หรือคอลัมน์ที่มีข้อความ (Table[Column] format) | |
| [num_chars]ไม่บังคับ | integer | 1 | จำนวนตัวอักษรที่ต้องการดึง ถ้าไม่ใส่จะดึง 1 ตัว สามารถเป็นค่าคงที่หรือคอลัมน์อื่นได้ |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
ฟังก์ชัน RIGHT ใน DAX ใช้สำหรับดึงตัวอักษรจากด้านขวาสุดของข้อความตามจำนวนที่กำหนด เมื่อคุณต้องการแยกส่วนท้ายของข้อมูล เช่น ปีจากวันที่ รหัสหมวดหมู่จากรหัสสินค้า หรือคำนำหน้า/นามสกุลจากชื่อเต็ม
ส่วนตัวผมคิดว่า RIGHT กับ LEFT เป็นเหมือนกรรไกรของนักเขียนโค้ด – ธรรมชาติแล้วเราต้องตัดข้อความประมาณนี้ทุกวันในการทำความสะอาดข้อมูล 😎
ความเจ๋งของ RIGHT คือมันทำงานได้ดีทั้งในเมิจเมอร์ (Calculated Column) และมิเจอร์ (Measure) แต่ต้องเข้าใจ Row Context – ถ้าคุณใช้มันในเมิจเมอร์ มันจะรันแต่ละแถวทีละแถว (Row Context) ถ้าใช้ในมิเจอร์ต้องผ่าน CONCATENATEX หรือสร้างคอลัมน์ช่วย
ข้อควรระวัง: RIGHT คืนค่าเป็น Text เสมอ ถ้าตัวอักษรที่ดึงมาคือตัวเลขและต้องคำนวณต่อ ต้องแปลงด้วย VALUE() ก่อน
ดึงตัวเลข 4 ตัวท้ายของรหัส Invoice ที่แสดงปี (เช่น INV-2023)
ถ้า InvoiceNo คือ "INV-001-2023" จะได้ "2023" (ใช้ Row Context โดยอัตโนมัติในเมิจเมอร์)
ถ้า Code คือ "ABC-D" จะได้ "D" (ดึง 1 ตัวเพราะ num_chars ไม่ระบุ)
ตรวจสอบว่า SKU ลงท้ายด้วย "PRE" หรือไม่ (ใช้เงื่อนไขกับผลลัพธ์ของ RIGHT)
ดึง 2 ตัวท้ายแล้วแปลงเป็นตัวเลข เพื่อนำไปคำนวณต่อได้
ดึงจำนวนตัวอักษรตามค่าในคอลัมน์ 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 จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
FIND คืนค่าตำแหน่งเริ่มต้นของ FindText ภายใน WithinText (เริ่มนับที่ 1) โดยค้นหาแบบแยกตัวพิมพ์ใหญ่/เล็ก และสามารถระบุ StartNum/NotFoundValue เพื่อควบคุมจุดเริ่มค้นหาและผลลัพธ์เมื่อไม่พบได้
LEFT คืนค่าตัวอักษรจำนวนหนึ่งจากจุดเริ่มต้นของข้อความ ใช้ได้กับ Calculated Column โดยจะประมวลผลภาษาต่างๆ (Unicode) อย่างเดียวกัน
LEN นับจำนวนอักขระของสตริง รวมช่องว่างด้วย ใช้สำหรับตรวจสอบความยาวข้อมูล การทำความสะอาด และงานเงื่อนไขตามความยาวข้อความ
LOWER แปลงข้อความให้เป็นตัวพิมพ์เล็กทั้งหมด มีประโยชน์มากสำหรับการทำความสะอาดข้อมูลและแก้ปัญหาคีย์ไม่ตรงกันเพราะเหตุคำต่างชั้นอักษร
MID คืนสตริงย่อยจากข้อความ โดยเริ่มที่ StartNum (เริ่มนับที่ 1) และดึง NumChars ตัว ใช้บ่อยในการแยก/ตัดข้อความร่วมกับ LEFT/RIGHT/FIND/SEARCH
REPLACE แทนที่อักขระจำนวนหนึ่งในสตริง โดยเริ่มจากตำแหน่งที่ระบุ เหมาะกับการแก้ไขข้อความเฉพาะตำแหน่ง เช่น เปลี่ยนคำนำหน้า แทนที่ตัวเลขบางหลัก หรือซ่อนบางส่วนของข้อมูล
UPPER แปลงข้อความให้เป็นตัวพิมพ์ใหญ่ทั้งหมด ใช้บ่อยเพื่อปรับปรุงคุณภาพข้อมูลและทำให้การเปรียบเทียบข้อความแม่นยำ
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่