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