ฟังก์ชัน 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 เรียงด้วย Pistachio ก่อน Vanilla
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) เรียงลำดับ IceCream ตามคอลัมน์ Flavor โดยยึดตามตารางคอลัมน์เดียวที่ประกอบด้วย "Pistachio" และ "Strawberry" เรกคอร์ดที่มี Flavor เป็น "Pistachio" จะปรากฏขึ้นก่อนในผลลัพธ์ ตามด้วยเรกคอร์ดที่เป็น "Strawberry" สำหรับค่าในคอลัมน์ Flavor ที่ไม่ตรงกับที่ระบุ เช่น "Vanilla" จะปรากฏขึ้นหลังจากรายการที่พบ เรียงด้วย Pistachio ก่อน Strawberry

ทีละขั้นตอน

เพื่อลองเรียกใช้ตัวอย่างเหล่านี้ด้วยตนเอง สร้างแหล่งข้อมูล IceCream เป็น คอลเลกชัน:

  1. เพิ่มปุ่ม และตั้งค่าคุณสมบัติ 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 } )
  2. แสดงตัวอย่างแอป เลือกปุ่ม และจากนั้น กด Esc เพื่อกลับไปยังพื้นที่ทำงานเริ่มต้น
  3. เลือก คอลเลกชัน บนเมนู ไฟล์ เพื่อแสดงคอลเลกชันที่คุณเพิ่งสร้าง จากนั้นกด Esc เพื่อกลับไปยังพื้นที่ทำงานเริ่มต้น

Sort

  1. เพิ่มอีกปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรดังนี้:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    สูตรก่อนหน้านี้สร้างคอลเลกชันที่สอง ชื่อ SortByFlavor ที่ประกอบด้วยข้อมูลเดียวกับ Ice Cream แต่คอลเลกชันใหม่ประกอบด้วยข้อมูลที่เรียงลำดับตามตัวอักษร ตามคอลัมน์ Flavor จากน้อยไปหามาก

  2. กด F5 เลือกปุ่มใหม่ จากนั้นกด Esc

  3. เลือก คอลเลกชัน บนเมนู ไฟล์ เพื่อแสดงทั้งสองคอลเลกชัน จากนั้นกด Esc เพื่อกลับไปยังพื้นที่ทำงานเริ่มต้น

  4. ทำซ้ำสามขั้นตอนสุดท้าย แต่เปลี่ยนชื่อของคอลเลกชันที่คุณต้องการสร้าง และแทนที่สูตร Sort ด้วยสูตรอื่นจากตารางตัวอย่าง ที่อยู่ก่อนหน้าในส่วนนี้ที่ใช้ Sort

SortByColumns

  1. เพิ่มอีกปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรดังนี้:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )

    สูตรข้างบนสร้างคอลเลกชันที่สาม ชื่อ SortByQuantity ที่ประกอบด้วยข้อมูลเดียวกับ Ice Cream แต่คอลเลกชันใหม่ประกอบด้วยข้อมูลเรียงที่ลำดับตามตัวเลขในคอลัมน์ Quantity จากน้อยไปหามาก แล้วตามด้วยคอลัมน์ Flavor จากมากไปหาน้อย

  2. กด F5 เลือกปุ่มใหม่ จากนั้นกด Esc

  3. เลือก คอลเลกชัน บนเมนู ไฟล์ เพื่อแสดงทั้งสามคอลเลกชัน จากนั้น กด Esc เพื่อกลับไปยังพื้นที่ทำงานเริ่มต้น

  4. ทำซ้ำขั้นสามตอนสุดท้าย แต่เปลี่ยนชื่อของคอลเลกชันที่คุณต้องการสร้าง และแทนที่สูตร SortByColumns ด้วยสูตรอื่นจากตารางตัวอย่าง ที่อยู่ก่อนหน้าในส่วนนี้ที่ใช้ SortByColumns