Text.Split(text, separator) ใช้แยกข้อความเป็น List โดยอิงตามตัวคั่น (delimiter) ที่ระบุ สามารถใช้ตัวคั่นเพียงตัวเดียวหรือหลายตัวอักษร เช่น “|” หรือ “, the ” ผลลัพธ์คืนค่าเป็น List ของข้อความ
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| text | text | ข้อความที่ต้องการแยก (พารามิเตอร์บังคับ) |
| separator | text | ตัวคั่น (delimiter) ใช้สำหรับแยกข้อความ สามารถเป็นตัวอักษรเดียวหรือหลายตัวอักษร เช่น “|”, “,”, ” AND “, “, the ” (พารามิเตอร์บังคับ) |
Text.Split(text, separator) เป็นฟังก์ชันสำหรับแยกข้อความที่ยาวออกเป็นส่วนย่อยตามตัวคั่นที่เราต้องการ เช่น แยก “Name|Address|Phone” โดยใช้ “|” เป็นตัวคั่น ผลลัพธ์จะเป็น List {“Name”, “Address”, “Phone”}
ที่เจ๋งคือ Text.Split ยอมรับตัวคั่นแบบ multi-character ได้ เช่น “, the ” หรือ ” AND ” ไม่ต้องจำกัดว่าต้องเป็นตัวอักษรเดียว นอกจากนี้ฟังก์ชันนี้ยังคืนค่าเป็น List ซึ่งสามารถนำไปใช้กับ List.Transform หรือ Table.FromRows ได้อย่างสะดวก
ส่วนตัวผม Text.Split เป็นฟังก์ชันที่ใช้บ่อยมากเมื่อต้องแยกข้อมูล CSV หรือข้อมูลที่คั่นด้วย delimiter เหมือน “A,B,C” คู่กับ List.Transform หรือ Table functions ทำให้สามารถแปลงข้อมูล structured ได้อย่างมีประสิทธิภาพ 😎
ถ้ารหัสสินค้าเป็น "PROD-001-RED" สามารถแยกเป็น "PROD", "001", "RED" ได้
ถ้ามี Field ที่เก็บ Tags หลายๆ คำคั่นด้วยคอมม่า สามารถแยกออกมาเป็น List ของ Tag ได้
ถ้าข้อมูลในแต่ละคอลัมน์คั่นด้วยตัวอักษรเฉพาะ สามารถใช้ Text.Split เพื่อแยกเป็นคอลัมน์ได้ (ร่วมกับ Table.FromList)
แยกข้อความ "Name|Address|PhoneNumber" โดยใช้ "|" เป็นตัวคั่น ผลลัพธ์คือ List ที่มี 3 รายการ
แยกข้อความโดยใช้ ", the " (สามตัวอักษร) เป็นตัวคั่น ข้อมูล multi-character delimiter จะคำนึงถึงลำดับอักษรและช่องว่างด้วย
ในโครงสร้าง let…in ใช้ Text.Split เพื่อแยก CSV ที่คั่นด้วยเครื่องหมายจุลภาค หลังจากนั้นสามารถนำ List ไปใช้กับ List.Transform หรือ Table.FromRows ได้
ใช้ Text.Split สองครั้ง: ครั้งแรกแยกแต่ละแถวด้วย ";", ครั้งที่สองแยกแต่ละคอลัมน์ด้วย "|" เพื่อสร้างตารางที่มีข้อมูล structured
แยกชื่อเต็มด้วยช่องว่าง จากนั้นเข้าถึงรายการแต่ละรายการของ List ด้วย {0} และ {1} โดยใช้ zero-based indexing
ถ้าตัวคั่นไม่พบในข้อความ Text.Split จะคืนค่า List ที่มีรายการเดียว ซึ่งก็คือข้อความเดิมทั้งหมด เช่น Text.Split("Hello", "|") จะคืนค่า {"Hello"}
ไม่ได้ Text.Split ใช้ literal string matching เท่านั้น ถ้าต้องแยกตามรูปแบบ regex ต้องใช้ฟังก์ชัน Splitter.SplitTextByDelimiter() หรือ Text.Replace กับ Table functions อื่นๆ
ใช่ Text.Split คืนค่า List of text {text, text, …} สามารถเข้าถึงรายการด้วย {index} หรือใช้ List.Transform เพื่อแปลงแต่ละรายการ
ไม่ Text.Split เป็น exact split ถ้าข้อความมีช่องว่างเหลือ เช่น Text.Split("A , B", ",") จะได้ {"A ", " B"} มีช่องว่างอยู่ ต้องใช้ Text.Trim() เพื่อลบช่องว่างออก
ฟังก์ชันที่ผู้เขียนโยงไว้กับ Text.Split จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
ดึงข้อความหลังจากตัวคั่นที่กำหนด สามารถเลือกว่าจะใช้ตัวคั่นที่ 1, 2, 3 เป็นต้น
Text.BeforeDelimiter ดึงข้อความส่วนที่อยู่ก่อนตัวคั่นที่กำหนด พร้อมตัวเลือกระบุตัวคั่นตัวไหน
ดึงข้อความที่อยู่ระหว่างตัวคั่น 2 ตัว
Text.Combine ใช้สำหรับรวมข้อความหลายตัวจาก List เข้าด้วยกันเป็นข้อความเดียว โดยสามารถเลือกใช้ตัวคั่น (separator) เช่น ลูกน้ำ เครื่องหมายขีด หรือ space ได้ เหมาะสำหรับสร้างชื่อเต็ม ที่อยู่ หรือรหัสประจำตัวจากส่วนประกอบย่อยๆ
Text.Replace ใช้สำหรับแทนที่ทุกส่วนของข้อความเก่าในข้อความหลักด้วยข้อความใหม่ เป็น Case Sensitive และแทนที่ทีละครั้งที่เจอในข้อความทั้งหมด
Text.Select จะคืนค่าข้อความใหม่ที่ประกอบด้วยตัวอักษรที่อยู่ใน selectChars เท่านั้น อักขระใดที่ไม่อยู่ในรายการนี้จะถูกลบออกไป มีประโยชน์มากในการ Clean Data
Text.SplitAny ใช้สำหรับแยกข้อความด้วยอักขระใดๆ ในรายการ แตกต่างจาก Text.Split ที่ใช้สตริงตัวคั่นเดียว
Text.ToList จะแยกข้อความหลักออกเป็น List ของ Text String โดยแต่ละสมาชิกใน List จะเป็นตัวอักษร 1 ตัว (รวมถึงช่องว่างและอักขระพิเศษ) ตามลำดับที่ปรากฏในข้อความต้นฉบับ
Text.Trim ลบอักขระที่ระบุออกจากต้นและท้ายของข้อความ ค่าเริ่มต้นจะลบแค่ช่องว่าง
ระบุการกระทำเมื่อพบค่าเกินมาในแถว (Extra Values) – ถ้า Splitter Function ส่งคอลัมน์มามากกว่าที่คาดหวัง ให้ Power Query รู้ว่าต้องทำไง
Html.Table ใช้สำหรับแยกข้อมูลจากตารางหรือรายการในเอกสาร HTML โดยใช้ CSS selectors เพื่อกำหนดตำแหน่งและคอลัมน์
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่