Các hàm Sort và SortByColumns
Áp dụng cho: Ứng dụng Canvas Luồng máy tính để bàn Ứng dụng dựa trên mô hình Power Pages Power Platform CLI
Sắp xếp một bảng.
Lưu ý
Các lệnh pac power-fx của CLI PAC không hỗ trợ chức năng SortByColumns .
Description
Hàm Sort sắp xếp một bảng dựa trên công thức.
Công thức được đánh giá cho từng bản ghi của bảng và kết quả được dùng để sắp xếp bảng. Công thức phải tạo ra một số, chuỗi hoặc giá trị Boolean chứ không được tạo ra một bảng hoặc bản ghi.
Các trường bản ghi hiện đang được xử lý đều có sẵn trong công thức. Sử dụng toán tử ThisRecord hoặc chỉ đơn giản là tham chiếu các trường theo tên như khi làm với bất kỳ giá trị nào khác. Bạn cũng có thể dùng toán tử As để đặt tên cho bản ghi đang được xử lý, điều này có thể giúp cho công thức của bạn dễ hiểu hơn và làm cho các bản ghi lồng nhau có thể truy cập được. Để biết thêm thông tin, hãy xem ví dụ bên dưới và xử lý phạm vi bản ghi.
Để sắp xếp trước tiên theo một cột và sau đó theo cột khác, bạn hãy nhúng một công thức Sort vào trong một công thức khác. Ví dụ: bạn có thể sử dụng công thức này để sắp xếp bảng Contacts trước tiên theo cột LastName rồi đến cột FirstName: Sort( Sort( Contacts, LastName ), FirstName )
Bạn cũng có thể dùng hàm SortByColumns để sắp xếp một bảng dựa trên một hoặc nhiều cột.
Danh sách tham số cho hàm SortByColumn cung cấp tên của các cột để sắp xếp theo và hướng sắp xếp trên mỗi cột. Việc sắp xếp được thực hiện theo thứ tự của các tham số (được sắp xếp trước theo cột đầu tiên, sau đó đến cột thứ hai, v.v.). Tên cột được chỉ định dưới dạng chuỗi, yêu cầu dấu ngoặc kép nếu được đưa trực tiếp vào danh sách tham số. Ví dụ: SortByColumns( CustomerTable, "LastName" ).
Bạn có thể kết hợp SortByColumns với một công cụ điều khiển Drop down (Thả xuống) hoặc List box (Hộp danh sách) để cho phép người dùng chọn cột nào cần sắp xếp theo.
Ngoài việc sắp xếp tăng dần hoặc giảm dần, hàm SortByColumn có thể sắp xếp dựa trên một bảng giá trị cột duy nhất. Ví dụ: bạn có thể sắp xếp bản ghi dựa trên tên của một ngày trong tuần bằng cách cung cấp [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] ("Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy", "Chủ Nhật") làm thứ tự sắp xếp. Tất cả bản ghi có Monday (Thứ Hai) sẽ đứng trước, tiếp theo là Tuesday (Thứ Ba), v.v. Các bản ghi được tìm thấy mà không xuất hiện trong bảng sắp xếp sẽ nằm ở cuối danh sách.
Bảng là một giá trị trong Power Apps, giống như một chuỗi hoặc số. Các hàm cũng có thể sử dụng hoặc trả về giá trị này. Sort và SortByColumn không sửa đổi bảng; thay vào đó, chúng lấy một bảng làm đối số và trả về một bảng mới đã được sắp xếp. Xem phần thao tác với bảng để biết thêm chi tiết.
Đại diện
Khi có thể, Power Apps sẽ ủy nhiệm cho bộ lọc và sắp xếp các thao tác với nguồn dữ liệu và trang thông qua kết quả theo yêu cầu. Ví dụ: khi bạn bắt đầu một ứng dụng hiển thị một kiểm soát Thư viện có dữ liệu thì chỉ bộ bản ghi đầu tiên mới được chuyển đến thiết bị từ ban đầu. Khi người dùng cuộn, dữ liệu bổ sung sẽ được đưa xuống từ nguồn dữ liệu. Kết quả là thời gian bắt đầu nhanh hơn cho ứng dụng và khả năng truy cập vào các tập hợp dữ liệu rất lớn.
Tuy nhiên, không phải lúc nào cũng có thể ủy nhiệm được. Nguồn dữ liệu thay đổi theo các hàm và toán tử mà nguồn dữ liệu hỗ trợ với việc ủy nhiệm. Nếu không thể ủy nhiệm hoàn toàn một công thức, môi trường tác giả sẽ gắn cờ cảnh báo cho phần không thể ủy nhiệm. Khi có thể, hãy cân nhắc việc thay đổi công thức để tránh các hàm và toán tử không thể ủy nhiệm. Chi tiết danh sách ủy nhiệm mà nguồn dữ liệu và thao tác có thể được ủy nhiệm.
Nếu không thể ủy nhiệm, Power Apps sẽ chỉ kéo xuống một tập hợp bản ghi nhỏ để làm việc tại chỗ. Các hàm bộ lọc và sắp xếp sẽ hoạt động trên một tập hợp bản ghi đã giảm. Những nội dung có trong Thư viện có thể không phải là một câu chuyện hoàn chỉnh, từ đó có thể gây khó hiểu cho người dùng.
Hãy xem tổng quan ủy nhiệm để biết thêm thông tin.
Cú pháp
Sắp xếp( Bảng, Công thức [, Thứ tự sắp xếp ] )
- Bảng - Bắt buộc. Bảng để sắp xếp.
- Công thức - Bắt buộc. Công thức này được đánh giá cho từng bản ghi của bảng và kết quả được dùng để sắp xếp bảng. Bạn có thể tham chiếu các cột trong bảng.
- SortOrder - Tùy chọn. Chỉ định SortOrder.Descending để sắp xếp bảng theo thứ tự giảm dần. SortOrder.Ascending là giá trị mặc định.
Sắp xếp theo cột( Bảng, Tên cột1 [, Thứ tự sắp xếp1, Tên cột2, Thứ tự sắp xếp2, ... ] )
Bảng - Bắt buộc. Bảng để sắp xếp.
ColumnNames - Bắt buộc. Các tên cột để sắp xếp, dưới dạng chuỗi.
SortOrders - Tùy chọn. SortOrder.Ascending hoặc SortOrder.Descending. SortOrder.Ascending là mặc định. Nếu nhiều ColumnNames được cung cấp, thì tất cả trừ cột cuối cùng phải bao gồm một giá trị SortOrder.
Lưu ý
Đối với nguồn dữ liệu SharePoint và Excel chứa tên cột có dấu cách, hãy chỉ định từng dấu cách là "_x0020_". Ví dụ: chỉ định "Column Name" là "Column_x0020_Name".
SortByColumns( Bảng, Tên cột, Bảng sắp xếp )
Bảng - Bắt buộc. Bảng để sắp xếp.
ColumnName - Bắt buộc. Tên cột để sắp xếp, dưới dạng chuỗi.
SortOrderTable - Bắt buộc. Bảng một cột chứa các giá trị để sắp xếp theo.
Lưu ý
Đối với nguồn dữ liệu SharePoint và Excel chứa tên cột có dấu cách, hãy chỉ định từng dấu cách là "_x0020_". Ví dụ: chỉ định "Column Name" là "Column_x0020_Name".
Ví dụ
Đối với các ví dụ sau, chúng ta sẽ sử dụng nguồn dữ liệu IceCream (Kem) có chứa dữ liệu trong bảng sau:
Công thức | Mô tả | Kết quả |
---|---|---|
Phân loại (Kem, Hương vị) Sắp xếp theo cột (Kem, "Hương vị") |
Sắp xếp IceCream (Kem) theo cột Flavor (Hương vị). Cột Flavor (Hương vị) chứa các chuỗi nên bảng được sắp xếp theo thứ tự abc. Theo mặc định, thứ tự sắp xếp giảm dần. | |
Sắp xếp (Kem, Số lượng) Sắp xếp theo cột(Kem, "Số lượng") |
Sắp xếp IceCream theo cột Quantity. Cột Quantity (Số lượng) chứa các số nên bảng được sắp xếp theo thứ tự số. Theo mặc định, thứ tự sắp xếp giảm dần. | |
Sắp xếp (Kem, Số lượng, Thứ tự sắp xếp. Giảm dần) SortByColumns(Kem, "Số lượng", SortOrder.Giảm dần) |
Sắp xếp IceCream theo cột Quantity. Cột Quantity (Số lượng) chứa các số nên việc sắp xếp được thực hiện theo số. Thứ tự sắp xếp đã được chỉ định là giảm dần. | |
Sắp xếp (Kem, Số lượng + Đang đặt hàng) | Sắp xếp IceCream (Kem) theo tổng của cột Quantity (Số lượng) và OnOrder (Trên đơn hàng) cho từng bản ghi. Tổng là một số nên bảng được sắp xếp theo số. Theo mặc định, thứ tự sắp xếp giảm dần. Vì chúng ta đang sắp xếp theo công thức chứ không phải theo các giá trị cột thô, nên không có công thức tương đương sử dụng SortByColumns. | |
Sắp xếp( Sắp xếp( Kem, Theo đơn hàng ), Số lượng ) SortByColumns(Kem, "Theo đơn hàng", SortOrder.Tăng dần, "Số lượng", SortOrder.Tăng dần) |
Sắp xếp IceCream (Kem) trước tiên theo cột OnOrder (Trên đơn hàng), tiếp đến là theo cột Quantity (Số lượng). Lưu ý rằng "Pistachio" nằm phía trên "Vanilla" trong loại đầu tiên dựa trên OnOrder và sau đó cùng chuyển đến vị trí thích hợp dựa trên Quantity. | |
Sắp xếp theo cột(Kem, "Hương vị", [ "Hạt dẻ cười", "Dâu tây" ] ) | Sắp xếp IceCream theo cột Flavor của nó dựa trên bảng một cột chứa "Pistachio" và "Strawberry". Bản ghi có Flavor của "Pistachio" sẽ xuất hiện đầu tiên trong kết quả, theo sau là các bản ghi có chứa "Strawberry". Đối với các giá trị trong cột Flavor không trùng khớp, chẳng hạn như "Vanilla", các giá trị này sẽ xuất hiện sau các mục trùng khớp. |
Hướng dẫn chi tiết
Để tự chạy các ví dụ này, hãy tạo nguồn dữ liệu IceCream dưới dạng một bộ sưu tập:
- Thêm một nút rồi đặt thuộc tính OnSelect của nút này thành công thức sau:
ClearCollect(Kem, { Hương vị: "Sô cô la", Số lượng: 100, Theo đơn đặt hàng: 150 }, { Hương vị: "Vanilla", Số lượng: 200, Theo đơn đặt hàng: 20 }, { Hương vị: "Dâu tây", Số lượng: 300, Theo đơn đặt hàng: 0 }, { Hương vị: "Sô cô la bạc hà", Số lượng: 60, Theo đơn đặt hàng: 100 }, { Hương vị: "Hạt dẻ cười", Số lượng: 200, Theo đơn đặt hàng: 10 } ) - Xem trước ứng dụng, chọn nút rồi nhấn Esc để trở về không gian làm việc mặc định.
- Chọn Bộ sưu tập trên menu Tệp để hiển thị bộ sưu tập mà bạn vừa tạo, sau đó nhấn Esc để trở về không gian làm việc mặc định.
Sắp xếp
Thêm một nút khác rồi đặt thuộc tính OnSelect của nút này thành công thức sau:
ClearCollect(SortByFlavor, Sort(Kem, Hương vị))Công thức trước đó tạo ra một bộ sưu tập thứ hai có tên là SortByFlavor có chứa dữ liệu giống như Ice Cream. Tuy nhiên, bộ sưu tập mới chứa dữ liệu được Flavor sắp xếp tăng dần theo thứ tự abc.
Nhấn F5, chọn nút mới, sau đó nhấn Esc.
Chọn Bộ sưu tập trên menu Tệp để hiển thị cả hai bộ sưu tập mà bạn vừa tạo, sau đó nhấn Esc để trở về không gian làm việc mặc định.
Lặp lại 3 bước cuối cùng, nhưng thay đổi tên của bộ sưu tập mà bạn muốn tạo và thay thế công thức Sort bằng một công thức khác với bảng ví dụ trước đó trong phần có sử dụng Sort này.
SortByColumns
Thêm một nút khác rồi đặt thuộc tính OnSelect của nút này thành công thức sau:
ClearCollect(SortByQuantity, SortByColumns(Kem, "Số lượng", SortOrder.Tăng dần, "Hương vị", SortOrder.Giảm dần ) )Công thức trước đó tạo ra một bộ sưu tập thứ ba có tên là SortByQuantity có chứa dữ liệu giống như Ice Cream. Tuy nhiên, bộ sưu tập mới chứa dữ liệu được cột Quantity sắp xếp theo số tăng dần, và sau đó được cột Flavor sắp xếp theo thứ tự giảm dần.
Nhấn F5, chọn nút mới, sau đó nhấn Esc.
Chọn Bộ sưu tập trên menu Tệp để hiển thị cả 3 bộ sưu tập mà bạn vừa tạo, sau đó nhấn Esc để trở về không gian làm việc mặc định.
Lặp lại 3 bước cuối cùng, nhưng thay đổi tên của bộ sưu tập mà bạn muốn tạo và thay thế công thức SortByColumns bằng một công thức khác với bảng ví dụ trước đó trong phần có sử dụng SortByColumns này.