| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| text | String | ข้อความที่ต้องการลบช่องว่างส่วนเกิน สามารถเป็นลิเทอรัลข้อความ เป็นการ reference คอลัมน์ หรือผลลัพธ์จากฟังก์ชันอื่น |
TRIM ลบช่องว่างส่วนเกินในข้อความ โดยตัดทั้งช่องว่างนำหน้า ช่องว่างท้าย และลดช่องว่างหลายตัวระหว่างคำให้เหลือเพียงตัวเดียว ฟังก์ชันนี้เหมาะสำหรับทำความสะอาดข้อมูลที่นำเข้ามาจากระบบอื่น เพราะสำคัญนิดเดือยว่า ช่องว่างแฝง ๆ ที่มองไม่เห็นมักทำให้ VLOOKUP/XLOOKUP/SEARCH ไม่เจอค่าถึงแม้ว่าข้อมูลดูเหมือนเหมือนกันเลย
ที่เจ๋งคือ TRIM ช่วยแก้ปัญหา Data Integration ที่ยุ่งยากที่สุด คือเมื่อข้อมูลมาจากหลายระบบ (Excel ที่มีข้อมูลเก่า เว็บไซต์ CSV ต่างๆ) บางอันมีช่องว่างแฝง บางอันไม่มี ถ้าไม่ TRIM ก่อน join/match จะเจอค่าแปลก ๆ เช่นคณะหลายคนพยายาม VLOOKUP แล้วไม่เจอทั้ง ๆ ที่ข้อมูลชัด ๆ อยู่
ส่วนตัวผมมักใช้ TRIM เป็นตัวแรกในขั้นตอน Data Transformation ทั้ง DAX และ Power Query อยากจะหลีกเลี่ยง magic ค่อนข้างบ่อย ผมเขียน VAR เก็บค่า TRIM ไว้แล้วค่อยนำไปทำ UPPER/LOWER/SUBSTITUTE เพื่อให้มั่นใจว่าข้อมูลสะอาด ส่วนใหญ่จะไม่มีปัญหา แต่ข้อมูลจริง ๆ มีเรื่องแปลก ๆ เสมอ
ลดปัญหาการจับคู่ไม่ติดเพราะมีช่องว่างนำหน้า/ท้าย หรือช่องว่างหลายตัว
ใช้คู่กับ LEN เพื่อเช็คว่าข้อความว่างจริงหรือไม่
ลบช่องว่าง 2 ตัวนำหน้า 3 ตัวตรงกลาง 2 ตัวท้าย เหลือแค่ช่องว่างเดี่ยวตรงกลางคำ
สร้างคอลัมน์ที่ทำความสะอาดแล้ว เหมาะสำหรับนำไป VLOOKUP หรือ join กับตาราอื่น
TRIM ช่วยค้นหาช่องว่างแฝงที่ดูเหมือนข้อมูล แต่จริง ๆ ว่างเปล่า LEN นับความยาวหลังตัดแล้ว
TRIM + UPPER ช่วยให้ EXACT ตรวจสอบข้อความได้แม่นยำ ไม่โดนช่องว่างหรือตัวพิมพ์แตกต่าง
ใช้ TRIM เพื่อให้ filter condition ตรงกัน โดยเฉพาะเวลา join ข้อมูลจากเอกสารต่างๆ
TRIM ลบแค่บางตัว: ลบช่องว่างนำหน้า ลบช่องว่างท้าย และลดช่องว่างหลายตัวระหว่างคำให้เหลือเพียงตัวเดียว ไม่ลบช่องว่างเดี่ยวระหว่างคำ ซึ่งสำคัญมากเพราะ "Hello World" ต้องคงช่องว่างตรงกลาง ไม่ใช่กลายเป็น "HelloWorld"
มักเป็นเพราะช่องว่างแฝง หลายท่านไม่เห็นว่า Lookup value มีช่องว่างนำหน้า ท้าย หรือหลายตัวระหว่างคำ TRIM ก่อนนำไป VLOOKUP จะช่วยได้เยอะ โดยเฉพาะข้อมูลจากระบบต่างๆ
ไม่ได้ TRIM ลบแค่ space ASCII มาตรฐาน (code 32) ส่วน nonbreaking space (code 160) ที่เจอบ่อยในเว็บ TRIM จะไม่ทำอะไรกับมัน ถ้าต้องลบทั้งสองนั้นให้ใช้ SUBSTITUTE() ร่วมกับ CHAR(160) เพื่อแทนที่ nonbreaking space เป็น space ธรรมดาก่อน
ได้ เพราะ TRIM ส่งกลับ text string เหมือนกับ VALUE/FORMAT ฟังก์ชันอื่น ๆ แต่สำหรับ Measure มักเป็นเรื่องระหว่าง Dimension/Filter ไม่ค่อยต้องใช้ TRIM ใน Measure เท่า ส่วนใหญ่ใช้ใน Calculated Column หรือใน Power Query ก่อนจะ Load เข้า Data Model
DAX มีแค่ TRIM (ลบช่องว่าง) ไม่มี CLEAN เหมือน Excel ถ้าอยากลบ control characters และ nonprinting characters ก็ต้องใช้ SUBSTITUTE หรือ REGEX (ถ้าใช้ Power BI/DAX ชั่วใหม่) แต่ปกติ TRIM + SUBSTITUTE ก็ครอบคลุมเรื่องทำความสะอาดข้อความแล้ว
ฟังก์ชันที่ผู้เขียนโยงไว้กับ TRIM จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
CONCATENATE ต่อข้อความ 2 ค่าให้เป็นสตริงเดียว เหมาะกับการทำ label หรือรวมข้อความจาก 2 แหล่งในบริบทปัจจุบัน
EXACT เปรียบเทียบ Text1 กับ Text2 แบบตรงตัวและคำนึงถึงตัวพิมพ์เล็ก/ใหญ่ คืน TRUE เมื่อเหมือนกันทุกตัวอักษร เหมาะกับงานตรวจรหัส/ข้อความที่ต้องแยก case
LEFT คืนค่าตัวอักษรจำนวนหนึ่งจากจุดเริ่มต้นของข้อความ ใช้ได้กับ Calculated Column โดยจะประมวลผลภาษาต่างๆ (Unicode) อย่างเดียวกัน
LEN นับจำนวนอักขระของสตริง รวมช่องว่างด้วย ใช้สำหรับตรวจสอบความยาวข้อมูล การทำความสะอาด และงานเงื่อนไขตามความยาวข้อความ
LOWER แปลงข้อความให้เป็นตัวพิมพ์เล็กทั้งหมด มีประโยชน์มากสำหรับการทำความสะอาดข้อมูลและแก้ปัญหาคีย์ไม่ตรงกันเพราะเหตุคำต่างชั้นอักษร
MID คืนสตริงย่อยจากข้อความ โดยเริ่มที่ StartNum (เริ่มนับที่ 1) และดึง NumChars ตัว ใช้บ่อยในการแยก/ตัดข้อความร่วมกับ LEFT/RIGHT/FIND/SEARCH
REPLACE แทนที่อักขระจำนวนหนึ่งในสตริง โดยเริ่มจากตำแหน่งที่ระบุ เหมาะกับการแก้ไขข้อความเฉพาะตำแหน่ง เช่น เปลี่ยนคำนำหน้า แทนที่ตัวเลขบางหลัก หรือซ่อนบางส่วนของข้อมูล
SEARCH คืนค่าตำแหน่งเริ่มต้นของข้อความที่ค้นหา (ค้นหาแบบไม่สนตัวพิมพ์) หากไม่พบจะเกิดข้อผิดพลาด สามารถใช้กับ IFERROR หรือ COALESCE เพื่อจัดการกรณีไม่พบ
SUBSTITUTE ค้นหาและแทนที่ข้อความในสตริง สามารถแทนที่ทุกครั้งหรือเพียงครั้งที่ n เหมาะกับการปรับรูปแบบและทำความสะอาดข้อมูลโดยตรวจสอบเนื้อหา ไม่ใช่ตำแหน่ง
UPPER แปลงข้อความให้เป็นตัวพิมพ์ใหญ่ทั้งหมด ใช้บ่อยเพื่อปรับปรุงคุณภาพข้อมูลและทำให้การเปรียบเทียบข้อความแม่นยำ
VALUE แปลงข้อความที่แทนตัวเลขให้เป็นตัวเลข (decimal) เหมาะสำหรับข้อมูลนำเข้าที่ตัวเลขถูกเก็บเป็นข้อความหรือข้อมูลที่ไม่ทำความสะอาดอย่างถูกต้อง
ยังไม่มีบทความที่เกี่ยวข้องกับฟังก์ชันนี้
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่