정렬
라벨 정렬, 값 기준 정렬, fallback 정렬 설정 방법입니다.
행·열 차원의 항목 순서는 필드별 정렬 옵션과 축 전체에 적용되는 fallback 정렬 규칙을 통해 설정합니다. 값 필드의 집계 방식은 집계 함수를, 필드 배치는 필드 구성을 참고하세요.
필드 정렬 (설정)
rows · columns 항목의 sort 속성에 IPivotFieldSort를 지정합니다.
fields: {
rows: [
{ name: '차종', sort: { type: 'label', direction: 'asc' } },
{
name: '브랜드명',
sort: {
type: 'value',
direction: 'desc',
measure: '판매수량',
target: 'total',
},
},
],
columns: ['판매분기'],
values: ['판매수량'],
}IPivotFieldSort
| 속성 | 설명 |
|---|---|
type | 'label' | 'value' | 'custom' | 'callback' (기본 'label') |
direction | 'asc' | 'desc' | 'none' (기본 'asc') |
measure | value 정렬 시 기준 측정값 이름 또는 인덱스 |
target | value 정렬 시 반대 축 위치. string[](라벨 경로) 또는 'total'. 생략 시 Grand Total |
values | custom 정렬 시 항목 순서 배열 |
compareFn | callback 정렬 시 비교 함수 |
type | 동작 |
|---|---|
label | 항목 라벨 기준 |
value | 반대 축의 특정 셀·그룹 소계·총계 값 기준 |
custom | values 배열에 정의된 사용자 지정 순서 |
callback | compareFn(a, b, params) 결과 |
compareFn의 params는 PivotFieldSortParams 타입입니다. (dimensionIndex, labelsA / labelsB, subtotalsA / subtotalsB, axis)
값 기준 정렬 예:
// Grand Total의 판매수량 기준
{ type: 'value', direction: 'desc', measure: '판매수량', target: 'total' }
// 특정 열 그룹(예: Q1) 값 기준
{ type: 'value', direction: 'asc', measure: '판매수량', target: ['Q1'] }사용자 정의 순서 예:
{
type: 'custom',
values: ['소형', '중형', '대형'],
}Fallback 정렬
차원에 setFieldSort로 명시 정렬이 없을 때 축 전체에 적용되는 기본 규칙입니다.
항상 값(value) 기준으로 동작하며, IFallbackFieldSort 형태입니다.
| 속성 | 설명 |
|---|---|
direction | 'asc' | 'desc' | 'none' |
measure | 기준 측정값 필드명 |
target | 반대 축 위치 (string[] | 'total') |
scope | 'unset'(기본) — 명시 정렬이 없는 차원만. 'all' — 명시 direction이 'none'인 차원에도 적용 |
명시 정렬이 있는 차원은 fallback을 무시합니다. (scope: 'all'이고 명시 방향이 'none'인 경우는 예외)
측정값 헤더를 클릭하여 fallback 정렬 상태를 변경할 수 있습니다. 행·열 헤더의 measureClickAction이 'sort' 또는 'selectAndSort'일 때 동작합니다.
tables: {
name: 'sales',
cube: 'sales',
rowHeader: {
measureClickAction: 'selectAndSort',
fallbackSortScope: 'unset',
},
fields: { /* ... */ },
}measureClickAction | 설명 |
|---|---|
'none' | 클릭 동작 없음 |
'select' | 선택만 (기본) |
'sort' | fallback 정렬 토글 (asc → desc → none) |
'selectAndSort' | 선택과 정렬 |
자세한 헤더 옵션은 PivotHeaderOptions를 참고하세요.
화면에서 바꾸기
- 차원 필드·헤더 메뉴 — 오름차순·내림차순(라벨), 값 기준 정렬, 정렬 해제
- 본문·헤더 메뉴 — 열 값 기준 행 정렬, 행 값 기준 열 정렬
- 측정값 헤더 클릭 —
measureClickAction에 따라 fallback 정렬 순환 - 측정값 메뉴 — 기본 값 정렬(fallback) 설정·해제
API로 바꾸기
런타임 정렬은 control.table의 setFieldSort를 사용합니다. Book 페이지에서는 Undo가 포함됩니다.
const table = control.table;
// 라벨 오름차순
table.setFieldSort('차종', { type: 'label', direction: 'asc' });
// 총계 값 기준
table.setFieldSort('브랜드명', {
type: 'value',
direction: 'desc',
measure: '판매수량',
target: 'total',
});
// 정렬 해제
table.setFieldSort('차종', null);
table.getFieldSort('차종');
table.clearAllSorts();Fallback 정렬:
table.setFallbackSort('row', ['판매수량'], 'desc');
table.getFallbackSort('row');설정 로드 시점의 fields.rows[].sort 속성은 테이블이 생성될 때 반영됩니다.
런타임 실행 중에는 updateOption('sort', …) 대신 setFieldSort API 사용을 권장합니다.