List.Contains จะคืนค่า true หาก value ที่กำหนดเป็นสมาชิกของ List และคืนค่า false หากไม่พบ สามารถระบุ Comparer เพื่อกำหนดว่าจะให้ตรวจสอบแบบ Case Sensitive หรือ Case Insensitive ได้
| อาร์กิวเมนต์ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
| list | list | List ที่ต้องการค้นหา | |
| value | any | ค่าที่ต้องการค้นหาใน List | |
| [comparer]ไม่บังคับ | function | Comparer.Ordinal | ฟังก์ชัน Comparer สำหรับกำหนดวิธีการเปรียบเทียบ |
[ ] = อาร์กิวเมนต์ที่ไม่บังคับ
ฟังก์ชัน List.Contains ใน Power Query ใช้สำหรับตรวจสอบว่า List มีสมาชิกที่ตรงกับค่าที่ต้องการค้นหาอยู่ภายในหรือไม่ โดยจะคืนค่า true หากพบ และ false หากไม่พบ
ที่เจ๋งคือ List.Contains ทำงานได้เร็วแม้กับ List ที่มีจำนวนสมาชิกมากๆ ก็ตาม นอกจากนี้ยังสามารถระบุ Comparer เพื่อกำหนดว่าการตรวจสอบจะเป็น Case Sensitive หรือ Case Insensitive ได้อีกด้วย
ส่วนตัวผมใช้ฟังก์ชันนี้บ่อยมากเวลาต้อง Filter ข้อมูลโดยดูจากค่าที่อยู่ใน List ที่สร้างมาก่อนหน้า มันช่วยให้โค้ดสะอาดและเข้าใจง่ายขึ้นเยอะครับ 😎
เช็คว่าชื่อผู้ใช้อยู่ใน List ของผู้ดูแลระบบหรือไม่
ใช้เพื่อกรองข้อมูลในตาราง ให้เหลือเฉพาะรายการที่อยู่ใน List ของค่าที่ยอมรับ
List มีคำว่า "banana" อยู่ จึงคืนค่า true
List ไม่มีคำว่า "orange" อยู่ จึงคืนค่า false
ใช้ Comparer.OrdinalIgnoreCase เพื่อไม่สนใจ Case Sensitive ทำให้ "apple" และ "Apple" ถูกมองว่าเหมือนกัน
List.Contains ทำงานได้กับตัวเลขเช่นกัน มันเปรียบเทียบค่าตัวเลขแล้วคืนค่า true หากพบค่า 30 ใน List
List.Contains ตรวจสอบว่ามีสมาชิกที่ 'ตรงกันเป๊ะ' หรือไม่ ส่วน List.FindText ตรวจสอบว่ามีสมาชิกที่ 'มีข้อความย่อย' ที่กำหนดอยู่หรือไม่ เจอบ่อยครั้งที่คนสับสนครับ 😅
ปัญหานี้เกิดจาก Data Type ไม่ตรงกันบ่อยครั้งครับ เช่น ค้นหา 30 (Number) แต่ List มี "30" (Text) ลองใช้ Comparer.Ordinal หรือแปลง Data Type ให้เหมือนกันก่อนนะ
ฟังก์ชันที่ผู้เขียนโยงไว้กับ List.Contains จัดกลุ่มตามหมวด · ชี้ที่ชื่อใดชื่อหนึ่ง แล้วฟังก์ชันที่ใช้คู่กันจะมีจุดทอง
List.AllTrue คืนค่า true หากทุกเงื่อนไขใน List เป็นจริงทั้งหมด
List.AnyTrue คืนค่า true หากมีเงื่อนไขอย่างน้อยหนึ่งข้อใน List เป็นจริง
List.ContainsAll คืนค่า true ถ้า List หลักมีสมาชิกครบทุกตัวที่ระบุใน List ที่สอง
List.ContainsAny คืนค่า true ถ้า List หลักมีสมาชิกอย่างน้อยหนึ่งตัวจาก List ที่สอง
List.FindText ค้นหาสมาชิกในรายการที่มีข้อความย่อยที่กำหนด เหมาะเมื่อต้องการกรองข้อมูลไม่ใช่แค่ตรงแม่นทั้งคำ แต่ต้องการค้นหาแบบบางส่วนก็ได้
List.PositionOf จะคืนค่า Index แรกสุด (0-based) ของ value ที่พบใน list ถ้าไม่พบจะคืนค่า -1 สามารถระบุ occurrence เพื่อหาตำแหน่งของตัวที่ซ้ำกัน และใช้ comparer เพื่อกำหนดวิธีการเปรียบเทียบ (Case Sensitive/Insensitive)
Table.ColumnNames ดึงชื่อคอลัมน์ทั้งหมดจากตาราง และส่งกลับมาเป็นลิสต์ข้อความ ซึ่งจำเป็นสำหรับการตรวจสอบ schema แบบ dynamic
Table.ColumnNames ดึงชื่อคอลัมน์ทั้งหมดจากตารางและคืนค่าเป็นลิสต์ของข้อความ เหมาะสำหรับการทำงานแบบไดนามิกกับโครงสร้างตารางที่ไม่แน่นอน
Comparer.OrdinalIgnoreCase เป็นฟังก์ชันที่คืนค่าเป็น 'Function' ซึ่งใช้ในการเปรียบเทียบค่า 2 ค่า โดยจะถือว่า "A" และ "a" เท่ากัน (return 0) ใช้เป็น Argument สุดท้ายในหลายๆ ฟังก์ชัน เช่น List.Contains, Text.Contains, Table.Distinct
ฟังก์ชันสำหรับดึงรายชื่อ Field ทั้งหมดจาก Record และคืนค่าเป็น List ของ Text
Comments
อีเมลของคุณจะไม่ถูกเผยแพร่