=TRIM(<text>)
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| text | String | Yes | ข้อความที่ต้องการลบช่องว่างส่วนเกิน สามารถเป็นลิเทอรัลข้อความ เป็นการ reference คอลัมน์ หรือผลลัพธ์จากฟังก์ชันอื่น |
ลดปัญหาการจับคู่ไม่ติดเพราะมีช่องว่างนำหน้า/ท้าย หรือช่องว่างหลายตัว
ใช้คู่กับ LEN เพื่อเช็คว่าข้อความว่างจริงหรือไม่
TRIM(" Hello World ")= TRIM(" Hello World ")
"Hello World"
ชื่อสะอาด = TRIM(Customers[Name])ชื่อสะอาด = TRIM(Customers[Name])
ชื่อลูกค้าที่ไม่มีช่องว่างแฝง
เป็นค่าว่างจริง? = IF( LEN(TRIM(Customers[Email])) = 0, "ว่างจริง", "มีข้อมูล" )เป็นค่าว่างจริง? =
IF(
LEN(TRIM(Customers[Email])) = 0,
"ว่างจริง",
"มีข้อมูล"
)
"ว่างจริง" หรือ "มีข้อมูล"
ทั้งสองเหมือนกันจริง? = EXACT( TRIM(UPPER(Customers[Name])), TRIM(UPPER(Lookup[Name])) )ทั้งสองเหมือนกันจริง? =
EXACT(
TRIM(UPPER(Customers[Name])),
TRIM(UPPER(Lookup[Name]))
)
TRUE() หรือ FALSE()
สินค้าจับคู่แล้ว = CALCULATETABLE( Products, Products[Code] = TRIM(Imports[Code]) )สินค้าจับคู่แล้ว =
CALCULATETABLE(
Products,
Products[Code] = TRIM(Imports[Code])
)
ตารางสินค้าที่ matched กับรหัสที่ทำความสะอาดแล้ว
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 ลบช่องว่างส่วนเกินในข้อความ โดยตัดทั้งช่องว่างนำหน้า ช่องว่างท้าย และลดช่องว่างหลายตัวระหว่างคำให้เหลือเพียงตัวเดียว ฟังก์ชันนี้เหมาะสำหรับทำความสะอาดข้อมูลที่นำเข้ามาจากระบบอื่น เพราะสำคัญนิดเดือยว่า ช่องว่างแฝง ๆ ที่มองไม่เห็นมักทำให้ VLOOKUP/XLOOKUP/SEARCH ไม่เจอค่าถึงแม้ว่าข้อมูลดูเหมือนเหมือนกันเลย
ที่เจ๋งคือ TRIM ช่วยแก้ปัญหา Data Integration ที่ยุ่งยากที่สุด คือเมื่อข้อมูลมาจากหลายระบบ (Excel ที่มีข้อมูลเก่า เว็บไซต์ CSV ต่างๆ) บางอันมีช่องว่างแฝง บางอันไม่มี ถ้าไม่ TRIM ก่อน join/match จะเจอค่าแปลก ๆ เช่นคณะหลายคนพยายาม VLOOKUP แล้วไม่เจอทั้ง ๆ ที่ข้อมูลชัด ๆ อยู่
ส่วนตัวผมมักใช้ TRIM เป็นตัวแรกในขั้นตอน Data Transformation ทั้ง DAX และ Power Query อยากจะหลีกเลี่ยง magic ค่อนข้างบ่อย ผมเขียน VAR เก็บค่า TRIM ไว้แล้วค่อยนำไปทำ UPPER/LOWER/SUBSTITUTE เพื่อให้มั่นใจว่าข้อมูลสะอาด ส่วนใหญ่จะไม่มีปัญหา แต่ข้อมูลจริง ๆ มีเรื่องแปลก ๆ เสมอ