List.FindText ค้นหาสมาชิกในรายการที่มีข้อความย่อยที่กำหนด เหมาะเมื่อต้องการกรองข้อมูลไม่ใช่แค่ตรงแม่นทั้งคำ แต่ต้องการค้นหาแบบบางส่วนก็ได้
| อาร์กิวเมนต์ | ชนิด | คำอธิบาย |
|---|---|---|
| list | list | List ที่ต้องการค้นหา (ต้องเป็นรายการข้อความ) |
| text | text | ข้อความย่อย (Substring) ที่ต้องการค้นหา |
List.FindText เป็นฟังก์ชันสำหรับค้นหาเนื้อหาข้อความภายในสมาชิกของ List โดยมันจะตรวจสอบทีละสมาชิก แล้วคืนค่า List ใหม่ที่มีเฉพาะสมาชิกที่ ‘มี’ ข้อความที่ค้นหาอยู่ภายใน (Substring matching) ไม่ใช่แค่ Match ทั้งคำ
ที่เจ๋งคือ มันทำให้ผมค้นหาได้ยืดหยุ่นมาก เช่นค้นหา ‘cat’ ในรายชื่อสัตว์ก็จะจับ ‘cat’, ‘catfish’, ‘concatenate’ ไปหมด ไม่ต้องเขียน Complex Formula
ส่วนตัวผม ผมใช้กับ Table.SelectRows เพื่อกรองข้อมูลจากตารางใหญ่ พอมีเงื่อนไขค้นหาข้อความแล้ว มันเร็วและชัดเจนมาก 😎
ค้นหารายการสินค้าที่มีคำว่า "Samsung" หรือ "iPhone" อยู่ในชื่อสินค้า
เลือกเฉพาะบรรทัดใน Log File ที่มีคำว่า "Error" หรือ "Warning" เพื่อตรวจสอบปัญหา
ค้นหาสมาชิกที่มีตัวอักษร 'a' อยู่ – apple มี a ที่เหมือน banana มี a แต่ cherry ไม่มี
ค้นหาคำว่า 'Query' – ได้ทั้ง 'Power Query' และ 'Query Language' เพราะทั้งคู่มีคำนี้อยู่
ค้นหาสมาชิกที่มี 'Product' – ได้เฉพาะรหัสสินค้า ไม่ได้รหัสออเดอร์
ใช้ List.FindText เพื่อหา Names ที่มี 'Alice' แล้วใช้กรอง Table – ประโยชน์มากเวลาข้อมูลใหญ่
เป็น Case Sensitive ครับ ผม test ดูแล้ว List.FindText({"Apple", "apple"}, "apple") จะได้แค่ {"apple"} ไม่จับ "Apple" ถ้าต้องไม่สนใจตัวพิมพ์ใหญ่/เล็ก ต้องใช้ Text.Lower กับทั้ง List และ Text
ผมชี้แจงนะ – List.Contains เป็นการหา Exact Match พอดีๆ (หรือเกือบพอดี) ส่วน List.FindText เป็นการหา Substring Match (ค้นหาข้อความย่อยภายใน) ดังนั้น List.FindText ยืดหยุ่นกว่า
ถ้า List ว่าง จะได้ List ว่าง ถ้า Text ว่าง ผมเดาว่าจะได้ List เต็มทั้งหมด (เพราะทุกข้อความมี Empty String อยู่) ลองเองดีที่สุด
ฟังก์ชันที่ผู้เขียนโยงไว้กับ List.FindText จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
List.Contains จะคืนค่า true หาก value ที่กำหนดเป็นสมาชิกของ List และคืนค่า false หากไม่พบ สามารถระบุ Comparer เพื่อกำหนดว่าจะให้ตรวจสอบแบบ Case Sensitive หรือ Case Insensitive ได้
List.Select จะรับ List และฟังก์ชันเงื่อนไข (selection as function) โดยจะประเมินฟังก์ชันเงื่อนไขกับสมาชิกแต่ละตัว หากฟังก์ชันคืนค่า true จะเก็บสมาชิกนั้นไว้ใน List ใหม่ หากคืนค่า false จะถูกคัดทิ้งไป
Table.SelectRows เป็นฟังก์ชันสำหรับกรองตาราง (filter table) ใน Power Query โดยใช้ฟังก์ชันเงื่อนไข (condition function) เพื่อตรวจสอบแต่ละแถว ถ้าเงื่อนไขคืนค่า true จะเก็บแถวนั้นไว้ ถ้าเป็น false จะตัดทิ้ง สามารถใช้ keyword 'each' ร่วมกับการอ้างอิงคอลัมน์ด้วย [ColumnName] เพื่อเขียนเงื่อนไขได้สะดวก รองรับการกรองตามตัวเลข ข้อความ วันที่ การตรวจสอบค่า null และเงื่อนไขที่ซับซ้อนด้วย and/or operators ฟังก์ชันนี้รองรับ Query Folding ซึ่งช่วยเพิ่มประสิทธิภาพเมื่อทำงานกับ data source ขนาดใหญ่
Text.Contains ใช้สำหรับตรวจสอบว่าข้อความที่กำหนด (text) มีข้อความย่อยที่ต้องการค้นหา (substring) อยู่ภายในหรือไม่ ส่งคืนค่า true หรือ false
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่