Sort 與 SortByColumns 函數
適用於: 畫布應用 桌面流 模型驅動應用 Power Pages Power Platform CLI
排序 資料表。
注意
PAC CLI pac power-fx 命令 不支援 SortByColumns 函數。
Description
Sort 函數會根據公式排序資料表。
系統會針對資料表的 記錄 評估公式,並使用結果來排序資料表。 公式必須產生數字、字串或布林值,但不會產生資料表或記錄。
目前處理中的記錄其各個欄位可供您在公式內使用。 使用 ThisRecord 運算子,,或只需依名稱參照欄位,就像任何其他的值一樣。 As 運算子也可以用來命名所處理的記錄,這有助於讓您的公式更易於了解並讓嵌套記錄可以存取。 如需更多資訊,請參閱下列範例以及 處理記錄範圍。
若要先依欄位排序,再依另一欄位排序,請在另一欄位中內嵌 Sort 公式。 例如,您可以使用此公式來排序 Contacts 資料表,方式為先依 LastName 欄位排序,再依 FirstName 欄位排序:Sort( Sort( Contacts, LastName ), FirstName )
SortByColumns 函數也可用於根據一或多個欄位排序資料表。
SortByColumns 的參數清單提供排序依據的欄位名稱,及各欄位的排序方向。 排序依參數順序執行 (先依第一個欄位排序,再依第二個欄位等)。 欄位名稱需指定為字串,如果直接包含在參數清單中,則需使用雙引號。 例如,SortByColumns( CustomerTable, "LastName" )。
您可以將 SortByColumns 與 Drop down 或 List box 控制項結合,讓使用者選取排序依據的欄位。
除了遞增或遞減排序外,亦可根據包含值的單欄位資料表來排序 SortByColumns。 例如,您可以將 [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] 作為排序順序,根據星期名稱來排序記錄。 所有含 Monday" 的記錄會排在第一個,接著為 Tuesday,依此類推。 排序資料表中沒有的記錄則會排在清單的尾端。
表格 是一個值, Power Apps就像字串或數字一樣。 資料表可以傳遞至函數,也可以從函數傳回。 Sort 和 SortByColumn 不會修改表;而是將表作為參數,並返回已排序的新表。 請參閱 使用資料表 以取得詳細資料。
委派
如果可行,Power Apps 將委派篩選、對資料來源作業進行排序並視需要逐頁瀏覽結果。 例如,當您啟動應用程式以顯示填有資料的組件庫控制項時,最初將只會向裝置提供第一組記錄。 隨著使用者進行捲動,將陸續從資料來源提供額外的資料。 如此可縮短應用程式的啟動時間並能夠存取龐大的資料集。
不過,委派不一定始終可行。 各種資料來源支援委派的函數與運算子皆不盡相同。 如果未能完整委派某個公式,製作環境會以警告標示無法委派的部分。 可行的情況下,請考慮更改公式以避開無法委派的函數和運算子。 委派清單詳列了可供委派的資料來源及作業。
如果無法進行委派,Power Apps 將僅提取少量的記錄以供本機使用。 篩選和排序函數將對一組有限的記錄執行運算。 組件庫提供的內容不一定是完整的全貌,可能會造成使用者困惑。
詳細資訊請參閱委派概觀。
語法
排序(表,公式[,排序順序 ])
- Table - 必需。 要排序的資料表。
- 公式 - 必需。 此系統會針對資料表的記錄評估公式,並使用結果來排序資料表。 您可以參考資料表內的欄位。
- SortOrder - 可選。 指定 SortOrder.Descending 以遞減順序排序資料表。 SortOrder.Ascending 是預設值。
SortByColumns(表,ColumnName1[,SortOrder1,ColumnName2,SortOrder2 ,... ])
Table - 必需。 要排序的資料表。
ColumnNames - 必需。 排序依據的欄位名稱,作為字串。
SortOrders - 可選。 SortOrder.Ascending 或 SortOrder.Descending。 SortOrder.Ascending 是預設值。 如果提供多個 ColumnNames ,除了最後一個欄位外,所有欄位都必須包含 SortOrder 。
Note
如果 SharePoint 和 Excel 資料來源包含有空格的欄位名稱,請將每個空格指定為 "_x0020_"。 例如,將 "Column Name" 指定為 "Column_x0020_Name"。
SortByColumns( 表, 列名稱, SortOrderTable )
Table - 必需。 要排序的資料表。
ColumnName - 必需。 排序依據的欄位名稱,作為字串。
SortOrderTable - 必需。 排序所依據包含值的單一欄位資料表。
Note
如果 SharePoint 和 Excel 資料來源包含有空格的欄位名稱,請將每個空格指定為 "_x0020_"。 例如,將 "Column Name" 指定為 "Column_x0020_Name"。
範例
在接下來的幾個範例中,我們將使用 IceCream 資料來源,其中包含此資料表中的資料:
公式 | 描述 | 結果 |
---|---|---|
排序(IceCream,風味) SortByColumns(IceCream,“風味”) |
將 IceCream 依其 Flavor 欄位排序。 Flavor 欄位包含字串,因此資料表會依字母順序排序。 根據預設,排序順序為遞增。 | |
排序(IceCream,數量) SortByColumns(IceCream,“數量”) |
將 IceCream 依其 Quantity 欄位排序。 Quantity 欄位包含數字,因此資料表會依數字大小排序。 根據預設,排序順序為遞增。 | |
Sort(IceCream,數量,SortOrder.降序) SortByColumns(IceCream,“數量”,SortOrder.Descending) |
將 IceCream 依其 Quantity 欄位排序。 Quantity 欄位包含數字,因此會依數字大小進行排序。 已指定排序順序為遞減。 | |
排序(IceCream,數量 + OnOrder) | 將 IceCream 分別依據其每筆記錄的 Quantity 與 OnOrder 欄位總和排序。 總和為數字,因此資料表會依照數字大小排序。 根據預設,排序順序為遞增。 由於我們是依公式排序,而不是原始欄位值,因此不等同使用 SortByColumns。 | |
sort (sort(IceCream,OnOrder),數量) SortByColumns(IceCream,“OnOrder”,SortOrder.Ascending,“數量”,SortOrder.Ascending) |
將 IceCream 先依其 OnOrder 欄位,再依其 Quantity 欄位排序。 請注意,"Pistachio" 在第一次排序時會根據 OnOrder 排在 "Vanilla" 上方,然後兩者再一起根據 Quantity 移至其適當的位置。 | |
SortByColumns(IceCream,“風味”,[“開心果”,“草莓”]) | 將 IceCream 根據包含 "Pistachio" 與 "Strawberry" 的單一欄位資料表來依 Flavor 欄位排序。 Flavor 為 "Pistachio" 的記錄會在結果中第一個出現,接下來是包含 "Strawberry" 的記錄。 至於 Flavor 欄位中不符合的值,例如 "Vanilla",會顯示在符合的項目之後。 |
按步就班
您若要自行執行這些範例,請將 IceCream 資料來源建立為 集合:
- 新增一個按鈕,並將其 OnSelect 屬性設為此公式:
ClearCollect(霜淇淋, { 口味:巧克力,數量:100,OnOrder:150 }, { 口味:香草,數量:200,OnOrder:20 }, { 口味:草莓“,數量:300,OnOrder:0 }, { 口味:薄荷巧克力”,數量:60,OnOrder:100 }, { 口味:開心果,數量:200,OnOrder:10 } ) - 預覽應用程式、選取該按鈕,然後按下 Esc 返回預設工作區。
- 選取 檔案 功能表中的 集合,以顯示您剛剛建立的集合,然後按下 Esc 返回預設工作區。
排序
新增另一個按鈕,並將其 OnSelect 屬性設為以下公式:
ClearCollect (SortByFlavor,Sort(IceCream,Flavor))上述的公式會建立第二個集合,名為 SortByFlavor,其中包含的資料與 Ice Cream 相同。 不過,新集合中的資料會依據 Flavor 欄位的字母順序遞增排序。
按下 F5、選取新的按鈕,然後按下 Esc。
選取 File 功能表中的 Collections,以顯示這兩個集合,然後按下 Esc 返回預設工作區。
重複最後三個步驟,但變更您想要建立的集合名稱,然後使用本節中稍早所述範例資料表中其他使用 Sort 的公式來取代 Sort 公式。
SortByColumns
新增另一個按鈕,並將其 OnSelect 屬性設為以下公式:
ClearCollect (SortByQuantity,SortByColumns(IceCream,“數量”,SortOrder.Ascending,“口味”,SortOrder.Descending))上述的公式會建立第三個集合,名為 SortByQuantity,其中包含的資料與 Ice Cream 相同。 不過,新集合中的資料會依據 Quantity 的數字大小排序,再依據 Flavor 欄位以遞減順序排序。
按下 F5、選取新的按鈕,然後按下 Esc。
選取 檔案 功能表中的 集合,以顯示這三個集合,然後按下 Esc 返回預設工作區。
重複最後三個步驟,但變更您想要建立的集合名稱,然後使用本節中稍早所述範例資料表中其他使用 SortByColumns 的公式來取代 SortByColumns 公式。