[]
기본적으로 PivotEngine은 itemsSource 속성에서 가져온 원시 데이터를 기반으로 필드를 자동으로 생성합니다.
일부 경우에는 해당 기능을 끄고 필드를 명시적으로 지정하고 싶을 수 있습니다. 예를 들어, 다음과 같이 할 수 있습니다:
데이터 소스에서 사용 가능한 필드 중 일부만 포함
필드 속성을 사용자 정의
여러 필드를 동일한 바인딩을 기반으로 생성 (필드 복제)
일부 경우에는 서로 다른 집계를 사용하여 값을 요약하고 싶을 수 있습니다. 예를 들어, 동일한 보기에서 총합과 평균 값을 표시하고 싶을 수 있습니다. 또는 누적 합계, 차이 또는 백분율과 같은 계산된 값 옆에 값을 표시하고 싶을 수 있습니다.
이 작업을 수행하려면 동일한 binding 과 다른 aggregate 또는 showAs 값으로 여러 필드를 생성하십시오.
let ng = new wjOlap.PivotEngine({
autoGenerateFields: false, // turn off auto-generation
fields: [ // specify the fields we want (no date)
{ binding: 'buyer', header: 'Person' },
{ binding: 'type', header: 'Category' },
{ binding: 'amount', header: 'Total', format: 'c0', aggregate: 'Sum' },
{ binding: 'amount', header: 'Average', format: 'c0', aggregate: 'Avg' },
],
itemsSource: getData(10000), // raw data
showRowTotals: 'Subtotals',
valueFields: ['Total', 'Average'], // show total and average
rowFields: ['Person', 'Category'] // by Person and Category
});
PivotPanel 컨트롤을 사용하면 사용자가 동일한 소스 필드를 값 목록에 여러 번 드래그하여 클론 필드를 생성할 수 있습니다.
일부 경우에는 차원 값을 여러 가지 방법으로 사용하고 싶을 수 있습니다. 예를 들어, 날짜의 연도 및/또는 분기에 따라 데이터를 나누고 싶을 수 있습니다.
이 작업을 수행하려면 동일한 binding 과 다른 format 값을 가진 여러 필드를 생성하세요.
let ng = new wjOlap.PivotEngine({
autoGenerateFields: false, // turn off auto-generation
fields: [ // specify the fields we want (no date)
{ binding: 'date', header: 'Year', format: 'yyyy', width: 80 },
{ binding: 'date', header: 'Quarter', format: '"Q"q', width: 80 },
{ binding: 'buyer', header: 'Person' },
{ binding: 'type', header: 'Category' },
{ binding: 'amount', header: 'Amount', format: 'c0', aggregate: 'Sum' },
],
itemsSource: getData(10000), // raw data
showRowTotals: 'Subtotals',
valueFields: ['Amount'], // show amount spent
rowFields: ['Year', 'Quarter'] // by Year and Quarter
});
PivotField 객체를 데이터 항목의 하위 속성에 바인딩할 수 있습니다.
예를 들어, 아래의 이 예제에서 데이터는 네 개의 하위 속성을 가진 'emotion' 멤버를 가지고 있습니다. PivotEngine 은 각각에 바인딩 문자열 'emotion.happiness', 'emotion.fear' 등을 사용하여 바인딩되는 필드를 가지고 있습니다.
let theEngine = new wjOlap.PivotEngine({
autoGenerateFields: false,
fields: [
{ binding: 'country', header: 'Country', width: 90 },
{ binding: 'product', header: 'Product'},
{ header: 'Emotion', subFields: [
{ binding: 'emotion.happiness', header: 'Happiness', dataType: 'Number' },
{ binding: 'emotion.surprise', header: 'Surprise', dataType: 'Number' },
{ binding: 'emotion.fear', header: 'Fear', dataType: 'Number' },
{ binding: 'emotion.disgust', header: 'Disgust', dataType: 'Number' }
]}
],
rowFields: ['Product'],
valueFields: ['Happiness', 'Surprise'],
itemsSource: getData(1000)
});