[]
SpreadJS를 사용하면 피벗 테이블 데이터를 정렬하여 빠르고 편리하게 분석할 수 있도록 구성할 수 있습니다. 정렬 기능은 특히 대용량 데이터를 다룰 때 유용합니다. PivotTable.sort
함수를 사용하면 데이터를 정렬할 수 있으며, 이 함수는 sortInfo
객체를 매개변수로 받습니다.
SpreadJS에서는 피벗 테이블 데이터를 다음 네 가지 방식으로 정렬할 수 있습니다:
필드 항목 이름 기준 정렬
값 기준 정렬
사용자 정의 필드 항목 값 기준 정렬
사용자 정의 콜백 정렬
피벗 테이블 데이터를 특정 필드를 기준으로 정렬하려면, 필드 이름을 지정하고 sortInfo
의 sortType
속성을 설정하여 정렬 순서를 오름차순, 내림차순 또는 사용자 정의로 지정할 수 있습니다.
아래 이미지는 "Category" 필드에 내림차순 정렬 순서가 적용된 예시를 보여줍니다.
다음 코드 샘플은 필드 항목 이름 기준으로 피벗 테이블 데이터를 정렬하는 방법을 보여줍니다:
let pivotTable = spread.getActiveSheet().pivotTables.get("PivotTable");
var sortInfo = {
sortType: GC.Pivot.SortType.desc
};
pivotTable.sort("Category", sortInfo);
디자이너에서 필드의 필터 드롭다운에서 기타 정렬 옵션..(More Sort Options..)을 클릭하여 데이터를 정렬할 수도 있습니다. 이 옵션을 클릭하면 필드 정렬(Sort Field) 대화상자가 열리며, 여기서 대상 필드를 선택하고 정렬 유형을 오름차순 또는 내림차순으로 설정할 수 있습니다.
아래 이미지는 디자이너에서 필드 항목 이름을 기준으로 정렬하는 방법을 보여줍니다:
피벗 테이블 데이터를 필드의 값에 따라 정렬하려면, sortInfo
클래스의 sortType
및 sortValueFieldName
속성을 설정할 수 있습니다. sortValueFieldName
속성을 사용하면 데이터를 정렬할 기준이 되는 필드의 이름을 지정할 수 있습니다. 이 기능을 통해 "Grand Total"(총합계) 열의 값을 기준으로 피벗 테이블 데이터를 정렬할 수 있습니다.
아래 이미지는 "Quantity" 값을 기준으로 "Category" 필드를 오름차순으로 정렬한 예시입니다.
다음 코드 샘플은 피벗 테이블에서 값을 기준으로 정렬하는 방법을 보여줍니다:
let pivotTable = spread.getActiveSheet().pivotTables.get("PivotTable");
var sortInfo = {
sortType: GC.Pivot.SortType.asc,
sortValueFieldName: "Quantity"
};
pivotTable.sort("Category", sortInfo);
디자이너에서 필드의 필터 드롭다운에서 기타 정렬 옵션..(More Sort Options..)을 클릭하여 데이터를 정렬할 수 있습니다. 이 옵션을 클릭하면 정렬 필드(Sort Field) 대화상자가 열리며, 여기서 대상 필드를 선택하고 정렬 순서를 오름차순 또는 내림차순으로 설정할 수 있습니다.
아래 이미지는 디자이너에서 값을 기준으로 정렬하는 방법을 보여줍니다:
값 영역의 컨텍스트 메뉴에서도 Sort(정렬) 옵션을 사용하여 피벗 데이터를 값 기준으로 정렬할 수 있습니다. 이 메뉴에서는 다음 세 가지 정렬 옵션을 제공합니다:
작은 값부터 큰 값 순으로 정렬
큰 값부터 작은 값 순으로 정렬
기타 정렬 옵션
앞의 두 옵션은 각각 오름차순 및 내림차순으로 정렬하며, 기타 정렬 옵션은 해당 값 영역에 따라 다음과 같이 동작합니다:
Value Area | Dialog | Behavior |
---|---|---|
일반 값 영역 | 값 기준 정렬(Sort by Value) 대화상자가 표시됩니다. | |
총계 영역 | 값 기준 정렬(Sort by Value) 대화상자가 표시되지만, 다음과 같은 조건과 함께 정렬 방향은 비활성화됩니다: - Grand Total 열인 경우, 방향은 기본적으로 위에서 아래로입니다. - Grand Total 행인 경우, 방향은 기본적으로 왼쪽에서 오른쪽입니다. - Grand Total 행과 열 모두인 경우, 대화상자가 표시되지 않습니다. | |
행 헤더 영역/코너 영역 | 정렬 필드(Sort Field) 대화상자가 열리며, 다음과 같은 조건이 적용됩니다: - Compact 레이아웃의 경우, Corner 영역에 정렬 옵션이 나타나지 않습니다. - 선택한 필드가 ΣValues 필드인 경우, 값 기준 정렬(Sort by Value) 대화상자가 나타납니다. - 선택한 Row 영역이 ΣValues 항목인 경우, 대화상자가 나타나지 않습니다. | |
열 헤더 영역 | 정렬 필드(Sort Field) 대화상자가 열리며, 다음과 같은 조건이 적용됩니다: - 선택한 필드가 ΣValues 필드인 경우, 값 기준 정렬(Sort by Value) 대화상자가 나타납니다. - 선택한 Column 영역이 ΣValues 항목인 경우, 대화상자가 나타나지 않습니다. |
사용자 정의 필드 항목 값을 기준으로 피벗 테이블 데이터를 정렬하려면, sortInfo
객체의 sortByPivotReferences
속성을 사용할 수 있습니다.
아래 이미지는 "OrderDate" 필드의 "Qtr1" 데이터를 기준으로 "Category" 필드를 오름차순으로 정렬한 예시입니다.
다음 코드 샘플은 사용자 정의 필드 항목 값을 기준으로 정렬하는 방법을 보여줍니다:
let pivotTable = spread.getActiveSheet().pivotTables.get("PivotTable");
var sortInfo = {
sortType: GC.Pivot.SortType.asc,
sortValueFieldName: "Quantity",
sortByPivotReferences: [
{
fieldName: "OrderDate",
items: ["Qtr1"]
}
]
}
pivotTable.sort("Category", sortInfo);
디자이너에서 필드의 필터 드롭다운에서 값 기준 정렬(Sort by Value) 을 클릭하여 데이터를 정렬할 수 있습니다. 이 옵션을 클릭하면 대상 필드의 정렬 순서를 선택할 수 있는 정렬 필드(Sort Field) 대화상자가 열리며, 여기서 기타 옵션..(More Options..) 버튼을 클릭하면 또 다른 정렬(Sort) 대화상자가 열립니다. 이 대화상자에서는 기본적으로 총합계(GrandTotal) 이 선택되어 있어 값 기준 정렬과 동일한 결과를 제공합니다. 사용자 정의 필드 항목 값으로 정렬하려면, 선택한 열의 값(Values in selected column) 의 범위 선택기를 사용해 범위를 지
행 또는 열 영역 필드의 경우 이 대화상자 옵션은 비활성화됩니다. 예를 들어, Category 필드에 대해 기타 옵션..(More Options..) 버튼을 클릭하면 버튼이 비활성화되므로, Quantity 필드를 선택한 후 기타 옵션(More Options...) 버튼을 클릭해야 합니다.
아래 이미지는 디자이너에서 사용자 정의 필드 항목 값을 기준으로 정렬하는 방법을 보여줍니다:
값의 오름차순 또는 내림차순이 아닌 사용자 정의 로직을 사용하여 피벗 테이블 데이터를 정렬하려면, 사용자 정의 콜백 함수를 사용할 수 있습니다.
아래 이미지는 사용자 정의 콜백 함수를 사용하여 TotalSales 열을 정렬한 예시입니다.
다음 코드 샘플은 사용자 정의 콜백 함수를 사용하여 TotalSales 열을 정렬하는 방법을 보여줍니다:
let pivotTable = spread.getActiveSheet().pivotTables.get("PivotTable");
var sortInfo = {
sortType: GC.Pivot.SortType.desc,
customSortCallback: (fieldItemNameArray)=>{
alert("sorting from custom callback")
return fieldItemNameArray.sort((a,b)=>b-a);
}
};
pivotTable.sort("TotalSales", sortInfo);