ฟังก์ชัน Sort และ SortByColumns
ใช้กับ: แอปพื้นที่ทำงาน โฟลว์เดสก์ท็อป แอปแบบจำลอง Power Platform CLI
เรียงลำดับ ตาราง
หมายเหตุ
คำสั่ง PAC CLI pac power-fx ไม่สนับสนุนฟังก์ชัน SortByColumns
Description
ฟังก์ชัน Sort เรียงลำดับตารางตามสูตร
สูตรจะถูกประเมินสำหรับแต่ละ เรกคอร์ด ของตาราง และผลลัพธ์จะถูกใช้เพื่อเรียงลำดับตาราง สูตรต้องมีผลลัพธ์เป็นค่าตัวเลข สตริง หรือ บูลีน ผลลัพธ์ไม่สามารถเป็นตารางหรือเรกคอร์ดได้
ฟิลด์ของเรกคอร์ดที่กำลังประมวลผลอยู่สามารถใช้งานได้ภายในสูตร ใช้ ตัวดำเนินการ ThisRecord หรือเพียงแค่อ้างอิงชื่อของฟิลด์เหมือนที่คุณทำกับค่าอื่น ตัวดำเนินการ Asยังสามารถใช้เพื่อตั้งชื่อเรกคอร์ดที่กำลังประมวลผล ซึ่งสามารถช่วยให้สูตรของคุณง่ายต่อการเข้าใจมากขึ้น และทำให้สามารถเข้าถึงเรกคอร์ดที่ซ้อนกันได้ สำหรับข้อมูลเพิ่มเติม ดูตัวอย่างด้านล่างและ การทำงานกับขอบเขตเรกคอร์ด
เพื่อเรียงลำดับแรกตามคอลัมน์ แล้วตามด้วยอีกหนึ่งคอลัมน์ คุณฝังสูตร Sort ภายในอีกสูตรหนึ่ง ตัวอย่างเช่น คุณสามารถใช้สูตรนี้เพื่อเรียงลำดับตาราง Contacts ตามคอลัมน์ LastName ก่อน แล้วตามด้วยคอลัมน์ FirstName: Sort( Sort( Contacts, LastName ), FirstName )
ฟังก์ชัน SortByColumns สามารถใช้เรียงลำดับตารางตามคอลัมน์หนึ่งหรือหลายคอลัมน์ได้ด้วย
รายการพารามิเตอร์สำหรับ SortByColumns เป็นชื่อของคอลัมน์ที่จะเรียงลำดับ และทิศทางการเรียงลำดับของแต่ละคอลัมน์ การเรียงลำดับจะดำเนินการตามลำดับของพารามิเตอร์ (เรียงลำดับเริ่มจากคอลัมน์แรก จากนั้นไปคอลัมน์ที่สอง และต่อไปเรื่อย ๆ) ชื่อคอลัมน์จะระบุเป็นสตริง จำเป็นต้องมีเครื่องหมายอัญประกาศคู่ ถ้าอยู่ในรายการของพารามิเตอร์โดยตรง ตัวอย่างเช่น SortByColumns( CustomerTable, "LastName" )
คุณสามารถรวม SortByColumns กับตัวควบคุม ดรอปดาวน์ หรือ กล่องรายการ เพื่อให้ผู้ใช้เลือกคอลัมน์เพื่อเรียงลำดับได้
นอกเหนือจากการเรียงลำดับจากน้อยไปมาก หรือมากไปหาน้อยแล้ว SortByColumns สามารถเรียงลำดับโดยยึดตามตารางคอลัมน์เดียวของค่าได้ ตัวอย่างเช่น คุณสามารถเรียงลำดับเรกคอร์ดตามชื่อวันของสัปดาห์ โดยการกำหนด [ "วันจันทร์", "วันอังคาร", "วันพุธ", "วันพฤหัสบดี", "วันศุกร์", "วันเสาร์", "วันอาทิตย์" ] เป็นลำดับการเรียง เรกคอร์ดทั้งหมดที่มีคำว่า วันจันทร์" จะมาเป็นอันดับแรก ตามด้วย วันอังคาร ฯลฯ เรกคอร์ดที่ไม่พบค่าในตารางการเรียงลำดับ จะถูกวางไว้ที่ส่วนท้ายของรายการ
ตาราง คือค่าใน Power Apps ซึ่งก็เหมือนกับสตริงหรือตัวเลข ซึ่งสามารถถูกส่งไปและส่งกลับจากฟังก์ชันได้ Sort และ SortByColumn จะไม่ปรับเปลี่ยนตาราง แต่จะใช้ตารางเป็นอาร์กิวเมนต์ และส่งกลับตารางใหม่ที่ถูกเรียงลำดับแล้ว ดูที่ การทำงานกับตาราง สำหรับรายละเอียดเพิ่มเติม
การมอบหมาย
เมื่อสามารถทำได้ Power Apps จะมอบสิทธิ์การดำเนินการกรองและเรียงลำดับให้กับแหล่งข้อมูลและหน้าผ่านทางผลลัพธ์ตามความต้องการ ตัวอย่างเช่น เมื่อคุณเริ่มต้นแอปที่แสดงการควบคุม แกลเลอรี ที่มีข้อมูล เฉพาะชุดเรกคอร์ดชุดแรกเท่านั้นที่จะมีการนำมายังอุปกรณ์ในตอนแรก เมื่อผู้ใช้เลื่อน จะมีการดึงข้อมูลเพิ่มเติมลงมาจากแหล่งข้อมูล เวลาในการเริ่มต้นของผลลัพธ์จะเร็วขึ้นสำหรับแอปและสามารถเข้าถึงชุดข้อมูลได้จำนวนมาก
อย่างไรก็ตาม การมอบสิทธิ์อาจไม่สามารถใช้งานได้ทุกครั้ง แหล่งข้อมูลจะแตกต่างกันไปตามฟังก์ชันและตัวดำเนินการที่รองรับการมอบสิทธิ์ หากการมอบสิทธิ์ทั้งหมดของสูตรไม่สามารถทำได้ สภาพแวดล้อมในการสร้างจะกำหนดค่าสถานะด้วยการเตือนให้กับส่วนที่ไม่สามารถมอบสิทธิ์ เมื่อสามารถทำได้ ให้ลองเปลี่ยนสูตรเพื่อหลีกเลี่ยงฟังก์ชันและตัวดำเนินการที่ไม่สามารถมอบสิทธิ์ รายการการมอบสิทธิ์ จะแสดงรายละเอียดของแหล่งข้อมูลและการดำเนินการที่สามารถมอบสิทธิ์
หากการมอบสิทธิ์ไม่สามารถทำได้ Power Apps จะดึงข้อมูลเฉพาะชุดเรกคอร์ดขนาดเล็กที่จะทำงานภายในเครื่องเท่านั้น ฟังก์ชันกรองและเรียงลำดับจะทำงานกับชุดเรกคอร์ดที่มีการลดจำนวนลง การดำเนินการที่สามารถใช้ได้ใน แกลเลอรี อาจไม่ใช่ทั้งหมด ซึ่งอาจทำให้เกิดความสับสนกับผู้ใช้
ดู ภาพรวมของการมอบสิทธิ์ สำหรับข้อมูลเพิ่มเติม
ไวยากรณ์
Sort( Table, Formula [, SortOrder ] )
- Table - จำเป็น ตารางที่จะเรียงลำดับ
- สูตร – จำเป็น สูตรนี้จะถูกประเมินสำหรับแต่ละเรกคอร์ดของตาราง และผลลัพธ์จะถูกใช้เพื่อเรียงลำดับตาราง คุณสามารถอ้างอิงคอลัมน์ภายในตารางได้
- SortOrder- เลือกได้ ระบุ SortOrder.Descending เมื่อต้องการเรียงลำดับตารางจากมากไปหาน้อย SortOrder.Ascending เป็นค่าเริ่มต้น
SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )
Table - จำเป็น ตารางที่จะเรียงลำดับ
ColumnName(s) - จำเป็น ชื่อคอลัมน์ที่จะเรียงลำดับ เป็นสตริง
SortOrder(s)- เลือกได้ SortOrder.Ascending หรือ SortOrder.Descending SortOrder.Ascending เป็นค่าเริ่มต้น ถ้าใส่หลาย ColumnNames คอลัมน์ทั้งหมดยกเว้นคอลัมน์สุดท้ายจะต้องใส่ SortOrder
หมายเหตุ
สำหรับแหล่งข้อมูล SharePoint และ Excel ที่ประกอบด้วยชื่อคอลัมน์ที่มีช่องว่าง ให้ระบุแต่ละช่องว่างเป็น "_x0020_" ตัวอย่างเช่น ระบุ "Column Name" เป็น "Column_x0020_Name"
SortByColumns( Table, ColumnName, SortOrderTable )
Table - จำเป็น ตารางที่จะเรียงลำดับ
ColumnName - จำเป็น ชื่อคอลัมน์ที่จะเรียงลำดับ เป็นสตริง
SortOrderTable - จำเป็น ตารางคอลัมน์เดียวของค่าที่จะเรียงลำดับตาม
หมายเหตุ
สำหรับแหล่งข้อมูล SharePoint และ Excel ที่ประกอบด้วยชื่อคอลัมน์ที่มีช่องว่าง ให้ระบุแต่ละช่องว่างเป็น "_x0020_" ตัวอย่างเช่น ระบุ "Column Name" เป็น "Column_x0020_Name"
ตัวอย่าง
สำหรับตัวอย่างต่อไปนี้ เราจะใช้ data แหล่งข้อมูลIceCream ซึ่งประกอบด้วยข้อมูลในตารางนี้:
สูตร | รายละเอียด | ผลลัพธ์ |
---|---|---|
Sort( IceCream, Flavor ) SortByColumns( IceCream, "Flavor" ) |
เรียงลำดับ IceCream ตามคอลัมน์ Flavor คอลัมน์ Flavor ประกอบด้วยสตริง ดังนั้นตารางจะถูกเรียงลำดับตามตัวอักษร โดยค่าเริ่มต้น ลำดับการจัดเรียงจะเรียงจากน้อยไปมาก | |
Sort( IceCream, Quantity ) SortByColumns( IceCream, "Quantity" ) |
จัดเรียง IceCream ตามคอลัมน์ Quantity คอลัมน์ Quantity ประกอบด้วยตัวเลข ดังนั้นตารางจะถูกเรียงลำดับตามตัวเลข โดยค่าเริ่มต้น ลำดับการจัดเรียงจะเรียงจากน้อยไปมาก | |
Sort( IceCream, Quantity, SortOrder.Descending ) SortByColumns( IceCream, "Quantity", SortOrder.Descending ) |
จัดเรียง IceCream ตามคอลัมน์ Quantity คอลัมน์ Quantity ประกอบด้วยตัวเลข ดังนั้นจะเรียงลำดับตามตัวเลข การเรียงลำดับมีการระบุจากมากไปหาน้อย | |
Sort( IceCream, Quantity + OnOrder ) | เรียงลำดับ IceCream ตามผลรวมของคอลัมน์ Quantity และ OnOrder สำหรับแต่ละเรกคอร์ด ผลรวมเป็นตัวเลข ดังนั้นตารางจะถูกเรียงลำดับตามตัวเลข โดยค่าเริ่มต้น ลำดับการจัดเรียงจะเรียงจากน้อยไปมาก เนื่องจากเรากำลังเรียงลำดับตามสูตร และไม่เรียงตามค่าดิบของคอลัมน์ จึงไม่มีวิธีใช้ SortByColumns ที่เทียบเท่ากัน | |
Sort( Sort( IceCream, OnOrder ), Quantity ) SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending ) |
เรียงลำดับ IceCream ตามคอลัมน์ OnOrder ก่อน แล้วตามด้วยคอลัมน์ Quantity สังเกตว่า "Pistachio" อยู่ก่อน "Vanilla" ในการเรียงลำดับตาม OnOrder จากนั้นค่อยย้ายไปตำแหน่งที่เหมาะสมพร้อมกันตามค่า Quantity | |
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) | เรียงลำดับ IceCream ตามคอลัมน์ Flavor โดยยึดตามตารางคอลัมน์เดียวที่ประกอบด้วย "Pistachio" และ "Strawberry" เรกคอร์ดที่มี Flavor เป็น "Pistachio" จะปรากฏขึ้นก่อนในผลลัพธ์ ตามด้วยเรกคอร์ดที่เป็น "Strawberry" สำหรับค่าในคอลัมน์ Flavor ที่ไม่ตรงกับที่ระบุ เช่น "Vanilla" จะปรากฏขึ้นหลังจากรายการที่พบ |
ทีละขั้นตอน
เพื่อลองเรียกใช้ตัวอย่างเหล่านี้ด้วยตนเอง สร้างแหล่งข้อมูล IceCream เป็น คอลเลกชัน:
- เพิ่มปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
ClearCollect( IceCream, { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 10 } ) - แสดงตัวอย่างแอป เลือกปุ่ม และจากนั้น กด Esc เพื่อกลับไปยังพื้นที่ทำงานเริ่มต้น
- เลือก คอลเลกชัน บนเมนู ไฟล์ เพื่อแสดงคอลเลกชันที่คุณเพิ่งสร้าง จากนั้นกด Esc เพื่อกลับไปยังพื้นที่ทำงานเริ่มต้น
Sort
เพิ่มอีกปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรดังนี้:
ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )สูตรก่อนหน้านี้สร้างคอลเลกชันที่สอง ชื่อ SortByFlavor ที่ประกอบด้วยข้อมูลเดียวกับ Ice Cream แต่คอลเลกชันใหม่ประกอบด้วยข้อมูลที่เรียงลำดับตามตัวอักษร ตามคอลัมน์ Flavor จากน้อยไปหามาก
กด F5 เลือกปุ่มใหม่ จากนั้นกด Esc
เลือก คอลเลกชัน บนเมนู ไฟล์ เพื่อแสดงทั้งสองคอลเลกชัน จากนั้นกด Esc เพื่อกลับไปยังพื้นที่ทำงานเริ่มต้น
ทำซ้ำสามขั้นตอนสุดท้าย แต่เปลี่ยนชื่อของคอลเลกชันที่คุณต้องการสร้าง และแทนที่สูตร Sort ด้วยสูตรอื่นจากตารางตัวอย่าง ที่อยู่ก่อนหน้าในส่วนนี้ที่ใช้ Sort
SortByColumns
เพิ่มอีกปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรดังนี้:
ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )สูตรข้างบนสร้างคอลเลกชันที่สาม ชื่อ SortByQuantity ที่ประกอบด้วยข้อมูลเดียวกับ Ice Cream แต่คอลเลกชันใหม่ประกอบด้วยข้อมูลเรียงที่ลำดับตามตัวเลขในคอลัมน์ Quantity จากน้อยไปหามาก แล้วตามด้วยคอลัมน์ Flavor จากมากไปหาน้อย
กด F5 เลือกปุ่มใหม่ จากนั้นกด Esc
เลือก คอลเลกชัน บนเมนู ไฟล์ เพื่อแสดงทั้งสามคอลเลกชัน จากนั้น กด Esc เพื่อกลับไปยังพื้นที่ทำงานเริ่มต้น
ทำซ้ำขั้นสามตอนสุดท้าย แต่เปลี่ยนชื่อของคอลเลกชันที่คุณต้องการสร้าง และแทนที่สูตร SortByColumns ด้วยสูตรอื่นจากตารางตัวอย่าง ที่อยู่ก่อนหน้าในส่วนนี้ที่ใช้ SortByColumns