Chức năng GroupBy và Ungroup

Áp dụng cho: Ứng dụng canvas Ứng dụng dựa trên mô hình

Nhóm và hủy nhóm các bản ghi của một bảng.

Description

Hàm GroupBy trả về một bảng có các bản ghi được nhóm lại với nhau dựa trên các giá trị trong một hoặc nhiều cột. Các bản ghi trong cùng một nhóm được đặt vào một bản ghi duy nhất, có thêm cột chứa một bảng lồng ghép chứa các cột còn lại.

Hàm Ungroup đảo ngược quy trình của hàm GroupBy. Hàm này trả về một bảng, chia bất kỳ bản ghi nào đã được nhóm lại với nhau thành các bản ghi riêng biệt.

Bạn có thể nhóm các bản ghi bằng hàm GroupBy, sửa đổi bảng mà hàm trả về, sau đó hủy nhóm các bản ghi trong bảng đã sửa đổi bằng hàm Ungroup. Ví dụ: bạn có thể xóa một nhóm các bản ghi theo phương pháp sau:

  • Dùng hàm GroupBy.
  • Sử dụng hàm Filter để loại bỏ toàn bộ nhóm bản ghi.
  • Dùng hàm Ungroup.

Bạn cũng có thể tổng hợp kết quả bằng cách nhóm:

  • Dùng hàm GroupBy.
  • Sử dụng hàm AddColumns với Sum, Trung bình và các hàm tổng hợp khác để thêm một cột mới, cột này là tổng hợp của các bảng nhóm.
  • Sử dụng hàm DropColumns để loại bỏ bảng nhóm.

Hàm Ungroup cố gắng giữ nguyên thứ tự ban đầu của các bản ghi được chuyển vào hàm GroupBy. Không phải lúc nào cũng có thể làm điều này (ví dụ: nếu bảng gốc chứa bản ghi blank).

Bảng là một giá trị trong Power Apps, giống như một chuỗi hoặc số. Bạn có thể chỉ định một bảng làm đối số cho hàm và hàm có thể trả về một bảng. Hàm GroupByUngroup không sửa đổi bảng, mà lấy bảng làm đối số và trả về một bảng khác. Xem phần thao tác với bảng để biết thêm chi tiết.

Lưu ý

Trong Power Apps trước phiên bản 3.24042, tên cột đã được chỉ định bằng chuỗi văn bản sử dụng dấu ngoặc kép và nếu được kết nối với nguồn dữ liệu thì chúng cũng cần phải là tên logic. Ví dụ: tên logic "cr43e_name" có dấu ngoặc kép đã được sử dụng thay vì tên hiển thị Tên không có dấu ngoặc kép. Đối với SharePoint và nguồn dữ liệu Excel chứa tên cột có khoảng trắng, mỗi khoảng trắng được chỉ định bằng "_x0020_", ví dụ "Tên cột""Cột_x0020_Name". Sau phiên bản này, tất cả các ứng dụng đều được tự động cập nhật theo cú pháp mới được mô tả trong bài viết này.

Cú pháp

GroupBy( Table, ColumnName1, [ ColumnName2, ... ], GroupColumnName )

  • Table – Bắt buộc. Bảng cần nhóm.
  • ColumnName(s) - Bắt buộc. Tên cột trong Bảng cần nhóm các bản ghi. Hàm sẽ trả về một bảng gồm các cột này.
  • GroupColumnName – Bắt buộc. Tên cột để lưu trữ dữ liệu bản ghi không có trong ColumnName(s).

Ungroup( Table, GroupColumnName )

  • Table – Bắt buộc. Bảng cần hủy nhóm.
  • GroupColumnName – Bắt buộc. Cột chứa thiết lập dữ liệu bản ghi bằng hàm GroupBy.

Ví dụ

Tạo bộ sưu tập

  1. Thêm một nút rồi đặt thuộc tính Văn bản của nút này sao cho nút sẽ hiển thị Original.
  2. Đặt thuộc tính OnSelect của nút Original thành công thức sau:
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. Nhấn và giữ phím Alt, đồng thời chọn nút Original.

    Bạn vừa tạo một bộ sưu tập tên là CityPopulation có chứa dữ liệu sau:

    Ví dụ về Dân số Thành phố

  2. Để hiển thị bộ sưu tập này, hãy chọn Collections (Bộ sưu tập) trên menu File (Tệp), sau đó chọn bộ sưu tập CityPopulation. Năm bản ghi đầu tiên trong bộ sưu tập xuất hiện:

    Bộ sưu tập CityPopulations.

Nhóm các bản ghi

  1. Thêm một nút khác rồi đặt thuộc tính Văn bản của nút này thành "Group".

  2. Đặt thuộc tính OnSelect của nút này thành công thức sau:

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

  3. Nhấn và giữ phím Alt, đồng thời chọn nút Group.

    Bạn vừa tạo một bộ sưu tập tên là CitiesByCountry, trong đó các bản ghi của bộ sưu tập trước được nhóm theo cột Country (Quốc gia).

    Các thành phố được nhóm lại.

  4. Để hiển thị năm bản ghi đầu tiên trong bộ sưu tập này, hãy chọn Collections (Bộ sưu tập) trên menu File.

    Thành phố theo quốc gia/khu vực.

  5. Để hiển thị dân số các thành phố trong một quốc gia/khu vực, hãy chọn biểu tượng bảng trong cột Thành phố cho quốc gia/khu vực đó (ví dụ: Đức):

    Dân số - Đức.

Lọc và hủy nhóm bản ghi

  1. Thêm một nút khác rồi đặt thuộc tính Văn bản của nút này sao cho nút sẽ hiển thị Filter.

  2. Đặt thuộc tính OnSelect của nút này thành công thức sau:

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

  3. Nhấn và giữ phím Alt, đồng thời chọn nút bạn đã thêm.

    Bạn vừa tạo một bộ sưu tập thứ ba tên là CitiesByCountryFiltered. Bộ sưu tập này chỉ bao gồm những quốc gia có chữ "e" trong tên (nghĩa là không phải Tây Ban Nha hoặc Ý).

    CitiesByCountryFiltered.

  4. Thêm một nút khác rồi đặt thuộc tính Văn bản của nút này sao cho nút sẽ hiển thị Ungroup.

  5. Đặt thuộc tính OnSelect của nút này thành công thức sau:

    ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities ) )

    Kết quả như sau:

    Các thành phố theo quốc gia/khu vực sau khi tách nhóm.

Tổng hợp kết quả

Một thao tác khác mà chúng ta có thể thực hiện trên một bảng được nhóm là tổng hợp kết quả. Trong ví dụ này, chúng tôi sẽ tính tổng dân số của các thành phố lớn ở mỗi quốc gia/khu vực.

  1. Thêm một nút khác rồi đặt thuộc tính Văn bản của nút này sao cho nút sẽ hiển thị Sum.

  2. Đặt thuộc tính OnSelect của nút Sum thành công thức sau:

    ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Tổng dân số thành phố', Sum( Thành phố, Dân số ) ) )

    Kết quả như sau:

    Tổng số thành phố.

    Hàm AddColumns bắt đầu với tập hợp cơ sở CitiesByCountry và thêm một cột mới Sum of City Populations. Các giá trị của cột này được tính theo từng hàng, dựa trên công thức Sum( Cities, Population ). Hàm AddColumns cung cấp giá trị của cột Cities (bảng) cho mỗi hàng và hàm Sum cộng Population của mỗi hàng trong bảng phụ này.

    Khi đã thu được tổng mong muốn, chúng ta có thể sử dụng hàm DropColumn để loại bỏ các bảng phụ.

  3. Thêm một nút khác rồi đặt thuộc tính Văn bản của nút này sao cho nút sẽ hiển thị SumOnly.

  4. Đặt thuộc tính OnSelect của nút SumOnly thành công thức sau:

    ClearCollect(CityPopulationsSumOnly, DropColumns(CityPopulationSum, Cities ) )

    Kết quả như sau:

    Tổng số quốc gia.

    Lưu ý rằng chúng ta không cần hủy nhóm đối với bảng này.