แชร์ผ่าน


ฟังก์ชัน GroupBy และ Ungroup

ใช้กับ: แอปพื้นที่ทำงาน แอปแบบจำลอง Power Pages

จัดกลุ่ม และยกเลิกการจัดกลุ่ม เรกคอร์ด ของ ตาราง

Description

ฟังก์ชัน GroupBy ส่งกลับตารางที่เรกคอร์ดที่ถูกจัดกลุ่มเข้าด้วยกัน ตามค่าในหนึ่งหรือหลาย คอลัมน์ เรกคอร์ดในกลุ่มเดียวกันจะถูกวางลงในเรกคอร์ดเดียว และมีคอลัมน์เพิ่มเข้ามาเพื่อเก็บตารางที่ซ้อนอยู่ข้างในของคอลัมน์ที่เหลือ

ฟังก์ชัน Ungroup จะย้อนกลับกระบวนการ GroupBy ฟังก์ชันนี้ส่งกลับตาราง ที่แยกออกเป็นเรกคอร์ดต่างหาก สำหรับเรกคอร์ดใดๆ ที่ถูกจัดกลุ่มเข้าด้วยกัน

คุณสามารถจัดกลุ่มเรกคอร์ด โดยใช้ GroupBy ปรับเปลี่ยนตารางที่ส่งกลับ แล้วยกเลิกจัดกลุ่มเรกคอร์ดในตารางถูกปรับเปลี่ยนแล้ว โดยใช้ Ungroup ได้ ตัวอย่างเช่น คุณสามารถเอากลุ่มของเรกคอร์ดออก โดยทำตามวิธีการนี้:

  • ใช้ฟังก์ชัน GroupBy
  • ใช้ฟังก์ชัน Filter เพื่อเอาทั้งกลุ่มของเรกคอร์ดออก
  • ใช้ฟังก์ชัน Ungroup

คุณยังสามารถรวมผลลัพธ์ตามการจัดกลุ่ม:

  • ใช้ฟังก์ชัน GroupBy
  • ใช้ฟังก์ชัน AddColumns กับ SumAverage และฟังก์ชันการรวมอื่นๆ เพื่อเพิ่มคอลัมน์ใหม่ ซึ่งเป็นการรวมตารางกลุ่ม
  • ใช้ฟังก์ชัน 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

ตัวอย่าง

สร้างการรวบรวม

  1. เพิ่มปุ่ม และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อ Original
  2. ตั้งค่าคุณสมบัติ 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}
)
  1. ในขณะที่กดแป้น Alt ค้างไว้ เลือกปุ่ม Original

    คุณเพิ่งสร้าง คอลเลกชัน ที่ชื่อว่า CityPopulations ที่ประกอบด้วยข้อมูลนี้:

    ตัวอย่าง CityPopulations

  2. เพื่อแสดงคอลเลกชันนี้ เลือก คอลเลกชัน บนเมนู ไฟล์ จากนั้นเลือกคอลเลกชัน CityPopulations ห้าเรกคอร์ดแรกในคอลเลกชันจะปรากฏขึ้น:

    คอลเลกชัน CityPopulations

จัดกลุ่มเรกคอร์ด

  1. เพิ่มอีกหนึ่งปุ่ม และตั้งค่าของคุณสมบัติ Text เป็น "Group"

  2. ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม เป็นสูตรนี้:

    ClearCollect(CitiesByCountry, GroupBy(CityPopulations, Country, Cities))

  3. ในขณะที่กดแป้น Alt ค้างไว้ เลือกปุ่ม Group

    คุณเพิ่งสร้างคอลเลกชัน ชื่อ CitiesByCountry ซึ่งเรกคอร์ดของคอลเลกชันก่อนหน้านี้ถูกจัดกลุ่มตามคอลัมน์ Country

    เมืองที่จัดกลุ่ม

  4. เพื่อแสดงห้าเรกคอร์ดแรกในคอลเลกชันนี้ เลือก คอลเลกชัน บนเมนู ไฟล์

    เมืองตามประเทศ/ภูมิภาค

  5. เพื่อแสดงจำนวนประชากรของเมืองในประเทศ/ภูมิภาค เลือกไอคอนตารางในคอลัมน์ Cities สำหรับประเทศ/ภูมิภาคนั้น (ตัวอย่างเช่น เยอรมนี):

    ประชากร - เยอรมนี

กรองและยกเลิกการจัดกลุ่มเรกคอร์ด

  1. เพิ่มอีกปุ่มหนึ่ง และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "กรอง"

  2. ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม เป็นสูตรนี้:

    ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" in Country ) )

  3. ในขณะที่กดแป้น Alt ค้างไว้ เลือกปุ่มที่คุณเพิ่ม

    คุณเพิ่งสร้างคอลเลกชันที่สาม ที่ชื่อว่า CitiesByCountryFiltered ที่มีเฉพาะประเทศที่มี "e" อยู่ในชื่อ (นั่นคือ ไม่ใช่ Spain หรือ Italy)

    CitiesByCountryFiltered

  4. เพิ่มอีกหนึ่งปุ่ม และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "Ungroup"

  5. ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม เป็นสูตรนี้:

    ClearCollect(CityPopulationsUngrouped, Ungroup(CitiesByCountryFiltered, Cities ))

    ซึ่งผลลัพธ์เป็น:

    เมืองตามประเทศ/ภูมิภาคหลังจากยกเลิกการจัดกลุ่ม

รวมผลลัพธ์

การดำเนินการอื่นที่เราสามารถทำได้บนตารางที่จัดกลุ่มคือ การคอมไพล์ผลลัพธ์ ในตัวอย่างนี้ เราจะหาผลรวมจำนวนประชากรของเมืองสำคัญในแต่ละประเทศ/ภูมิภาค

  1. เพิ่มอีกปุ่มหนึ่ง และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "Sum"

  2. ตั้งค่าคุณสมบัติ 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 เพื่อลบตารางย่อยได้

  3. เพิ่มอีกปุ่มหนึ่ง และตั้งค่าของคุณสมบัติ Text เพื่อให้ปุ่มแสดงชื่อเป็น "SumOnly"

  4. ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม "SumOnly" เป็นสูตรต่อไปนี้:

    ClearCollect(CityPopulationsSumOnly, DropColumns(CityPopulationsSum, Cities))

    ซึ่งผลลัพธ์เป็น:

    ผลรวมประเทศ

    สังเกตว่า เราไม่จำเป็นต้องยกเลิกการจัดกลุ่มตารางนี้