필터
북 공통 필터(드롭다운·트리·슬라이더 등)와 페이지 필터 필드, 큐브 필터를 설명합니다.
RealPivot2에서 필터는 적용 범위에 따라 나뉩니다.
집계 전 데이터를 축소하는 큐브·슬라이서 필터와 특정 페이지 전용 필터 필드를 목적에 맞게 구분하여 사용합니다.
필터 종류
| 종류 | 설정 위치 | 범위 |
|---|---|---|
큐브 filters | Cube 옵션 | 해당 큐브 전체 |
큐브 slicers + Book filterSelectors | Cube · Book | 북 공통 UI로 큐브 슬라이서 조작 |
tables[].fields.filters | 페이지 fields | 해당 페이지에만 적용 |
filterSelectors— 북 공통 필터 UI로, 큐브에 정의한slicers를 가리킵니다.fields.filters— 해당 페이지의 필터 필드. 컬럼 바에서 멤버를 고릅니다.
Book 개요는 피벗 북(Book)을, 필드 배치는 필드 구성을 참고하세요.
큐브 필터와 슬라이서
초기 필터는 Cube 옵션의 filters 항목에 설정(지정)할 수 있습니다.
화면에서 선택하는 공통 필터를 사용하려면 큐브에 **slicers**를 먼저 정의해야 합니다.
const cm = createCubeManager(ds, [
{
name: 'sales',
table: 'sales',
schema: { /* dimensions, measures */ },
slicers: [
{ name: '차종', dimension: '차종', type: 'list' },
{ name: '판매날짜', dimension: '판매날짜', type: 'range' },
{ name: '판매기간', dimension: '판매날짜', type: 'date' },
],
},
]);slicers 속성 | 설명 |
|---|---|
name | 슬라이서 이름. filterSelectors의 slicer 속성이 이 이름을 가리킵니다 |
dimension | 필터할 큐브 차원 |
type | 'list' | 'range' | 'date' (기본 'list') |
슬라이서 type과 셀렉터 type을 맞추는 예입니다.
슬라이서 type | 셀렉터 type 예 |
|---|---|
list | button · dropdown · tree |
range | slider |
date | timeline |
런타임에서 큐브에 직접 필터를 넣을 수도 있습니다. (데이터와 큐브)
const cube = cm.get('sales');
cube.addFilter({ dimension: '국가', values: ['한국'] });자주 쓰는 큐브 API입니다.
| API | 설명 |
|---|---|
addFilter / filterAll | 필터 추가·일괄 설정 |
removeFilter / clearFilters | 제거·전체 해제 |
getFilters | 현재 필터 조회 |
addSlicer / getSlicer / applySlicers | 슬라이서 관리 |
자세한 시그니처는 PivotCube를 참고하세요.
북 공통 필터 (filterSelectors)
filterSelectors는 화면에 슬라이서 UI를 표시하는 설정 옵션입니다.
배열 또는 객체 하나로 지정할 수 있습니다.
const config = {
filterSelectors: [
{ type: 'dropdown', cube: 'sales', slicer: '차종', position: 'both' },
{ type: 'button', cube: 'sales', slicer: '브랜드명', position: 'header' },
{ type: 'tree', cube: 'sales', slicer: '연료', position: 'panel' },
{ type: 'slider', cube: 'sales', slicer: '판매날짜', position: 'both' },
{ type: 'timeline', cube: 'sales', slicer: '판매기간', position: 'panel' },
],
tables: {
name: 'sales',
cube: 'sales',
fields: {
rows: ['국가'],
values: ['판매수량'],
},
},
};| 속성 | 설명 |
|---|---|
type | 'button' | 'dropdown' | 'tree' | 'timeline' | 'slider' |
cube | 대상 큐브 name |
slicer | 큐브 slicers에 등록한 이름 |
position | 'header' | 'panel' | 'both' — 필터바 및 인스펙터 내 UI 표시 위치 (기본값 'panel') |
tables | 적용할 페이지 name 목록. 생략 시 전체 페이지 |
visible · label · description 등 | 표시 관련 옵션 |
표시 위치:
filterBar(상단) —position값이'header'또는'both'인 경우- 인스펙터 필터 패널 —
position값이'panel'또는'both'인 경우
필터바·인스펙터 자체 on/off는 Book의 filterBar · inspector 설정으로 제어합니다. (피벗 북)
옵션 트리는 Config · PivotBookConfiguration을 참고하세요.
페이지 필터 필드 (fields.filters)
페이지마다 두는 필터 필드입니다. 인스펙터 필드 패널의 필터 섹션에 배치하거나, 설정으로 지정합니다.
fields: {
filters: ['국가', { name: '연료' }],
rows: ['차종'],
values: ['판매수량'],
}항목은 PivotFilterFieldOptions입니다. name · width · headerWidth를 쓸 수 있습니다.
설정이 완료되면 컬럼 바 영역에 필터 필드 형태로 표시됩니다. 멤버를 선택한 뒤 적용하면 해당 페이지 집계에 반영됩니다.
런타임
const table = control.table;
const field = table.fields.getFilterField('국가');
table.setAggFilter(field, ['한국', '미국']);
table.getAggFilter(field);
table.isAggFiltered(field);
// 필터 해제
table.setAggFilter(field, null);필드를 축에 넣거나 빼려면 Book API를 사용합니다. Undo가 포함됩니다.
book.addFilterField(table, '국가');
book.removeField(field);