ฟังก์ชัน GroupBy และ Ungroup
ใช้กับ: แอป Canvas แอปที่ขับเคลื่อนด้วยโมเดล Power Pages
จัดกลุ่ม และยกเลิกการจัดกลุ่ม เรกคอร์ด ของ ตาราง
Description
ฟังก์ชัน GroupBy ส่งกลับตารางที่เรกคอร์ดที่ถูกจัดกลุ่มเข้าด้วยกัน ตามค่าในหนึ่งหรือหลาย คอลัมน์ เรกคอร์ดในกลุ่มเดียวกันจะถูกวางลงในเรกคอร์ดเดียว และมีคอลัมน์เพิ่มเข้ามาเพื่อเก็บตารางที่ซ้อนอยู่ข้างในของคอลัมน์ที่เหลือ
ฟังก์ชัน Ungroup จะย้อนกลับกระบวนการ GroupBy ฟังก์ชันนี้ส่งกลับตาราง ที่แยกออกเป็นเรกคอร์ดต่างหาก สำหรับเรกคอร์ดใดๆ ที่ถูกจัดกลุ่มเข้าด้วยกัน
คุณสามารถจัดกลุ่มเรกคอร์ด โดยใช้ GroupBy ปรับเปลี่ยนตารางที่ส่งกลับ แล้วยกเลิกจัดกลุ่มเรกคอร์ดในตารางถูกปรับเปลี่ยนแล้ว โดยใช้ Ungroup ได้ ตัวอย่างเช่น คุณสามารถเอากลุ่มของเรกคอร์ดออก โดยทำตามวิธีการนี้:
- ใช้ฟังก์ชัน GroupBy
- ใช้ฟังก์ชัน Filter เพื่อเอาทั้งกลุ่มของเรกคอร์ดออก
- ใช้ฟังก์ชัน Ungroup
คุณยังสามารถรวมผลลัพธ์ตามการจัดกลุ่ม:
- ใช้ฟังก์ชัน GroupBy
- ใช้ฟังก์ชัน AddColumns กับ Sum Average และฟังก์ชันการรวมอื่นๆ เพื่อเพิ่มคอลัมน์ใหม่ ซึ่งเป็นการรวมตารางกลุ่ม
- ใช้ฟังก์ชัน DropColumns เพื่อทิ้งตารางกลุ่ม
Ungroup พยายามรักษาลำดับเดิมของระเบียนที่ป้อนไปยัง GroupBy ซึ่งไม่อาจทำได้เสมอไป (ตัวอย่างเช่น ถ้าตารางต้นฉบับมีเรกคอร์ด ว่างเปล่า)
ตารางคือค่าใน Power Apps ซึ่งก็เหมือนกับสตริงหรือตัวเลข คุณสามารถระบุตารางเป็นอาร์กิวเมนต์สำหรับฟังก์ชัน และฟังก์ชันสามารถส่งกลับตารางเป็นผลลัพธ์ GroupBy และ Ungroup จะไม่แก้ไขตาราง แต่จะรับตารางเป็นอาร์กิวเมนต์และส่งคืนตารางอื่นแทน ดูที่ การทำงานกับตาราง สำหรับรายละเอียดเพิ่มเติม
หมายเหตุ
ใน Power Apps ก่อนเวอร์ชัน 3.24042 ชื่อคอลัมน์ถูกระบุด้วยสตริงข้อความโดยใช้เครื่องหมายคำพูดคู่ และหากเชื่อมต่อกับแหล่งข้อมูล ชื่อคอลัมน์ก็จะต้องเป็นชื่อเชิงตรรกะด้วย ตัวอย่างเช่น ชื่อตรรกะ "cr43e_name" ที่มีเครื่องหมายคำพูดคู่ถูกนำมาใช้แทนชื่อที่แสดง ชื่อ ที่ไม่มีเครื่องหมายคำพูด สำหรับแหล่งข้อมูล SharePoint และ Excel ที่มีชื่อคอลัมน์ที่มีการเว้นวรรค แต่ละช่องว่างจะถูกระบุด้วย "_x0020_" เช่น "ชื่อคอลัมน์" เป็น "Column_x0020_Name" หลังจากเวอร์ชันนี้ แอปทั้งหมดได้รับการอัปเดตโดยอัตโนมัติเป็นไวยากรณ์ใหม่ที่อธิบายไว้ในบทความนี้
ไวยากรณ์
จัดกลุ่มโดย( ตาราง, ชื่อคอลัมน์1 [, ชื่อคอลัมน์2, ... ], ชื่อคอลัมน์กลุ่ม )
- ตาราง - จำเป็นต้องมี ตารางที่จะถูกจัดกลุ่ม
- ColumnNames - จำเป็น ชื่อคอลัมน์ใน ตาราง ซึ่งจะใช้ในการจัดกลุ่มเรกคอร์ด คอลัมน์เหล่านี้กลายเป็นคอลัมน์ในตารางผลลัพธ์
- GroupColumnName - จำเป็น ชื่อคอลัมน์สำหรับเก็บข้อมูลเรกคอร์ดที่ไม่ได้อยู่ใน ColumnName(s)
ยกเลิกการจัดกลุ่ม( ตาราง, ชื่อคอลัมน์กลุ่ม )
- ตาราง - จำเป็นต้องมี ตารางที่จะถูกยกเลิกการจัดกลุ่ม
- GroupColumnName - จำเป็น คอลัมน์ที่ประกอบด้วยการตั้งค่าข้อมูลเรกคอร์ด ด้วยฟังก์ชัน GroupBy
ตัวอย่าง
สร้างการรวบรวม
- เพิ่มปุ่ม และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อ Original
- ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม Original เป็นสูตรต่อไปนี้:
ClearCollect( CityPopulations,
{ City: "London", Country: "United Kingdom", Population: 8615000},
{ City: "Berlin", Country: "Germany", Population: 3562000},
{ City: "Madrid", Country: "Spain", Population: 3165000},
{ City: "Rome", Country: "Italy", Population: 2874000},
{ City: "Paris", Country: "France", Population: 2273000},
{ City: "Hamburg", Country: "Germany", Population: 1760000},
{ City: "Barcelona", Country: "Spain", Population: 1602000},
{ City: "Munich", Country: "Germany", Population: 1494000},
{ City: "Milan", Country: "Italy", Population: 1344000}
)
ในขณะที่กดแป้น Alt ค้างไว้ เลือกปุ่ม Original
คุณเพิ่งสร้าง คอลเลกชัน ที่ชื่อว่า CityPopulations ที่ประกอบด้วยข้อมูลนี้:
เพื่อแสดงคอลเลกชันนี้ เลือก คอลเลกชัน บนเมนู ไฟล์ จากนั้นเลือกคอลเลกชัน CityPopulations ห้าเรกคอร์ดแรกในคอลเลกชันจะปรากฏขึ้น:
จัดกลุ่มเรกคอร์ด
เพิ่มอีกหนึ่งปุ่ม และตั้งค่าของคุณสมบัติ Text เป็น "Group"
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม เป็นสูตรนี้:
ClearCollect(เมืองตามประเทศ, กลุ่มตาม(ประชากรในเมือง, ประเทศ, เมือง) )
ในขณะที่กดแป้น Alt ค้างไว้ เลือกปุ่ม Group
คุณเพิ่งสร้างคอลเลกชัน ชื่อ CitiesByCountry ซึ่งเรกคอร์ดของคอลเลกชันก่อนหน้านี้ถูกจัดกลุ่มตามคอลัมน์ Country
เพื่อแสดงห้าเรกคอร์ดแรกในคอลเลกชันนี้ เลือก คอลเลกชัน บนเมนู ไฟล์
เพื่อแสดงจำนวนประชากรของเมืองในประเทศ/ภูมิภาค เลือกไอคอนตารางในคอลัมน์ Cities สำหรับประเทศ/ภูมิภาคนั้น (ตัวอย่างเช่น เยอรมนี):
กรองและยกเลิกการจัดกลุ่มเรกคอร์ด
เพิ่มอีกปุ่มหนึ่ง และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "กรอง"
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม เป็นสูตรนี้:
ClearCollect(CitiesByCountryFiltered, Filter(CitiesByCountry, "e" ในประเทศ ) )
ในขณะที่กดแป้น Alt ค้างไว้ เลือกปุ่มที่คุณเพิ่ม
คุณเพิ่งสร้างคอลเลกชันที่สาม ที่ชื่อว่า CitiesByCountryFiltered ที่มีเฉพาะประเทศที่มี "e" อยู่ในชื่อ (นั่นคือ ไม่ใช่ Spain หรือ Italy)
เพิ่มอีกหนึ่งปุ่ม และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "Ungroup"
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม เป็นสูตรนี้:
ClearCollect(จำนวนประชากรในเมืองที่ไม่ได้จัดกลุ่ม, ยกเลิกการจัดกลุ่ม(เมืองตามประเทศที่มีการกรอง, เมือง) )
ซึ่งผลลัพธ์เป็น:
รวมผลลัพธ์
การดำเนินการอื่นที่เราสามารถทำได้บนตารางที่จัดกลุ่มคือ การคอมไพล์ผลลัพธ์ ในตัวอย่างนี้ เราจะหาผลรวมจำนวนประชากรของเมืองสำคัญในแต่ละประเทศ/ภูมิภาค
เพิ่มอีกปุ่มหนึ่ง และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "Sum"
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม "Sum" เป็นสูตรต่อไปนี้:
ClearCollect(CityPopulationsSum, AddColumns(CitiesByCountry, 'ผลรวมของประชากรในเมือง', Sum(เมือง, ประชากร ) ) )
ซึ่งผลลัพธ์เป็น:
AddColumns เริ่มต้นด้วยคอลเลกชันฐาน CitiesByCountry และเพิ่มคอลัมน์ใหม่ Sum of City Populations ค่าของคอลัมน์นี้จะคำนวณทีละแถว ตามสูตร Sum( Cities, Population ) AddColumns ให้ค่าของคอลัมน์ เมือง (ตาราง) สำหรับแต่ละแถว และ Sum จะบวก ประชากร สำหรับแต่ละแถวของตารางย่อยนี้
ตอนนี้เรามีผลรวมที่เราต้องการแล้ว เราสามารถใช้ DropColumns เพื่อลบตารางย่อยได้
เพิ่มอีกปุ่มหนึ่ง และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "SumOnly"
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม "SumOnly" เป็นสูตรต่อไปนี้:
ClearCollect(เฉพาะจำนวนประชากรในเมือง, DropColumns(จำนวนประชากรในเมือง, เมือง) )
ซึ่งผลลัพธ์เป็น:
สังเกตว่า เราไม่จำเป็นต้องยกเลิกการจัดกลุ่มตารางนี้