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 Platform CLI

Sắp xếp một bảng.

Lưu ý

Các lệnh PAC CLI pac power-fx 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. Hàm SortSortByColumn không sửa đổi bảng. Thay vào đó, các hàm này 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

Sort( Table, Formula [, SortOrder ] )

  • Table – Bắt buộc. Bảng để sắp xếp.
  • Formula – 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 - Không bắt buộc. 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.

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Table – Bắt buộc. Bảng để sắp xếp.

  • ColumnName(s) - Bắt buộc. Các tên cột để sắp xếp, dưới dạng chuỗi.

  • SortOrder(s) - Không bắt buộc. SortOrder.Ascending hoặc SortOrder.Descending. SortOrder.Ascending là giá trị 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""Column_x0020_Name".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Table – 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""Column_x0020_Name".

Ví dụ

Đối với các ví dụ sau, chúng ta sẽ sử dụng nguồn dữ liệuIceCream (Kem) có chứa dữ liệu trong bảng sau:

Ví dụ về IceCream.

Công thức Mô tả Kết quả
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
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. Được sắp xếp theo thứ tự bảng chữ cái.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
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. Được sắp xếp theo số.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
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. Được sắp xếp theo số và giảm dần.
Sort( IceCream, Quantity + OnOrder ) 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. Được sắp xếp theo số và tăng dần.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Số lượng", SortOrder.Ascending )
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. Được sắp xếp với Hạt dẻ cười phía trên Vani.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) 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. Được sắp xếp với Hạt dẻ cười phía trên Dâu.

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:

  1. 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( IceCream, { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 10 } )
  2. 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.
  3. 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

  1. 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( IceCream, Flavor ) )

    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.

  2. Nhấn F5, chọn nút mới, sau đó nhấn Esc.

  3. 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.

  4. 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

  1. 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.Ascending, "Hương vị", SortOrder.Descending ) )

    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.

  2. Nhấn F5, chọn nút mới, sau đó nhấn Esc.

  3. 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.

  4. 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.