ความแตกต่างระหว่างฟังก์ชัน Filter และ LookUp ใน Power Apps : การใช้งานร่วมกับ Gallery และ Form Display
การดึงข้อมูลมาแสดงในคอมโพเนนต์ต่าง ๆ ใน Power Apps มีหลายวิธี ขึ้นอยู่กับประเภทของข้อมูลที่ต้องการแสดง โดยฟังก์ชัน Filter() และ LookUp() เป็นฟังก์ชันที่ใช้บ่อยในการดึงข้อมูลจากแหล่งข้อมูล (Data Source) มาแสดงใน Gallery และ Form Display ซึ่งมีพฤติกรรมที่แตกต่างกันเมื่อใช้งานร่วมกับคอมโพเนนต์เหล่านี้ บทความนี้จะอธิบายการใช้งานฟังก์ชันทั้งสอง พร้อมทั้งเปรียบเทียบผลลัพธ์ที่เกิดขึ้นในแต่ละกรณี
ภาพรวมของการทดสอบ
การทดสอบครั้งนี้ เราใช้คอมโพเนนต์หลักใน Power Apps ได้แก่:
- Gallery: ใช้สำหรับแสดงข้อมูลหลายรายการ รองรับการกำหนดค่า Items
- Form Display: ใช้สำหรับแสดงข้อมูลเพียงรายการเดียว รองรับการกำหนดค่า Item
- Text Input (txtSearchType): ใช้สำหรับป้อนค่าประเภทที่ต้องการค้นหา เช่น movie หรือ TV Show
เราจะเปรียบเทียบการใช้ฟังก์ชัน Filter() และ LookUp() กับคอมโพเนนต์เหล่านี้ เพื่อดูว่าผลลัพธ์ที่ได้นั้นแตกต่างกันอย่างไร
การทดสอบการใช้งาน
กรณีที่ 1: ใช้ฟังก์ชัน Filter() ใน Gallery และ Form Display
จากรูปที่ 1 มีการใช้ฟังก์ชัน Filter() กับ Gallery และ Form Display โดย formula ที่ใช้มีลักษณะดังนี้:
Filter(netflix_titles, type = txtSearchType.Text)
ผลลัพธ์ :
- Gallery สามารถแสดงข้อมูลที่กรองมาได้ทั้งหมดที่ตรงกับประเภทที่ค้นหา (movie)
- Form Display ไม่แสดงข้อมูลใดเลย
เหตุผล:
- Filter() จะคืนค่าข้อมูลเป็นประเภท Table
- Gallery รองรับข้อมูลประเภท Table และสามารถแสดงผลรายการทั้งหมดที่ตรงกับเงื่อนไขได้
- Form Display รองรับข้อมูลประเภท Record เท่านั้น ไม่สามารถแสดงข้อมูลที่เป็น Table ได้ จึงไม่มีข้อมูลแสดง
กรณีที่ 2: ใช้ LookUp() ใน Form Display แต่ยังใช้ Filter() ใน Gallery
จากรูปที่ 2 มีการใช้ฟังก์ชัน LookUp() กับ Form Display ในขณะที่ Gallery ยังใช้ Filter() เหมือนเดิม
LookUp(netflix_titles, type = txtSearchType.Text)
ผลลัพธ์:
- Gallery ยังสามารถแสดงข้อมูลที่กรองมาได้หลายรายการ
- Form Display สามารถแสดงข้อมูลของ หนึ่งรายการแรกเท่านั้น ที่ตรงกับประเภทที่ค้นหา (movie)
เหตุผล:
- LookUp() คืนค่าข้อมูลเป็นประเภท Record ซึ่งเป็น แค่รายการแรกที่พบ แม้ว่าจะมีหลายรายการที่ตรงกับเงื่อนไข
- Form Display รองรับข้อมูลประเภท Record ได้ จึงสามารถแสดงข้อมูลได้ตามปกติ
- Gallery ยังคงใช้ Filter() ซึ่งคืนค่าข้อมูลประเภท Table ทำให้สามารถแสดงข้อมูลหลายรายการได้
กรณีที่ 3: ใช้ LookUp() ทั้งใน Gallery และ Form Display
จากรูปที่ 3 มีการใช้ LookUp() ทั้งใน Gallery และ Form Display:
LookUp(netflix_titles, type = txtSearchType.Text)
ผลลัพธ์:
- Gallery แสดงเพียง 1 รายการแรกเท่านั้น แทนที่จะเป็นหลายรายการ
- Form Display แสดงข้อมูลได้ตามปกติ แต่เป็นเพียงรายการแรกที่พบ
เหตุผล:
- LookUp() คืนค่าเป็น Record ซึ่งหมายถึงแค่ 1 รายการแรกที่พบ ทำให้ Gallery ได้รับแค่ 1 รายการเท่านั้น แม้จะมีหลายรายการที่ตรงกับเงื่อนไข
- Form Display ยังคงแสดงข้อมูลได้ตามปกติ เพราะรองรับข้อมูลประเภท Record
บทสรุป
จากการทดลองข้างต้น สามารถสรุปข้อแตกต่างของ Filter() และ LookUp() ได้ดังนี้
ฟังก์ชัน | ประเภทข้อมูลที่คืนค่า | ใช้งานกับ Gallery ได้หรือไม่ | ใช้งานกับ Form Display ได้หรือไม่ |
Filter() | Table (หลายรายการ) | ✅ แสดงผลหลายรายการ | ❌ ไม่รองรับ Table |
LookUp() | Record (แค่ 1 รายการแรกที่พบ) | ✅ แสดงแค่ 1 รายการแรกที่พบ | ✅ แสดงผลรายการแรกที่พบ |
คำแนะนำในการเลือกใช้
- หากต้องการแสดง หลายรายการ ให้ใช้ Filter() และควรใช้กับ Gallery
- หากต้องการแสดง รายการแรกที่พบ ให้ใช้ LookUp() ซึ่งจะเหมาะกับ Form Display
- Gallery สามารถใช้ได้ทั้ง Filter() และ LookUp() แต่หากใช้ LookUp() จะสามารถแสดงได้เพียง รายการเดียวเท่านั้น
สังเกตความแตกต่างระหว่าง Item และ Items
- Gallery ใช้ Items เป็น property สำหรับกำหนดข้อมูลที่ใช้แสดง ซึ่งสามารถเป็นได้ทั้ง Table หรือ Record
- Form Display ใช้ Item เป็น property ที่รับได้เฉพาะ Record เท่านั้น ไม่สามารถรับ Table ได้
การเลือกใช้ฟังก์ชันให้เหมาะสมกับคอมโพเนนต์จะช่วยให้สามารถดึงข้อมูลมาแสดงได้อย่างถูกต้องและมีประสิทธิภาพมากขึ้น
หวังว่าบทความนี้จะช่วยให้คุณเข้าใจความแตกต่างของ Filter() และ LookUp() ใน Power Apps ได้ดีขึ้น และสามารถเลือกใช้ได้อย่างเหมาะสมกับการพัฒนาแอปของคุณ
หลักสูตรที่เกี่ยวข้อง
Microsoft 365 for End User Training
Microsoft SharePoint Online For Front-End
Microsoft Power Apps (Canvas App) Workshop
Microsoft Power Automate (Cloud)
Microsoft Copilot Studio (Former Power Virtual Agent)
สนใจสอบถามรายละเอียดเพิ่มเติม
Tel: 021198405
Line: @M365th
Email: Sales@m365.co.th