! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

피벗 테이블과 JavaScript 스프레드시트로 멋진 보고서 만들기 > 온라인 스터디

본문 바로가기

고급기능 피벗 테이블과 JavaScript 스프레드시트로 멋진 보고서 만들기

페이지 정보

작성자 GrapeCity 작성일 2022-06-10 14:56 조회 719회 댓글 0건

본문

반복되는 패턴을 더 쉽게 예측할 수 있도록 데이터를 구성하기 위한 강력한 데이터 분석 도구로서의 피벗 테이블의 중요성에 이의를 제기할 사람은 아무도 없을 것입니다.


피벗 테이블은 큰 데이터 그룹에서 사용자 정의된 표를 만드는 데 유용합니다.


피벗 기능을 사용하여 표에 저장된 데이터를 손쉽게 요약, 정렬, 재구성, 그룹화, 계수하거나 합계 또는 평균을 산출할 수 있습니다.


SpreadJS v14.1(서비스 팩 1) 릴리스에서 이 기능을 SpreadJS에 추가했습니다.


이 새로운 기능을 어떻게 사용할 수 있는지 살펴보려면 SpreadJS와 함께 피벗 테이블을 사용하는 방법 블로그를 참조하십시오. 이 블로그에서는 피벗 테이블과 피벗 테이블에서 파생된 보고서의 모양을 사용자 정의하는 데 유용한 SpreadJS 피벗 테이블의 가장 중요한 속성 몇 가지를 살펴봅니다.



피벗 테이블 만들기


특정 정보를 포함하는 수많은 데이터 행이 있다고 가정해 보십시오. 예를 들어, 아래 데이터 시트에는 자동차 판매 회사의 특정 연도 매출을 보여 주는 레코드가 있습니다.

PivotSource


목표는 이러한 원시 데이터를 보다 통찰력 있는 정보로 요약하는 보고서를 만드는 것입니다. 이 작업을 위해 SpreadJS 피벗 테이블을 사용할 수 있습니다.


다음은 JavaScript 응용 프로그램에 피벗 테이블을 추가하는 방법을 보여 주는 예입니다.

//tablename is the table from where we get our datasource (you can use range as well)
​
let pivotTable = sheet.pivotTables.add("PivotTable", tableName, 1, 1,/*pivot layout*/,/*pivot theme*/,/*pivot options*/);
pivotTable.suspendLayout();
//row fields
pivotTable.add("salesperson", "Salesperson", GC.Spread.Pivot.PivotTableFieldType.rowField);
pivotTable.add("car", "Cars", GC.Spread.Pivot.PivotTableFieldType.rowField);
//column fields
pivotTable.add("date", "Date", GC.Spread.Pivot.PivotTableFieldType.columnField);
let groupInfo = { originFieldName: "date", dateGroups: [{ by: GC.Pivot.DateGroupType.quarters }] };
pivotTable.group(groupInfo);
//value fields
pivotTable.add("total", "Totals", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
pivotTable.resumeLayout();



또는 SpreadJS에서 사용할 수 있는 피벗 패널을 통해 피벗 테이블을 만들 수도 있습니다.

//code to add pivot panel in the working spreadsheet.
var panel = new GC.Spread.Pivot.PivotPanel("myPivotPanel", myPivotTable, document.getElementById("panel"));


그런 다음 피벗 테이블에 행, 열, 필터 또는 값 필드를 추가하는 것은 Excel에서와 같습니다. 보고서 로직에 따라 필요한 필드를 끌어서 놓습니다.

CreatePivotTable


위 코드에서는 피벗 테이블을 초기화할 때 위치, 데이터 소스, 이름 외에도 매개 변수 세 개를 추가할 수 있다는 내용을 살펴보았습니다. 해당 매개 변수는 다음과 같습니다.

  • 피벗 레이아웃

  • 피벗 테마

  • 피벗 옵션


아래에서는 피벗 테이블의 모양을 개선하는 데 사용되는 각 매개 변수에 대해 설명합니다.



피벗 레이아웃


데이터를 표시하기 위해 필요한 것과 데이터를 표시하려는 방법에 따라 SpreadJS용으로 제공되는 여러 레이아웃을 사용할 수 있습니다. 단일 함수를 사용하여 데이터를 다르게 시각화할 수 있습니다.


사용할 수 있는 피벗 테이블의 레이아웃은 다음과 같이 세 가지입니다.

  • 압축 형식(0) - 모든 행 필드가 계층 구조에서 하나의 열에 포함됩니다.


이 레이아웃 형식은 관련 데이터를 하나의 열에 넣어 가독성을 최적화하지만 데이터를 복사하여 새 워크시트에 붙여넣는 경우 추가 분석이 어렵습니다.


CompactForm


  • 아웃 라인 형식(1) - 계층 구조를 가지고 있지만 각 행 필드가 피벗 테이블의 개별 열에 있습니다. 필드당 열 하나를 표시하고 필드 헤더를 위한 공간을 제공합니다.


이 형식을 사용하면 각 열에 필드 헤더를 포함하고, 모든 항목 레이블을 반복하고, 추가 분석을 위해 피벗 테이블의 데이터를 새 위치에 재사용할 수 있습니다.


그러나 이 형식은 가로 공간을 너무 많이 차지해 경우에 따라 사용하는 것이 적절하지 않을 수 있습니다.

OutlineForm


  • 표 형식(2) - 계층 구조를 가지고 있고 각 행 필드가 피벗 테이블의 개별 열에 있습니다. 다음 열의 항목이 현재 항목의 한 행 아래에 표시되므로 모든 그룹의 맨 위에 소계를 표시할 수 있습니다.


이 전통적인 표 형식은 사용자에게 매우 유용합니다.


여기에는 각 열에 필드 헤더가 포함되어 있어 모든 항목 레이블을 반복할 수 있고 추가 분석을 위해 피벗 테이블 데이터를 새 위치에 재사용할 수 있습니다. 이 레이아웃의 단점은 가로 공간을 너무 많이 차지하고 소계를 맨 위에 표시하려는 경우 그룹 맨 위에 표시할 수 없다는 것입니다.


TabularForm


피벗 테이블의 레이아웃을 변경하는 데 사용된 함수에는 형식 레이아웃에 해당하는 정수 인수가 있습니다(0 - 압축, 1 - 아웃 라인, 2 - 표).

pivotTable.layoutType(type);


기본 레이아웃은 아웃 라인 형식입니다.



피벗 테이블 테마


피벗 테이블은 밝은 테마, 보통 테마, 어두운 테마의 3가지 테마 유형을 지원하고, 총 85가지 종류의 다른 테마가 지원됩니다.


피벗 테이블 초기화 시 피벗 테이블 테마를 추가할 수 있고, 테마는 네 번째 인수이거나 .theme() 함수를 사용할 수 있습니다.

let pivotTable = sheet.pivotTables.add("PivotTable", table.name(), 0, 0, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.medium2);
//pivotTable.theme(GC.Spread.Pivot.PivotTableThemes.dark2);
//pivotTable.theme("dark2");


적절한 테마를 선택하면 피벗 테이블의 모양이 개선되고 보고서를 최종적으로 받는 사람에게 보다 전문적인 데이터 프레젠테이션을 제공할 수 있습니다.


PivotThemes


피벗 옵션


SpreadJS에서는 여러 가지 설정을 사용하여 사용자 정의된 특정 매개 변수로 표준 PivotTable 프레젠테이션을 수정할 수 있습니다. 피벗 테이블을 추가할 때 피벗 모양의 여러 측면을 결정하는 매개 변수 그룹(예: 합계, 및 소계 위치, 필터, 도구 설명 표시 여부 등)을 추가할 수도 있습니다.


아래 코드는 피벗 테이블에 사용 가능한 시각화 옵션을 수정할 수 있는 개체 매개 변수를 추가하는 방법을 보여 줍니다.

let option = {
       allowMultipleFiltersPerField: true, //whether multiple filters can be used in one field
       insertBlankLineAfterEachItem: true, //whether a blank row should be inserted at end of each item
       grandTotalPosition: GC.Spread.Pivot.GrandTotalPosition.row, //show the grand total in the row, column, or both
       subtotalsPosition: GC.Spread.Pivot.SubTotalsPosition.top, //show subtotal top, bottom, or not
       displayFieldsInPageFilterArea: GC.Spread.Pivot.DisplayFields.downThenOver, //display the page area fields first over then down or first down then over
       reportFilterFieldsPerColumn: 1, //the number of report filter fields per column
       bandRows:true, //show banded rows or not
       bandColumns: true, //show banded columns or not
       showRowHeader: true, //show row header styles or not
       showColumnHeader: true, //show column header styles or not
       showDrill: true, //show expand/collapse button or not
       showMissing: true, //show missing caption or not
       showToolTip: true, //show tool tip or not
       missingCaption: false, //replace empty cell in content area to custom string or number
       fillDownLabels: false, //show repeat label items or not
       repeatAllItemLabels: false, //show repeat label items or not
       rowLabelIndent: 4, //set the indent of each level of title in compact layout
       mergeItem: false //merge and center cells with labels
  };
​
let pivotTable = sheet.pivotTables.add("PivotTable", table.name(), 0, 0, GC.Spread.Pivot.PivotTableLayoutType.outline, GC.Spread.Pivot.PivotTableThemes.medium2, option);



피벗 테이블 AutofitColumn


AutofitColumn 함수는 피벗 테이블 레이아웃을 조정하는 데 사용되므로, 더 나은 모양입니다. 가장 긴 값을 필드에 입력할 수 있도록 열 너비를 조정합니다.


전반적으로 이 함수는 유용하지만 긴 텍스트 기반 필드를 사용하는 경우에는 불편할 수 있습니다.

pivotTable.autoFitColumn();


다음은 열의 크기를 조정하지 않은 경우 피벗 테이블의 모습을 보여 줍니다.

NoAutoFit


다음은 같은 피벗 테이블에 autoFitColumn() 함수를 적용한 결과입니다.

AutoFit



피벗 상황에 맞는 메뉴


피벗 상황에 맞는 메뉴를 사용하면 최종 사용자가 정렬을 적용하고, 필드 헤더의 순서를 변경하며, 필드 값을 확장 및 축소하여 컨트롤을 사용자 정의할 수 있습니다. 따라서 사용하기 쉬운 압축 UI를 사용하여 피벗 테이블 데이터의 모양을 변경할 수 있습니다.


아래 동영상에서 보이는 것처럼 피벗 테이블 상황에 맞는 메뉴를 사용하면 다음 작업을 수행할 수 있습니다.


  • 피벗 테이블에서 여러 필드 정렬 및 필터링

  • 특정 행, 열 또는 필터 필드 제거

  • 데이터 집합 확장 및 축소

  • 필드 그룹화 및 그룹 해제(예: 날짜를 분기로 그룹화)

  • (Sum, Average, Count 등을 기준으로) 데이터 요약 방법 결정

  • 값을 표시하는 방법 결정(백분율로, 차이로)

  • 주어진 특정 서식 또는 사용자 정의 서식으로 값의 서식 지정

ContextMenu


상황에 맞는 메뉴를 사용하면 수행할 수 있는 작업은 훨씬 더 많지만, 여기서는 피벗 테이블의 시각화를 변경하는 데 주로 사용되는 작업에 대해 집중적으로 살펴보았습니다.



피벗 스타일


피벗 테이블의 셀에 특정 스타일을 추가하려는 경우 setStyle(pivotArea, style) 함수를 사용해 추가할 수 있습니다.


pivotArea - 형식이 지정될 피벗 영역을 알려줍니다.

style - 서식이 지정된 셀의 스타일을 결정합니다.


let style = new GC.Spread.Sheets.Style();
style.backColor = "red";
style.foreColor = "white";
style.font = "16px Arial";
style.formatter = "$ #,##0";
style.hAlign= GC.Spread.Sheets.HorizontalAlign.center;
style.vAlign= GC.Spread.Sheets.VerticalAlign.center;
​
let pivotArea = {
   dataOnly: true, //labelOnly property would assign the style to pivot field labels
   references: [{
       fieldName: "Cars",
       items: ["BMW","Mercedes"]
  },
  {
       fieldName: "Salesperson",
       items: ["Alan","Serena"]
  },
  {
       fieldName: "Qt",
       items: ["Qtr1", "Qtr3"]
  }]
};
pivotTable.setStyle(pivotArea, style);


다음 이미지는 값 필드와 레이블 필드에 할당된 두 가지 다른 스타일을 보여 줍니다.

스타일


특정 레이블 필드에 서식이 지정된 방법을 확인할 수 있으며(밑줄이 있는 녹색 글꼴) 일부 값 필드는 빨간색 배경, 특정 글꼴 설정 및 서식으로 지정되어 있습니다,


마찬가지로 피벗 테이블에서 고유한 규칙 및 스타일을 적용하고 특정 값 또는 레이블 필드의 서식을 지정할 수 있습니다.


피벗 조건부 서식


조건부 서식은 일반적으로 이상값을 쉽게 식별하거나 결과 범위를 좁히기 위해 데이터 필드를 강조 표시하는 데 사용됩니다.


피벗 테이블 레이아웃이 어떻게 변경되더라도 조건부 규칙은 지정된 치수만 따릅니다.

ConditionalFormatting


위 예에서는 영업 사원에게 속한 셀이 규칙에 따라 강조 표시되는 것을 볼 수 있습니다. 특히, 작은 값이 포함된 셀은 배경의 녹색이 더 진해지고 큰 값이 포함된 셀은 배경의 빨간색이 더 진해집니다. 이 작업은 조건부 서식을 통해 수행됩니다.


피벗 테이블에서 조건부 서식을 적용하려면 조건부 서식 ScaleRule 및 서식을 지정하려는 셀이 있는 피벗 테이블의 영역을 결정해야 합니다.


그런 다음 addConditionalRule(area, scaleRule) 함수를 사용하여 서식을 추가합니다.

var scaleRule = new GC.Spread.Sheets.ConditionalFormatting.ScaleRule(11 /* ThreeScaleRule */, 1 /* LowestValue */, 0, "green",
                                                                     0 /* Number */, 2000, "yellow",
                                                                     2 /* HighestValue */, 10000, "red");
pivotTable.addConditionalRule([{ dataOnly: true,
                                   references: [{fieldName: "Salesperson", items:["Alan"]},{fieldName: "Cars"}]
                              }], scaleRule);// add the rule
​
//pivotTable.removeConditionalRule(scaleRule);
// remove the rule


필요한 경우 removeConditionalRule(scaleRule)을 사용하여 조건부 규칙을 제거할 수 있습니다.


피벗 테이블은 큰 상세 데이터 집합을 살펴보고 다른 경우였다면 놓쳤을 수 있는 중요한 패턴 및 추세를 파악할 수 있도록 도와주는 놀라운 도구입니다.


하지만 피벗 테이블을 만든 후에는 기본 서식이 읽기 어렵거나 매력적이지 않다는 사실을 알게 될 수 있습니다. 그러나 위에서 설명한 간단한 단계를 수행하면 피벗 테이블의 시각화를 조정하고 프레젠테이션 및 보고서를 위해 준비할 수 있습니다.


피벗 테이블은 v14.1.0 릴리스에 포함된 SpreadJS의 추가 기능입니다.




지금 바로 SpreadJS를 다운로드하여 직접 테스트해보세요!

 
  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그1

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.