Text.Split(text, separator) ใช้แยกข้อความเป็น List โดยอิงตามตัวคั่น (delimiter) ที่ระบุ สามารถใช้ตัวคั่นเพียงตัวเดียวหรือหลายตัวอักษร เช่น “|” หรือ “, the ” ผลลัพธ์คืนค่าเป็น List ของข้อความ
=Text.Split(text as text, separator as text) as list
=Text.Split(text as text, separator as text) as list
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| text | text | Yes | ข้อความที่ต้องการแยก (พารามิเตอร์บังคับ) | |
| separator | text | Yes | ตัวคั่น (delimiter) ใช้สำหรับแยกข้อความ สามารถเป็นตัวอักษรเดียวหรือหลายตัวอักษร เช่น “|”, “,”, ” AND “, “, the ” (พารามิเตอร์บังคับ) |
ถ้ารหัสสินค้าเป็น "PROD-001-RED" สามารถแยกเป็น "PROD", "001", "RED" ได้
ถ้ามี Field ที่เก็บ Tags หลายๆ คำคั่นด้วยคอมม่า สามารถแยกออกมาเป็น List ของ Tag ได้
ถ้าข้อมูลในแต่ละคอลัมน์คั่นด้วยตัวอักษรเฉพาะ สามารถใช้ Text.Split เพื่อแยกเป็นคอลัมน์ได้ (ร่วมกับ Table.FromList)
Text.Split("Name|Address|PhoneNumber", "|")= Text.Split("Name|Address|PhoneNumber", "|")
{"Name", "Address", "PhoneNumber"}
Text.Split("Name, the Customer, the Purchase Date", ", the ")= Text.Split("Name, the Customer, the Purchase Date", ", the ")
{"Name", "Customer", "Purchase Date"}
let CSVText = "Apple,Banana,Cherry,Date", Fruits = Text.Split(CSVText, ",") in Fruitslet
CSVText = "Apple,Banana,Cherry,Date",
Fruits = Text.Split(CSVText, ",")
in
Fruits
{"Apple", "Banana", "Cherry", "Date"}
let Source = "Product-A|100|USD;Product-B|200|USD", Rows = Text.Split(Source, ";"), SplitColumns = List.Transform(Rows, each Text.Split(_, "|")), Table = Table.…let
Source = "Product-A|100|USD;Product-B|200|USD",
Rows = Text.Split(Source, ";"),
SplitColumns = List.Transform(Rows, each Text.Split(_, "|")),
Table = Table.FromRows(SplitColumns, {"Product", "Price", "Currency"})
in
Table
ตารางที่มี 2 แถว 3 คอลัมน์:
| Product | Price | Currency |
|----------|-------|----------|
| Product-A| 100 | USD |
| Product-B| 200 | USD |
let FullName = "John Smith", Parts = Text.Split(FullName, " "), FirstName = Parts{0}, LastName = Parts{1} in [First = FirstName, Last = LastName]let
FullName = "John Smith",
Parts = Text.Split(FullName, " "),
FirstName = Parts{0},
LastName = Parts{1}
in
[First = FirstName, Last = LastName]
[First = "John", Last = "Smith"]
ถ้าตัวคั่นไม่พบในข้อความ 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(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 ได้อย่างมีประสิทธิภาพ 😎