ในการทำงานกับ Power Automate โดยเฉพาะเมื่อดึงข้อมูลจากแหล่งข้อมูลอย่าง Dataverse, SharePoint, SQL Server, Excel (ใน OneDrive/SharePoint) หรือแหล่งข้อมูลอื่น ๆ ที่รองรับ OData เราสามารถใช้ Filter Query เพื่อลดจำนวนข้อมูลที่ดึงมาและเพิ่มประสิทธิภาพของโฟลว์ได้
ในบทความนี้ เราจะพูดถึงโครงสร้างของ Filter Query, ตัวอย่างที่ใช้บ่อย และแนวทางการใช้งาน
ทำไมต้องใช้ Filter Query?
โดยปกติ เมื่อเราใช้ action อย่าง “Get items” (ใน SharePoint) หรือ “List rows” (ใน Dataverse) Power Automate จะดึงข้อมูลทั้งหมดมา แล้วใช้ “Filter array” ในภายหลัง ซึ่งทำให้โฟลว์ทำงานช้าลงและอาจมีข้อจำกัดเรื่องปริมาณข้อมูล
แต่ถ้าใช้ Filter Query ข้อมูลจะถูกกรองตั้งแต่ต้นทาง ลดภาระของโฟลว์ และทำให้รันได้เร็วขึ้น
โครงสร้างของ Filter Query
Filter Query ใช้ไวยากรณ์ OData (Open Data Protocol) ซึ่งเป็นมาตรฐานสำหรับ REST API
รูปแบบพื้นฐานคือ <ชื่อฟิลด์> <ตัวดำเนินการ> ‘<ค่า>’
ตัวอย่างตามนี้ Title <ชื่อฟิลด์> eq<ตัวดำเนินการ> ‘Project A’ ‘<ค่า>’
ซึ่งหมายความว่า ดึงข้อมูลที่มีค่าในฟิลด์ “Title” เท่ากับ “Project A” เท่านั้น
ตัวดำเนินการที่ใช้ได้ใน Filter Query
| ตัวดำเนินการ | ความหมาย | ตัวอย่าง |
|---|---|---|
eq | เท่ากับ (Equal) | Title eq 'Project A' |
ne | ไม่เท่ากับ (Not Equal) | Status ne 'Completed' |
gt | มากกว่า (Greater Than) | Amount gt 1000 |
ge | มากกว่าหรือเท่ากับ (Greater or Equal) | Price ge 500 |
lt | น้อยกว่า (Less Than) | Score lt 80 |
le | น้อยกว่าหรือเท่ากับ (Less or Equal) | Age le 18 |
startswith() | ขึ้นต้นด้วย | startswith(Title, 'Project') |
endswith() | ลงท้ายด้วย | endswith(Email, 'microsoft.com') |
contains() | มีค่านี้อยู่ในข้อความ | contains(Description, 'urgent') |
ตัวอย่าง เช่น
- หากต้องการดึงรายการจาก SharePoint ที่มีสถานะเป็น “Approved” รูปแบบการเขียนจะเป็น Status eq ‘Approved‘
- หากต้องการดึงลูกค้าที่อยู่ในประเทศไทย รูปแบบการเขียนจะเป็น address1_country eq ‘Thailand’
- หากต้องการดึงรายการที่มีชื่อลูกค้าเริ่มต้นด้วย “A” startswith(name, ‘A’)
- หากต้องการดึงพนักงานที่มีเงินเดือนมากกว่า 50,000 Salary gt 50000
กรณ๊การใช้ตัวกรองหลายเงื่อนไข (AND/OR)
1.ดึงรายการที่สถานะเป็น “Approved” และประเภทเป็น “Project” Status eq ‘Approved’ and Type eq ‘Project’
ดึงรายการที่มีประเภทเป็น “Project” หรือ “Task” Type eq ‘Project’ or Type eq ‘Task’
ข้อผิดพลาดที่พบบ่อย
❌ ใช้เครื่องหมายผิด
Title = ‘Project A’ ❌ (ผิด)
Title eq ‘Project A’ ✅ (ถูก)
❌ ใช้ฟิลด์ที่ไม่มีในแหล่งข้อมูล
หากฟิลด์ที่ใช้ใน Filter Query ไม่ตรงกับชื่อฟิลด์จริงในแหล่งข้อมูล จะเกิดข้อผิดพลาด
❌ ค่าข้อความต้องอยู่ในเครื่องหมายเดี่ยว (”)
Status eq “Approved” ❌ (ผิด)
Status eq ‘Approved’ ✅ (ถูก)
❌ ค่าตัวเลขห้ามใส่เครื่องหมาย ‘ ‘
Amount eq ‘1000’ ❌ (ผิด)
Amount eq 1000 ✅ (ถูก)
มาดูวิธีการทำกันครับ

Leave a comment