ฟังก์ชัน Filter,Search และ LookUp

ใช้กับ: แอปพื้นที่ทำงาน โฟลว์เดสก์ท็อป แอปแบบจำลอง Power Platform CLI

ค้นหาอย่างน้อยหนึ่ง เรกคอร์ด ใน ตาราง

ดูวิดีโอนี้เพื่อเรียนรู้วิธีใช้ฟังก์ชัน Filter, **Search และ LookUp

หมายเหตุ

คำสั่ง PAC CLI pac power-fx ไม่สนับสนุนฟังก์ชัน Search

Description

ฟังก์ชัน Filter ค้นหาเรกคอร์โในตาราง ที่เป็นไปตามสูตร ใช้ Filter เพื่อค้นหาชุดของเรกคอร์ดที่ตรงกับเกณฑ์อย่างน้อยหนึ่งเกณฑ์ และละทิ้งเรกคอร์ดที่ไม่ตรงกัน

ฟังก์ชัน LookUp ค้นหาเรกคอร์ดแรกในตาราง ที่เป็นไปตามสูตร ใช้ LookUp เพื่อค้นหาเรกคอร์ดเดียว ที่ตรงกับเกณฑ์อย่างน้อยหนึ่งเกณฑ์

สำหรับทั้งสองฟังก์ชัน สูตรจะถูกคำนวณสำหรับแต่ละเรกคอร์ดของตาราง เรกคอร์ดที่ส่งผล จริง จะรวมอยู่ในผลลัพธ์ นอกเหนือจาก ตัวดำเนินการ ของสูตรปกติ คุณสามารถใช้ตัวดำเนินการ in และ exactin สำหรับสตริงย่อยที่ตรงกันได้

ฟิลด์ของเรกคอร์ดที่กำลังประมวลผลอยู่สามารถใช้งานได้ภายในสูตร ใช้ ตัวดำเนินการ ThisRecord หรือเพียงแค่อ้างอิงชื่อของฟิลด์เหมือนที่คุณทำกับค่าอื่น ตัวดำเนินการ Asยังสามารถใช้เพื่อตั้งชื่อเรกคอร์ดที่กำลังประมวลผล ซึ่งสามารถช่วยให้สูตรของคุณง่ายต่อการเข้าใจมากขึ้น และทำให้สามารถเข้าถึงเรกคอร์ดที่ซ้อนกันได้ สำหรับข้อมูลเพิ่มเติม ดูตัวอย่างด้านล่างและ การทำงานกับขอบเขตเรกคอร์ด

ฟังก์ชัน Search ค้นหาเรกคอร์ดในตาราง ที่มีสตริงในคอลัมน์ สตริงอาจอยู่ที่ใดก็ได้ในคอลัมน์ ตัวอย่างเช่น การค้นหา "rob" หรือ "bert" จะค้นหารายการที่ตรงกันในคอลัมน์ที่มี "Robert" การค้นหาต้องตรงตามตัวพิมพ์ใหญ่-เล็ก ต่างกับ Filter และ LookUp ฟังก์ชัน Search ใช้สตริงเดียวเพื่อค้นหารายการที่ตรงกัน แทนที่จะใช้สูตร

Filter และ Search ส่งกลับตารางที่มีคอลัมน์เดียวกันกับตารางและเรกคอร์ดดั้งเดิมที่ตรงกับเกณฑ์ LookUp ส่งกลับเรกคอร์ดแรกที่พบหลังจากนำสูตรไปใช้เพื่อลดเรกคอร์ดให้เหลือค่าเดียวแล้ว เท่านั้น ถ้าไม่พบเรกคอร์ด Filter และ Search จะส่งกลับตาราง ว่างเปล่า และ LookUp จะส่งกลับ ค่าว่าง

ตาราง คือค่าใน Power Apps ซึ่งก็เหมือนกับสตริงหรือตัวเลข ซึ่งสามารถถูกส่งไปและส่งกลับจากฟังก์ชันได้ Filter, Search และ LookUp จะไม่ปรับเปลี่ยนตาราง แต่ฟังก์ชันเหล่านี้จะมองตารางเป็นอาร์กิวเมนต์ และส่งกลับตาราง เรกคอร์ด หรือค่าเดียวจากตาราง ดูที่ การทำงานกับตาราง สำหรับรายละเอียดเพิ่มเติม

การมอบหมาย

เมื่อสามารถทำได้ Power Apps จะมอบสิทธิ์การดำเนินการกรองและเรียงลำดับให้กับแหล่งข้อมูลและหน้าผ่านทางผลลัพธ์ตามความต้องการ ตัวอย่างเช่น เมื่อคุณเริ่มต้นแอปที่แสดงการควบคุม แกลเลอรี ที่มีข้อมูล เฉพาะชุดเรกคอร์ดชุดแรกเท่านั้นที่จะมีการนำมายังอุปกรณ์ในตอนแรก เมื่อผู้ใช้เลื่อน จะมีการดึงข้อมูลเพิ่มเติมลงมาจากแหล่งข้อมูล เวลาในการเริ่มต้นของผลลัพธ์จะเร็วขึ้นสำหรับแอปและสามารถเข้าถึงชุดข้อมูลได้จำนวนมาก

อย่างไรก็ตาม การมอบสิทธิ์อาจไม่สามารถใช้งานได้ทุกครั้ง แหล่งข้อมูลจะแตกต่างกันไปตามฟังก์ชันและตัวดำเนินการที่รองรับการมอบสิทธิ์ หากการมอบสิทธิ์ทั้งหมดของสูตรไม่สามารถทำได้ สภาพแวดล้อมในการสร้างจะกำหนดค่าสถานะด้วยการเตือนให้กับส่วนที่ไม่สามารถมอบสิทธิ์ เมื่อสามารถทำได้ ให้ลองเปลี่ยนสูตรเพื่อหลีกเลี่ยงฟังก์ชันและตัวดำเนินการที่ไม่สามารถมอบสิทธิ์ รายการการมอบสิทธิ์ จะแสดงรายละเอียดของแหล่งข้อมูลและการดำเนินการที่สามารถมอบสิทธิ์

หากการมอบสิทธิ์ไม่สามารถทำได้ Power Apps จะดึงข้อมูลเฉพาะชุดเรกคอร์ดขนาดเล็กที่จะทำงานภายในเครื่องเท่านั้น ฟังก์ชันกรองและเรียงลำดับจะทำงานกับชุดเรกคอร์ดที่มีการลดจำนวนลง การดำเนินการที่สามารถใช้ได้ใน แกลเลอรี อาจไม่ใช่ทั้งหมด ซึ่งอาจทำให้เกิดความสับสนกับผู้ใช้

ดู ภาพรวมของการมอบสิทธิ์ สำหรับข้อมูลเพิ่มเติม

ไวยากรณ์

Filter(Table*, Formula1 [, *Formula2*, ... ] )

  • Table - จำเป็น ตารางสำหรับค้นหา
  • Formula(s) - จำเป็นต้องมี สูตรที่คำนวณแต่ละเรกคอร์ดของตาราง ฟังก์ชันจะส่งกลับเรกคอร์ดทั้งหมดที่ส่งผล จริง คุณสามารถอ้างอิงคอลัมน์ภายในตารางได้ ถ้าคุณใส่สูตรมากกว่าหนึ่งสูตร ผลลัพธ์ของสูตรทั้งหมดจะถูกรวมด้วยฟังก์ชัน And

Search(Table*, SearchString, Column1 [, *Column2*, ... ] )

  • Table - จำเป็น ตารางสำหรับค้นหา
  • SearchString - จำเป็นต้องมี สตริงสำหรับค้นหา ถ้าเป็น ค่าว่าง หรือสตริงว่าง เรกคอร์ดทั้งหมดจะถูกส่งกลับ
  • Column(s) - จำเป็นต้องมี ชื่อของคอลัมน์ภายใน ตาราง สำหรับค้นหา ถ้าพบ SearchString ภายในข้อมูลของคอลัมน์ใดก็ตามเป็นรายการที่ตรงกันบางส่วน เรกคอร์ดทั้งหมดจะถูกส่งกลับ

หมายเหตุ

ใน Power Apps ก่อนเวอร์ชัน 3.24042 ชื่อคอลัมน์สำหรับฟังก์ชัน Search ถูกระบุด้วยสตริงข้อความโดยใช้เครื่องหมายคำพูดคู่ และหากเชื่อมต่อกับแหล่งข้อมูล ชื่อคอลัมน์ก็จะต้องเป็นชื่อเชิงตรรกะด้วย ตัวอย่างเช่น ชื่อตรรกะ "cr43e_name" ที่มีเครื่องหมายคำพูดคู่ถูกนำมาใช้แทนชื่อที่แสดง ชื่อ ที่ไม่มีเครื่องหมายคำพูด สำหรับแหล่งข้อมูล SharePoint และ Excel ที่มีชื่อคอลัมน์ที่มีการเว้นวรรค แต่ละช่องว่างจะถูกระบุด้วย "_x0020_" เช่น "ชื่อคอลัมน์" เป็น "Column_x0020_Name" หลังจากเวอร์ชันนี้ แอปทั้งหมดได้รับการอัปเดตโดยอัตโนมัติเป็นไวยากรณ์ใหม่ที่อธิบายไว้ในบทความนี้

LookUp(Table*, Formula [, *ReductionFormula* ] )

  • Table - จำเป็น ตารางสำหรับค้นหา ใน UI จะแสดงไวยากรณ์เป็น แหล่ง เหนือกล่องฟังก์ชัน
  • สูตร – จำเป็น สูตรที่คำนวณแต่ละเรกคอร์ดของตาราง ฟังก์ชันจะส่งกลับเรกคอร์ดแรกที่ส่งผล จริง คุณสามารถอ้างอิงคอลัมน์ภายในตารางได้ ใน UI จะแสดงไวยากรณ์เป็น เงื่อนไข เหนือกล่องฟังก์ชัน
  • ReductionFormula - ไม่จำเป็น สูตรนี้จะคำนวณกับเรกคอร์ดที่พบ จากนั้นลดเรกคอร์ดจนเหลือค่าเดียว คุณสามารถอ้างอิงคอลัมน์ภายในตารางได้ ถ้าคุณไม่ใช้พารามิเตอร์นี้ ฟังก์ชันจะส่งกลับเรกคอร์ดทั้งหมดจากตาราง ใน UI จะแสดงไวยากรณ์เป็น ผลลัพธ์ เหนือกล่องฟังก์ชัน

ตัวอย่าง

ตัวอย่างต่อไปนี้ ใช้ IceCreamแหล่งข้อมูล:

แหล่งข้อมูลไอศครีม

สูตร รายละเอียด Result
Filter( IceCream, OnOrder > 0 ) ส่งกลับเรกคอร์ดที่ OnOrder มีค่ามากกว่าศูนย์ ลำดับใช้ตัวกรอง
Filter( IceCream, Quantity + OnOrder > 225 ) ส่งกลับเรกคอร์ดที่ผลรวมของคอลัมน์ ปริมาณ และ OnOrder มีค่ามากกว่า 225 ปริมาณและลำดับตัวกรอง
Filter( IceCream, "chocolate" in Lower( Flavor ) ) ส่งกลับเรกคอร์ดที่มีคำว่า "chocolate" ปรากฏอยู่ในชื่อ Flavor โดยไม่ขึ้นอยู่กับตัวพิมพ์ใหญ่หรือเล็ก ตัวกรองด้านล่าง
Filter(IceCream, Quantity < 10 && OnOrder < 20) ส่งกลับเรกคอร์ดที่ ปริมาณ มีค่าน้อยกว่า 10 และ OnOrder มีค่าน้อยกว่า 20 ไม่มีเ่รกคอร์ดที่ตรงกับเกณฑ์เหล่านี้ จึงส่งกลับเป็นตารางเปล่า ปริมาณที่ใช้ตัวกรอง
Search(IceCream, "choc", Flavor) ส่งกลับเรกคอร์ดที่มีสตริง "choc" ปรากฏอยู่ในชื่อ Flavor โดยไม่ขึ้นอยู่กับตัวพิมพ์ใหญ่หรือเล็ก ค้นหารายการ
Search(IceCream, "", Flavor) เนื่องจากคำที่ใช้ค้นหาเป็นค่าว่าง จึงส่งกลับเรกคอร์ดทั้งหมด ค้นหารายการทั้งหมด
LookUp( IceCream, Flavor = "Chocolate", Quantity ) ค้นหาเรกคอร์ดมี Flavor เท่ากับ "Chocolate" ซึ่งมีเพียงรายการเดียว สำหรับเรกคอร์ดแรกที่พบ ส่งกลับ ปริมาณ ของเรกคอร์ดนั้น 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) ค้นหาเรกคอร์ดที่มี ปริมาณ มากกว่า 150 ซึ่งมีหลายรายการ สำหรับเรกคอร์ดแรกที่พบ ซึ่งก็คือ Flavor "Vanilla" ส่งกลับผลรวมของคอลัมน์ ปริมาณ และ OnOrder 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) ค้นหาเรกคอร์ดที่มี Flavor เท่ากับ "Pistachio" ซึ่งไม่มีอยู่เลย เนื่องจากไม่พบอะไร LookUp จึงส่งกลับ ค่าว่าง ว่างเปล่า
LookUp( IceCream, Flavor = "Vanilla" ) ค้นหาเรกคอร์ดที่มี Flavor เท่ากับ "Vanilla" ซึ่งมีเพียงรายการเดียว เนื่องจากไม่มีสูตรการลด จึงส่งกลับทั้งเรกคอร์ด { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

การกรองด้วยคอลัมน์ตัวเลือก

ตัวอย่างต่อไปนี้ใช้ตาราง บัญชีผู้ใช้ ใน Microsoft Dataverse เป็นแหล่งข้อมูล ตัวอย่างนี้แสดงวิธีการ Filter รายการของบัญชีผู้ใช้ตามค่าควบคุม Combo box ที่เลือก:

ทีละขั้นตอน

  1. เปิดแอปเปล่า

  2. เพิ่มหน้าจอใหม่โดยเลือกตัวเลือก หน้าจอใหม่

  3. บนแท็บ แทรก เลือก แกลเลอรี แล้วเลือก แนวตั้ง

  4. บนแท็บ คุณสมบัติ ของบานหน้าต่างด้านขวา เปิด แหล่งข้อมูล จากนั้นเลือก บัญชีผู้ใช้

  5. (ไม่บังคับ) ในรายการ เค้าโครง เลือกตัวเลือกต่างๆ

  6. บนแท็บ แทรก เลือก ข้อมูลป้อนเข้า แล้วเลือก กล่องคำสั่งผสม ทำซ้ำขั้นตอนเพื่อเพิ่มตัวควบคุมกล่องคำสั่งผสมอีกสองตัว

  7. สำหรับแต่ละตัวควบคุมกล่องคำสั่งผสม บนแท็บ คุณสมบัติ ของบานหน้าต่างด้านขวา เปิด แหล่งข้อมูล จากนั้นเลือก บัญชีผู้ใช้ เลือก แก้ไข ถัดจากตัวเลือก ฟิลด์ จากนั้นเลือกค่า ข้อความหลัก และ SearchField ข้อความหลัก ควรเป็นคอลัมน์ตัวเลือกที่คุณต้องการเพิ่มลงในกล่องคำสั่งผสม ทำซ้ำขั้นตอนเพื่อเพิ่มตัวควบคุมกล่องคำสั่งผสมอื่นอีกสองตัว

    การตั้งค่ากล่องคำสั่งผสม

  8. คอนนี้เลือกตัวควบคุม แกลเลอรี และตั้งค่าคุณสมบัติ Items เป็นสูตรดังนี้:

    Filter(Accounts,
     'Industry' = ComboBox3.Selected.Industry Or IsBlank(ComboBox3.Selected.Industry),
     'Relationship Type' = ComboBox2.Selected.'Relationship Type' Or
       IsBlank(ComboBox2.Selected.'Relationship Type'),
     'Preferred Method of Contact' = ComboBox1.Selected.'Preferred Method of Contact' Or
       IsBlank(ComboBox1.Selected.'Preferred Method of Contact'))
    

    แหล่งข้อมูลลูกค้าองค์กร

ประสบการณ์ของผู้ใช้การค้นหา

ตัวอย่างต่อไปนี้ ใช้ IceCreamแหล่งข้อมูล:

ในหลายแอป คุณสามารถพิมพ์อักขระอย่างน้อยหนึ่งตัวลงในกล่องค้นหาเพื่อกรองรายการของเรกคอร์ดในชุดข้อมูลขนาดใหญ่ ขณะที่คุณพิมพ์ รายการจะแสดงเฉพาะเรกคอร์ดที่ตรงกับเกณฑ์การค้นหาเท่านั้น

ตัวอย่างในส่วนที่เหลือของบทความนี้แสดงผลลัพธ์ของการค้นหารายการ ซึ่งมีชื่อว่า ลูกค้า ที่ประกอบด้วยข้อมูลนี้:

ค้นหาลูกค้า

เมื่อต้องการสร้างแหล่งข้อมูลนี้เป็นคอลเลกชัน ให้สร้างตัวควบคุม ปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรดังนี้:

ClearCollect(Customers, Table({ Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" }) )

เช่นเดียวกับตัวอย่างนี้ คุณสามารถแสดงรายการของเรกคอร์ดใน ตัวควบคุมแกลเลอรี ที่ด้านล่างของหน้าจอได้ ใกล้กับด้านบนของหน้าจอ คุณสามารถเพิ่มตัวควบคุม การป้อนข้อความ ที่ชื่อ SearchInput เพื่อให้ผู้ใช้สามารถระบุเรกคอร์ดที่สนใจได้

ค้นหาโดยใช้การป้อนข้อมูลการค้นหา

เมื่อผู้ใช้พิมพ์อักขระใน SearchInput ผลลัพธ์ในแกลเลอรีจะถูกกรองโดยอัตโนมัติ ในกรณีนี้ มีการกำหนดค่าแกลเลอรีให้แสดงเรกคอร์โที่ชื่อของลูกค้า (ไม่ใช่ชื่อของบริษัท) เริ่มต้นด้วยลำดับของอักขระใน SearchInput ถ้าผู้ใช้พิมพ์ co ในกล่องค้นหา แกลเลอรีจะแสดงผลลัพธ์เหล่านี้:

ค้นหาด้วยเริ่มต้นด้วย

เมื่อต้องการกรองโดยยึดตามคอลัมน์ ชื่อ ให้ตั้งค่าคุณสมบัติ Items ของตัวควบคุมแกลเลอรีเป็นหนึ่งในสูตรเหล่านี้:

สูตร คำอธิบาย ผลลัพธ์
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) กรองแหล่งข้อมูล ลูกค้า สำหรับเรกคอร์ดที่สตริงการค้นหาปรากฏขึ้นที่จุดเริ่มต้นของคอลัมน์ ชื่อ การทดสอบไม่ต้องตรงตามตัวอักษรพิมพ์ใหญ่-เล็ก ถ้าผู้ใช้พิมพ์ co ในกล่องค้นหา แกลเลอรีจะแสดง Colleen Jones และ Cole Miller แกลเลอรีจะไม่แสดง Mike Collins เนื่องจากคอลัมน์ Name ของเรกคอร์ดนั้นไม่ได้เริ่มต้นด้วยสตริงการค้นหา กรองด้วยเริ่มต้นด้วย
Filter( Customers, SearchInput.Text in Name ) กรองแหล่งข้อมูล ลูกค้า สำหรับเรกคอร์ดที่สตริงการค้นหาปรากฏที่ใดก็ได้ในคอลัมน์ ชื่อ การทดสอบไม่ต้องตรงตามตัวอักษรพิมพ์ใหญ่-เล็ก ถ้าผู้ใช้พิมพ์ co ในกล่องค้นหา แกลเลอรีจะแสดง Colleen Jones,Cole Miller, และ Mike Collins เนื่องจากการค้นหา สตริงที่ปรากฏอยู่ที่ใดที่หนึ่งในคอลัมน์ ชื่อ ของเรกคอร์ดทั้งหมดเหล่านั้น กรองด้วยการป้อนข้อมูลการค้นหา
Search(Customers, SearchInput.Text, Name) คล้ายกับการใช้ตัวดำเนินการ in ฟังก์ชัน Search ค้นหารายการตรงกันจากทุกที่ภายในคอลัมน์ ชื่อ ของแต่ละเรกคอร์ด คุณต้องใส่ชื่อคอลัมน์ในเครื่องหมายอัญประกาศ ค้นหาลูกค้า

คุณสามารถขยายการค้นหาของคุณให้รวมถึงคอลัมน์ Company และคอลัมน์ Name ได้:

สูตร รายละเอียด ผลลัพธ์
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) กรองแหล่งข้อมูล ลูกค้า สำหรับเรกคอร์ดที่คอลัมน์ ชื่อ หรือ บริษัท เริ่มต้นด้วยสตริงการค้นหา (ตัวอย่างเช่น co) || ตัวดำเนินการ เป็น จริง ถ้าฟังก์ชัน StartsWith ใดก็ตามเป็น จริง กรองลูกค้าเริ่มต้นด้วย
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) กรองแหล่งข้อมูล ลูกค้า สำหรับเรกคอร์ดที่คอลัมน์ ชื่อ หรือ บริษัท มีสตริงการค้นหา (ตัวอย่างเช่น co) ที่ใดก็ได้ภายในนั้น กรองการป้อนข้อมูลการค้นหาของลูกค้า
Search(Customers, SearchInput.Text, Name, Company) คล้ายกับการใช้ตัวดำเนินการ in ฟังก์ชัน Search ค้นหาแหล่งข้อมูล ลูกค้า สำหรับเรกคอร์ดที่คอลัมน์ ชื่อ หรือ บริษัท มีสตริงการค้นหา (ตัวอย่างเช่น co) ที่ใดก็ได้ภายในนั้น ฟังก์ชัน Search จะง่ายต่อการอ่านและเขียนกว่า Filter ถ้าคุณต้องการระบุหลายคอลัมน์และหลายตัวดำเนินการ in ค้นหาลูกค้าด้วยการป้อนข้อมูลการค้นหา