ฟังก์ชัน GroupBy และ Ungroup
ใช้กับ: แอปพื้นที่ทำงาน แอปแบบจำลอง 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" หลังจากเวอร์ชันนี้ แอปทั้งหมดได้รับการอัปเดตโดยอัตโนมัติเป็นไวยากรณ์ใหม่ที่อธิบายไว้ในบทความนี้
ไวยากรณ์
GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )
- Table - จำเป็น ตารางที่จะถูกจัดกลุ่ม
- ColumnName(s) - จำเป็น ชื่อคอลัมน์ใน ตาราง ซึ่งจะใช้ในการจัดกลุ่มเรกคอร์ด คอลัมน์เหล่านี้กลายเป็นคอลัมน์ในตารางผลลัพธ์
- GroupColumnName - จำเป็นต้องมี ชื่อคอลัมน์สำหรับเก็บข้อมูลเรกคอร์ดที่ไม่ได้อยู่ใน ColumnName(s)
Ungroup( Table, GroupColumnName )
- Table - จำเป็น ตารางที่จะถูกยกเลิกการจัดกลุ่ม
- 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(CitiesByCountry, GroupBy(CityPopulations, Country, Cities))
ในขณะที่กดแป้น Alt ค้างไว้ เลือกปุ่ม Group
คุณเพิ่งสร้างคอลเลกชัน ชื่อ CitiesByCountry ซึ่งเรกคอร์ดของคอลเลกชันก่อนหน้านี้ถูกจัดกลุ่มตามคอลัมน์ Country
เพื่อแสดงห้าเรกคอร์ดแรกในคอลเลกชันนี้ เลือก คอลเลกชัน บนเมนู ไฟล์
เพื่อแสดงจำนวนประชากรของเมืองในประเทศ/ภูมิภาค เลือกไอคอนตารางในคอลัมน์ Cities สำหรับประเทศ/ภูมิภาคนั้น (ตัวอย่างเช่น เยอรมนี):
กรองและยกเลิกการจัดกลุ่มเรกคอร์ด
เพิ่มอีกปุ่มหนึ่ง และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "กรอง"
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม เป็นสูตรนี้:
ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" in Country ) )
ในขณะที่กดแป้น Alt ค้างไว้ เลือกปุ่มที่คุณเพิ่ม
คุณเพิ่งสร้างคอลเลกชันที่สาม ที่ชื่อว่า CitiesByCountryFiltered ที่มีเฉพาะประเทศที่มี "e" อยู่ในชื่อ (นั่นคือ ไม่ใช่ Spain หรือ Italy)
เพิ่มอีกหนึ่งปุ่ม และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "Ungroup"
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม เป็นสูตรนี้:
ClearCollect(CityPopulationsUngrouped, Ungroup(CitiesByCountryFiltered, Cities ))
ซึ่งผลลัพธ์เป็น:
รวมผลลัพธ์
การดำเนินการอื่นที่เราสามารถทำได้บนตารางที่จัดกลุ่มคือ การคอมไพล์ผลลัพธ์ ในตัวอย่างนี้ เราจะหาผลรวมจำนวนประชากรของเมืองสำคัญในแต่ละประเทศ/ภูมิภาค
เพิ่มอีกปุ่มหนึ่ง และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "Sum"
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม "Sum" เป็นสูตรต่อไปนี้:
ClearCollect(CityPopulationsSum, AddColumns(CitiesByCountry, 'Sum of City Populations', Sum(Cities, Population)))
ซึ่งผลลัพธ์เป็น:
AddColumns เริ่มต้นจากคอลเลกชันพื้นฐาน CitiesByCountry และเพิ่มคอลัมน์ใหม่ Sum of City Populations ค่าของคอลัมน์นี้จะคำนวณทีละแถว ตามสูตร Sum( Cities, Population ) AddColumns ให้ค่าของคอลัมน์ (ตาราง) Cities สำหรับแต่ละแถว และ Sum บวก Population สำหรับแต่ละแถวของตารางย่อยนี้
ตอนนี้เรามีผลรวมที่เราต้องการแล้ว เราสามารถใช้ DropColumns เพื่อลบตารางย่อยได้
เพิ่มอีกปุ่มหนึ่ง และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "SumOnly"
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม "SumOnly" เป็นสูตรต่อไปนี้:
ClearCollect(CityPopulationsSumOnly, DropColumns(CityPopulationsSum, Cities))
ซึ่งผลลัพธ์เป็น:
สังเกตว่า เราไม่จำเป็นต้องยกเลิกการจัดกลุ่มตารางนี้