Sort 및 SortByColumns 함수
적용 대상: 캔버스 앱 데스크톱 흐름 모델 기반 앱 Power Pages Power Platform CLI
테이블을 정렬합니다.
노트
PAC CLI pac power-fx 명령은 SortByColumns 함수를 지원하지 않습니다.
Description
Sort 함수는 수식에 따라 테이블을 정렬합니다.
수식은 테이블의 각 레코드를 계산하고, 그 결과는 테이블을 정렬하는 데 사용됩니다. 수식은 숫자, 문자열 또는 부울 값이 되어야 하며, 테이블 또는 레코드가 될 수 없습니다.
현재 처리 중인 레코드의 필드는 수식 내에서 사용할 수 있습니다. ThisRecord 연산자를 사용하거나 다른 값과 마찬가지로 이름을 기준으로 필드를 참조하기만 하면 됩니다. As 연산자는 처리 중인 레코드의 이름을 지정하여 수식을 이해하기 쉽게 만들고 중첩된 레코드를 액세스 가능하게 만드는 데에도 사용할 수 있습니다. 자세한 정보는 아래 예제 및 레코드 범위 작업을 참조하세요.
하나의 열로 먼저 정렬한 후 다른 열로 정렬하려면 Sort 수식을 다른 열에 포함하십시오. 예를 들어, Sort( Sort( Contacts, LastName ), FirstName ) 수식을 사용하여 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는 로컬에서 작업하기 위해 소수의 레코드 집합만 가져옵니다. 필터 및 정렬 함수는 축소된 레코드 집합에서 작동합니다. 갤러리에서 제공하는 것은 전체가 아닐 수 있으며, 이는 사용자들에게 혼란을 줄 수 있습니다.
자세한 내용은 위임 개요를 참조하십시오.
구문
Sort( Table, Formula [, SortOrder ] )
- Table – 필수 항목입니다. 정렬할 테이블입니다.
- Formula - 필수 항목입니다. 다음 수식은 테이블의 각 레코드를 계산하고, 그 결과는 테이블을 정렬하는 데 사용됩니다. 테이블 내의 열을 참조할 수 있습니다.
- SortOrder - 선택 항목입니다. 테이블을 내림차순으로 정렬하려면 SortOrder.Descending을 지정하십시오. SortOrder.Ascending은 기본값입니다.
SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )
Table – 필수 항목입니다. 정렬할 테이블입니다.
ColumnName(s) - 필수 항목입니다. 문자열로서 정렬할 열 이름입니다.
SortOrder(s) - 선택 항목입니다. SortOrder.Ascending 또는 SortOrder.Descending SortOrder.Ascending은 기본값입니다. 여러 ColumnNames가 제공되면 마지막 열을 제외한 모든 열에 SortOrder가 포함되어야 합니다.
노트
공백이 있는 열 이름을 포함하는 SharePoint 및 Excel 데이터 원본의 경우 각 공백을 "_x0020_"로 지정합니다. 예를 들어, "Column Name"은 "Column_x0020_Name"으로 지정합니다.
SortByColumns( Table, ColumnName, SortOrderTable )
Table – 필수 항목입니다. 정렬할 테이블입니다.
ColumnName - 필수 항목입니다. 문자열로서 정렬할 열 이름입니다.
SortOrderTable - 필수 항목입니다. 정렬할 값들의 단일 열 테이블입니다.
노트
공백이 있는 열 이름을 포함하는 SharePoint 및 Excel 데이터 원본의 경우 각 공백을 "_x0020_"로 지정합니다. 예를 들어, "Column Name"은 "Column_x0020_Name"으로 지정합니다.
예제
다음 예에서는 이 테이블의 데이터가 포함된 IceCream 데이터 원본을 사용합니다.
수식 | 설명 | 결과 |
---|---|---|
Sort( IceCream, Flavor ) SortByColumns( IceCream "Flavor" ) |
IceCream을 Flavor 열로 정렬합니다. Flavor 열에는 문자열이 포함되어 있어서 해당 테이블은 사전순으로 정렬됩니다. 기본적으로 정렬 순서는 오름차순입니다. | |
Sort( IceCream, Quantity ) SortByColumns( IceCream, "Quantity" ) |
IceCream을 Quantity 열로 정렬합니다. Quantity 열에는 숫자가 포함되어 있어서 해당 테이블은 번호순으로 정렬됩니다. 기본적으로 정렬 순서는 오름차순입니다. | |
Sort( IceCream, Quantity, SortOrder.Descending ) SortByColumns( IceCream, "Quantity", SortOrder.Descending ) |
IceCream을 Quantity 열로 정렬합니다. Quantity 열에는 숫자가 포함되어 있어서 번호순으로 정렬됩니다. 정렬 순서가 내림차순으로 지정되었습니다. | |
Sort( IceCream, Quantity + OnOrder ) | IceCream을 각 레코드에 대해 개별적으로 Quantity 및 OnOrder 열의 합으로 정렬합니다. 합계는 숫자이므로 해당 테이블은 번호순으로 정렬됩니다. 기본적으로 정렬 순서는 오름차순입니다. 원시 열 값이 아닌 수식으로 정렬하기 때문에 SortByColumns를 사용하는 것은 해당되지 않습니다. | |
Sort( Sort( IceCream, OnOrder ), Quantity ) SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending ) |
IceCream을 OnOrder 열로 먼저 정렬한 후 Quantity 열로 정렬합니다. "Pistachio"는 OnOrder 기준에 따라 첫 번째 정렬에서 "Vanilla" 위로 올라간 다음, 둘 모두 Quantity 기준에 따라 적절한 위치로 이동합니다. | |
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) | IceCream을 "Pistachio" 및 "Strawberry"를 포함하는 단일 열 테이블 기준에 따라 Flavor 열로 정렬합니다. "Pistachio"의 Flavor가 있는 레코드가 첫 번째로 표시되고 "Strawberry"를 포함한 레코드가 다음에 나옵니다. "Vanilla"와 같이 일치하지 않는 Flavor 열의 값들은 일치했던 항목들 다음에 표시됩니다. |
단계별
이러한 예제를 직접 실행하려면 IceCream 데이터 원본을 컬렉션으로 만드십시오.
- 단추를 추가하고 OnSelect 속성을 이 수식으로 설정합니다.
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 } ) - 앱을 미리 보고, 단추를 선택한 다음, Esc를 눌러 기본 작업 영역으로 돌아갑니다.
- 방금 만든 컬렉션을 표시하려면 File 메뉴에서 Collections를 선택한 다음, Esc를 눌러 기본 작업 영역으로 돌아갑니다.
Sort
다른 단추를 추가하고, 자체 OnSelect 속성을 이 수식으로 설정합니다.
ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )앞 수식은 Ice Cream과 동일한 데이터를 포함하는 SortByFlavor라는 두 번째 컬렉션을 만듭니다. 그러나 새 컬렉션에는 오름차순의 Flavor 열로 사전순으로 정렬한 데이터가 포함됩니다.
F5 키를 누르고, 새 단추를 선택한 다음, Esc를 누릅니다.
두 컬렉션을 모두 표시하려면 File 메뉴에서 Collections를 선택한 다음, Esc를 눌러 기본 작업 영역으로 돌아갑니다.
마지막 세 단계를 반복하되, 만들려는 컬렉션의 이름을 변경하고, Sort 수식을 Sort를 사용하는 이 섹션 앞 부분의 예제 테이블의 다른 수식으로 교체합니다.
SortByColumns
다른 단추를 추가하고, 자체 OnSelect 속성을 이 수식으로 설정합니다.
ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )앞 수식은 Ice Cream과 동일한 데이터를 포함하는 SortByQuantity라는 세 번째 컬렉션을 만듭니다. 그러나 새 컬렉션에는 오름차순의 Quantity 열로 사전순으로 정렬한 후, 내림차순의 Flavor 열로 사전순으로 정렬한 데이터가 포함됩니다.
F5 키를 누르고, 새 단추를 선택한 다음, Esc를 누릅니다.
세 컬렉션을 모두 표시하려면 File 메뉴에서 Collections를 선택한 다음, Esc를 눌러 기본 작업 영역으로 돌아갑니다.
마지막 세 단계를 반복하되, 만들려는 컬렉션의 이름을 변경하고, SortByColumns 수식을 SortByColumns를 사용하는 이 섹션 앞 부분의 예제 테이블의 다른 수식으로 교체합니다.