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

웹 응용 프로그램에 JavaScript 피벗 테이블을 추가하는 방법 > 블로그 & Tips

본문 바로가기

SpreadJS

블로그 & Tips

웹 응용 프로그램에 JavaScript 피벗 테이블을 추가하는 방법

페이지 정보

작성자 MESCIUS 작성일 2023-11-24 11:02 조회 205회 댓글 0건

본문

피벗 테이블은 가장 강력한 데이터 분석 도구 중 하나로, 사용자가 반복되는 패턴을 더 쉽게 감지할 수 있도록 데이터를 정리합니다.  


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


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


JavaScript 스프레드시트 컴포넌트SpreadJS에는 JavaScript 개발자가 응용 프로그램에서 프로그래밍 방식으로 Excel과 같은 피벗 테이블을 만들거나 최종 사용자가 익숙한 UI를 사용하여 피벗 테이블을 만들 수 있는 피벗 테이블 기능이 있습니다.


자바스크립트 피벗 테이블


온라인 JavaScript 피벗 테이블 데모를 실행하여 SpreadJS의 PivotTable을 시작하는 방법을 알아보세요.


이번 블로그에서는 피벗 테이블과 피벗 테이블에서 파생된 보고서의 모양을 사용자 정의하는 데 유용한 JavaScript 스프레드시트 피벗 테이블 API의 필수 속성 및 기능 몇 가지를 살펴보겠습니다.


1. JavaScript 피벗 테이블 만들기

  • 피벗 레이아웃

  • 피벗 테이블 축소 및 그룹화

  • 피벗 테이블 테마

  • 피벗 스타일

  • 피벗 테이블 AutofitColumn

  • 피벗 테이블 슬라이서

  • 피벗 ContextMenu

  • 피벗 조건부 서식

2. 이점

  • 대화형 데이터 분석
  • FinTech
  • 마케팅
  • 예산 책정 



 

1. JavaScript 피벗 테이블 만들기 


특정 정보를 포함하는 수많은 데이터 행이 있다고 가정해 보겠습니다.


예를 들어 아래 데이터 시트에는 베스트셀러 비디오 게임을 보여 주는 수많은 레코드가 있습니다.

JavaScript 피벗 테이블


우리의 목표는 이러한 Raw 데이터를 보다 유의미한 정보로 요약하는 보고서를 만드는 것입니다.


아래 함수는 JavaScript 응용 프로그램SpreadJS의 PivotTable 클래스 API를 사용하여 프로그래밍 방식으로 피벗 테이블과 필드 추가하는 방법을 보여 줍니다.

function initPivotTable(sheet, tableName) {
    sheet.name("Basic PivotTable");
    sheet.setRowCount(250);
    let pivotTableOptions = {bandRows:true,bandColumns:true};
    // Create Pivot Table
    let pivotTable = sheet.pivotTables.add("PivotTable", tableName, 1, 1, GC.Spread.Pivot.PivotTableLayoutType.tabular, GC.Spread.Pivot.PivotTableThemes.medium14, pivotTableOptions);
    pivotTable.suspendLayout();

    pivotTable.add("Genre", "Genre", GC.Spread.Pivot.PivotTableFieldType.rowField);
    pivotTable.add("Name", "Name", GC.Spread.Pivot.PivotTableFieldType.rowField);
    pivotTable.add("NA_Sales", "NA_Sales", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
    pivotTable.add("EU_Sales", "EU_Sales", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
    pivotTable.add("JP_Sales", "JP_Sales", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
    pivotTable.add("Other_Sales", "Other_Sales", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);
    pivotTable.add("Global_Sales", "Global_Sales", GC.Spread.Pivot.PivotTableFieldType.valueField, GC.Pivot.SubtotalType.sum);

    pivotTable.resumeLayout();
}


이 코드를 적용하면 JavaScript 응용 프로그램에 PivotTable이 다음과 같이 표시됩니다.

JavaScript 피벗 테이블


피벗 테이블 만드는 또 다른 방법은 SpreadJS에서 제공하는 피벗 패널을 사용하는 것입니다.


피벗 패널을 초기화하려면 먼저 HTML 파일에 DOM 요소를 만듭니다.


이 경우 ID가 panel인 DIV입니다.

<body>
    <div class="sample-tutorial">
        <div id="ss" class="sample-spreadsheets"></div>
        <div class="sample-panel">
            <div id="panel"></div>
        </div>
    </div>
</body>


styles.css 파일에서 사이드 패널에 CSS를 적용합니다.


📌 참고: 개발자는 CSS를 통해 피벗 패널의 스타일과 모양을 사용자 정의할 수 있습니다.

.sample-panel {
  float: right;
  width: 300px;
  padding: 12px;
  height: 100%;
  box-sizing: border-box;
  background: #fbfbfb;
  overflow: auto;
}

.gc-panel {
  padding: 10px;
  background-color: rgb(230, 230, 230);
}

#panel {
  position: absolute;
  right: 0;
  width: 300px;
  height: 100%;
  top: 0;
}


그런 다음 SpreadJS의 PivotPanel Constructors(생성자)를 사용하여 패널을 초기화합니다.

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


이제 응용 프로그램은 측면 패널과 함께 SpreadJS PivotTable을 표시합니다.


최종 사용자가 보고서 로직에 따라 필요한 필드를 드래그 앤 드롭할 수 있습니다. 

JavaScript 피벗 패널



 

피벗 레이아웃 


SpreadJS를 사용하면 세 가지 서로 다른 피벗 테이블 레이아웃 중에서 선택하여 다양한 데이터 시각화를 제공할 수 있습니다.


  • 컴팩트 형식
  • 아웃 라인 형식
  • 테이블 형식 형식


기본적으로 피벗 테이블 레이아웃은 컴팩트 형식입니다.


그래도 사용자는 PivotTable Constructors(생성자)를 사용하여 피벗 테이블을 만들 때 레이아웃을 설정하거나 layoutType 함수를 사용하여 레이아웃을 변경할 수 있습니다.


layoutType 함수에는 양식 레이아웃에 해당하는 정수 인수가 있습니다.

0 - 컴팩트, 1 - 아웃 라인, 2 - 테이블

// Set an outline form (1)
pivotTable.layoutType(1);


컴팩트 형식 (0) 


이 레이아웃은 계층 구조의 한 열에 모든 행 필드를 포함합니다.


관련 데이터를 하나의 열에 유지하여 가독성을 최적화합니다.


하지만 데이터를 복사하여 새 워크시트에 붙여 넣으면 추가 분석을 하기가 더 어렵습니다.

JavaScript 피벗 테이블


아웃 라인 형식 (1)


이 레이아웃은 계층 구조를 가지고 있지만 각 행 필드가 피벗 테이블의 개별 열에 있습니다.


필드당 열 하나를 표시하고 필드 헤더를 위한 공간을 제공합니다.


이 양식을 사용하면 각 열에 필드 헤더를 포함하고, 모든 항목 레이블을 반복합니다.


또 추가 분석을 위해 피벗 테이블의 데이터를 새 위치에 재사용할 수 있습니다.


하지만 이 양식은 가로 공간을 사용하므로, 경우에 따라 유용하지 않을 수도 있습니다.

JavaScript 피벗 테이블


테이블 형식 (2)


이 레이아웃은 계층 구조를 가지고 있고 각 행 필드가 피벗 테이블의 개별 열에 있습니다.


다음 열의 항목이 현재 항목의 한 행 아래에 표시되므로, 모든 그룹의 맨 위에 소계를 표시할 수 있습니다.


이 기존 테이블 형식에는 각 열에 필드 헤더가 포함되어 있습니다.


따라서 모든 항목 레이블을 반복할 수 있고 추가 분석을 위해 피벗 테이블 데이터를 새 위치에 재사용할 수 있습니다.


이 레이아웃의 단점은 가로 공간을 사용하며 소계를 그룹 맨 위에 표시할 수 없다는 것입니다.

JavaScript 피벗 테이블



 

피벗 테이블 축소 및 그룹화 


SpreadJS에서는 데이터를 더 쉽게 볼 수 있도록 피벗 테이블 그룹화 및 축소를 지원합니다.


사용자는 collapse 메서드를 사용하여 필드 이름별로 피벗 테이블의 지정된 필드에 대한 접기 정보를 설정할 수 있습니다.


또한 날짜, 숫자 및 텍스트 필드를 그룹화할 수 있습니다.


아래에서는 필드를 축소하는 방법과 groupungroup 메서드를 사용하여 SpreadJS에서 지원하는 다양한 그룹화 및 그룹 해제 기법을 구분하는 방법을 보여 줍니다.


Collapse (축소)


필드를 축소하려면 SpreadJS의 collapse 메서드를 사용하고 대상 필드의 이름과 축소되는 항목의 이름을 지정합니다.


아래 예에서는 축소된 다양한 수신 영역을 보여줍니다.

spread.suspendPaint();
    let isCollapse = false;
    if(e.target.checked){
        isCollapse = true;
    }
    pivotTable.collapse("region","Africa",isCollapse);
    pivotTable.collapse("region","Asia",isCollapse);
    pivotTable.collapse("region","Australia",isCollapse);
    pivotTable.collapse("region","Europe",isCollapse);
    pivotTable.collapse("region","North America",isCollapse);
    pivotTable.collapse("region","South America",isCollapse);
    spread.resumePaint();
});


선택하면 지정된 필드가 모두 축소되어 데이터를 더 쉽게 볼 수 있습니다.

JavaScript 축소


날짜 그룹화


SpreadJS에서 날짜를 그룹화할 때 시간, 일, 분기, 연도 등을 기준으로 DateGroupType을 지정할 수 있습니다.


예를 들어 분기 및 연도별로 날짜를 그룹화하려는 경우 dateGroups를 사용하여 다음과 같이 새 groupInfo를 초기화할 수 있습니다.

let groupInfo = { originFieldName: "date", dateGroups: [{ by: GC.Pivot.DateGroupType.quarters }, { by: GC.Pivot.DateGroupType.years }] };
pivotTable.group(groupInfo);
pivotTable.add("Years", "Years", GC.Spread.Pivot.PivotTableFieldType.columnField);


날짜 그룹을 해제하면 동일한 모든 날짜가 제거되고 원본 필드는 일반 날짜로 돌아갑니다.


텍스트 그룹화


사용자는 특정 테스트 항목을 그룹화하여 나머지 데이터와 구별하고 싶을 수도 있습니다.


이 작업을 수행하기 위해 사용자는 텍스트 값 그룹을 만들어야 합니다.


텍스트 그룹을 추가하면 새 필드가 생성됩니다.  


이 필드의 이름은 groupInfo.textGroup에서 지정된 fieldName입니다.


새 필드를 그룹 필드로 사용할 수 있습니다.


이 예에서는 새 그룹이 열 필드로 추가되는 것을 보여 줍니다.

let groupInfo = { originFieldName: "country",textGroup: {
    fieldName:"country1",
    groupItems:{
        group1:["Spain","China","Australia","Egypt"],
        group2:["Germany","Republic of Korea","South Africa"]
    }
} };
pivotTable.group(groupInfo);
pivotTable.add("country1", "country1", GC.Spread.Pivot.PivotTableFieldType.columnField);


텍스트 그룹을 해제할 때 필드가 제거됩니다.


숫자 그룹화


SpreadJS에서 숫자를 그룹화하면 숫자 그룹이 추가됩니다.


groupInfo에 지정된 원본 필드는 사용할 그룹 필드로 변경됩니다.


숫자 그룹화는 다음과 같은 모습입니다.

let groupInfo = { originFieldName: "id",numberGroup: { by: 100 } };
pivotTable.group(groupInfo);


숫자 그룹을 해제하면 필드가 일반 숫자 필드로 돌아갑니다.



 

피벗 테이블 테마 


SpreadJS의 PivotTable은 사전 정의된 테마 85개(Light 29개, Medium 28개, Dark 28개)를 제공합니다.


피벗 테이블을 추가할 때 피벗 테이블을 적용하거나, 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");


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


SpreadJS의 온라인 데모를 실행하여 직접 확인해 보세요!

피벗 테이블 패널 테마
 


  


피벗 스타일


피벗 테이블 스타일을 적용하여 특정 데이터를 강조 표시할 수 있습니다.


스타일 메서드를 사용하면 행, 열, 값 및 레이블 필드에 스타일을 적용할 수 있습니다.


예를 들어 다음 코드 조각은 값 필드에 스타일을 적용합니다.

// Get the pivot area
let labelPivotArea = {
    dataOnly: true,
    references: [{
      fieldName: "Values",
      items: ["Global_Sales", "NA_Sales"]
    }]
};

// Create style
let style = new GC.Spread.Sheets.Style();
style.backColor = "#82bc00";

// Set pivot style
pivotTable.setStyle(labelPivotArea, style);


이 코드는 값 필드 'Global_Sales', 'JP_Sales' 및 'NA_Sales'를 강조 표시합니다.

JavaScript 피벗 테이블


이 지원을 통해 JavaScript 개발자는 특정 피벗 스타일 필드에 자체 규칙, 스타일 및 서식을 사용자 정의하고 적용할 수 있습니다.


자세한 내용은 SpreadJS의 온라인 피벗 스타일 데모를 확인해 주세요.



  

피벗 테이블 AutofitColumn 


SpreadJS의 피벗 테이블은 필드에서 가장 긴 값을 수용하도록 피벗 테이블의 열 너비를 조정하는 AutofitColumn 함수를 제공합니다.


이 함수는 긴 텍스트 기반 필드를 작업할 때 유용한 기능이며 편리합니다.

// Auto fit Pivot Table columns
pivotTable.autoFitColumn();


아래의 GIF는 이 함수의 동작을 보여줍니다. 페이지가 다시 로드되면 autoFitColumn 함수가 호출됩니다.

피벗 테이블 패널 AutoFit



  

피벗 테이블 슬라이서 


피벗 테이블 슬라이서는 사용자가 피벗 테이블 내에서 데이터를 필터링하고 조작할 수 있는 대화형 시각적 컨트롤입니다.


날짜, 카테고리, 기타 관련 치수 등 특정 기준을 선택하여 피벗 테이블에 표시되는 데이터의 범위를 좁힐 수 있는 사용자 친화적 방법을 제공합니다.


사용자는 기본 피벗 테이블 구조를 수정하지 않고 슬라이서를 사용하여 데이터 하위 집합을 신속하게 분석하고 탐색할 수 있습니다.


SpreadJS는 Item Slicer(항목 슬라이서)Timeline Slicer(타임라인 슬라이서)를 모두 지원합니다.

PivotTable 항목 슬라이서PivotTable 타임라인 슬라이서
PivotTable 항목 슬라이서PivotTable 타임라인 슬라이서


SpreadJS의 JavaScript 슬라이서 데모를 실행하여 슬라이서를 직접 사용해 보시길 바랍니다.



  

피벗 컨텍스트 메뉴


SpreadJS는 사용자가 피벗 테이블에서 다양한 작업을 쉽게 수행할 수 있는 피벗 컨텍스트 메뉴를 제공합니다.


사용자는 이 기능을 사용하여 정렬하고, 필드 헤더를 재정렬하고, 필드 값을 확장하거나 축소하여 컨트롤을 개인화할 수 있습니다.


피벗 ContextMenu는 피벗 테이블 데이터의 모양을 수정할 수 있는 사용자 친화적이고 간결한 인터페이스를 제공합니다.


피벗 테이블의 여러 부분에서 작업을 실행한 다음 마우스 오른쪽 버튼을 클릭하면 SpreadJS는 상황에 맞는 컨텍스트 메뉴 옵션을 제공합니다. 


다음은 몇 가지 JavaScript 피벗 테이블 컨텍스트 메뉴입니다.

 페이지 영역

 헤더 영역

React Pivot Table

React Pivot Table

 데이터 영역

 총합계 영역

React Pivot Table

React Pivot Table


사용자는 데이터 영역 또는 총합계 영역의 컨텍스트 메뉴에서 '값 필드 설정...' 옵션을 선택해 대화 상자 창을 엽니다.


지정된 형식 또는 사용자 지정 형식을 사용하여 값의 서식을 지정할 수 있습니다.

값 필드 설정



 

피벗 조건부 서식 


조건부 서식은 데이터 필드를 빠르게 강조 표시하고, 이상값을 더 쉽게 식별하거나 결과를 구체화할 수 있는 강력한 도구입니다.


피벗 영역에서 조건부 서식 규칙을 유연하게 적용, 검색 및 제거할 수 있습니다.


이러한 규칙은 PivotTable 레이아웃을 변경하는 경우에도 계속 유효합니다.


addConditionalRule 메서드를 사용하여 SpreadJS의 피벗 테이블에 조건부 서식을 적용할 수 있습니다.


SpreadJS의 온라인 데모를 확인해 보세요!


이 데모는 셀 값에 따라 다양한 색 서식을 지원합니다.

녹색이 가장 낮고 빨간색이 가장 높음

JavaScript PivotTable



 

2. 이점


SpreadJS를 사용하여 응용 프로그램에 피벗 테이블을 추가하는 방법에 대해 살펴보았습니다.


이를 통해 얻을 수 있는 몇 가지 이점을 살펴보겠습니다.



대화형 데이터 분석 


몇 줄의 코드를 사용하거나 디자이너에서 몇 번의 클릭만으로 SpreadJS 피벗 테이블은 몇 시간이 걸리는 일을 불과 몇 분으로 단축합니다.


수동으로 계산 필드, 그룹 및 필터를 만드는 경우 잠재적 오류가 줄어들기 때문에 나머지 작업을 SpreadJS 피벗 테이블에 맡기면 됩니다.


데이터 분석을 수동으로 작성하는 것보다 데이터를 효율적으로 해석하고 분석하는 데 더 많은 시간을 투자하세요!


피벗 테이블 패널을 사용하면 여러 영역 간에 필드를 원활하게 드래그 앤 드롭할 수 있고 피벗 테이블에 데이터가 표시되는 방식을 사용자 정의할 수 있습니다.

대화형 데이터 분석



제품 매출 검토 


수천 개의 레코드, 제품, 사무실 및 직원 데이터의 경우 매출 수치를 보고하는 것은 까다로울 수 있습니다.


때문에 SpreadJS 피벗 테이블이 유용하게 사용됩니다.


피벗 테이블은 보다 이해하기 쉬운 용어로 많은 양의 로우(Raw) 데이터를 요약할 수 있습니다.


예를 들어 SpreadJS 피벗 테이블을 사용하면 특정 기간에 특정 개입의 매출을 볼 수 있습니다.


대상에 대한 실제 매출 수치를 쉽게 보고하고, 직원 수수료 수준을 분석하고, 리셀러 거래를 확인할 수 있습니다.


여러 필드 및 필터를 사용해 즉시 매출 수치를 집계하여 필요한 데이터를 깔끔하고 간결하게 표시할 수 있습니다.


이 경우 여러 매장의 매출 데이터를 가져와, 프로모션을 기준으로 필터링한 다음 여러 판매 채널로 구분하여 매출 데이터 분석을 가져올 수 있습니다.

매출 피벗 테이블



FinTech 


SpreadJS 피벗 테이블을 사용하면 손익계산서, 대차대조표를 쉽게 만들 수 있습니다.


또한 총액 및 운영 소계를 비롯하여 수익 소계를 강조할 수도 있습니다.


소스 데이터에서 사용할 수 없는 사용자 정의 그룹화를 만들어 필요한 데이터를 정확하게 제공할 수 있습니다.


많은 양의 데이터를 사용자 정의 가능한 간결한 테이블로 요약할 수 있는 계산 필드를 포함하고 있습니다.

재무 피벗 테이블



마케팅 


SpreadJS 피벗 테이블을 사용하면 다양한 KPI를 통해 기업의 성장을 추적할 수 있습니다.


또한 유료 광고 캠페인, 소셜 미디어 참여, 클릭율, 전환율 등 여러 마케팅 전략 및 입력을 집중적으로 설명하는 테이블을 만들 수도 있습니다.


지역, 기간, 채널 별로 광고 캠페인 분석을 시각화하고 유익한 피벗 테이블에 결과 분석을 제공합니다.


예를 들어, 제품 카테고리를 확인하여 고객이 가장 많이 구입하는 카테고리를 확인할 수 있습니다.


해당 프로모션에 따라 주문을 필터링하면 프로모션의 효과를 보고하는 데 도움이 됩니다.

마케팅 피벗 테이블



예산 책정 


SpreadJS 피벗 테이블은 예산을 간단하게 만들 수 있습니다.


세부 피벗 테이블을 만들어 예상 가치 대비 실제 비용 추적 등 비즈니스의 고유한 측면에 대한 예산을 비교하세요.


단순한 인터페이스를 통해 월별, 카테고리별 또는 기타 필드별 여러 스토어와 제품 라인의 지출을 요약합니다.  


또 요구 사항에 따라 필드를 쉽게 드래그 앤 드롭할 수 있습니다.


매장 지출을 분석 및 분류하고 전년 대비 값을 비교하세요.

예산 피벗 테이블




  

JavaScript 스프레드시트 피벗 테이블을 만들고 사용자 정의하는 방법을 배우는 데 도움이 되셨기를 바랍니다.


이 글은 JavaScript 스프레드시트 컴포넌트인 SpreadJS 전체 기능 중 극히 일부에 불과합니다.


문서에서 사용 가능한 많은 기능을 살펴보세요!


또, 온라인 데모를 실행하여 기능의 실제 기능을 확인하고 샘플 코드와 상호 작용 해 보시길 바랍니다.


스프레드시트 컴포넌트를 JavaScript 응용 프로그램에 통합하면 사용자의 경험을 맞춤 설정하고 익숙한 스프레드시트 기능을 제공할 수 있습니다.



 


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

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

댓글목록

등록된 댓글이 없습니다.

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

태그1

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