# PivotGrid 컴포넌트 다차원 데이터 분석을 위한 피벗 테이블 컴포넌트입니다. ## 주요 기능 ### 1. 다차원 데이터 배치 - **행 영역(Row Area)**: 데이터를 행으로 그룹화 (예: 지역 → 도시) - **열 영역(Column Area)**: 데이터를 열로 그룹화 (예: 연도 → 분기) - **데이터 영역(Data Area)**: 집계될 수치 필드 (예: 매출액, 수량) - **필터 영역(Filter Area)**: 전체 데이터 필터링 ### 2. 집계 함수 | 함수 | 설명 | 사용 예 | |------|------|---------| | `sum` | 합계 | 매출 합계 | | `count` | 개수 | 건수 | | `avg` | 평균 | 평균 단가 | | `min` | 최소값 | 최저가 | | `max` | 최대값 | 최고가 | | `countDistinct` | 고유값 개수 | 거래처 수 | ### 3. 날짜 그룹화 날짜 필드를 다양한 단위로 그룹화할 수 있습니다: - `year`: 연도별 - `quarter`: 분기별 - `month`: 월별 - `week`: 주별 - `day`: 일별 ### 4. 드릴다운 계층적 데이터를 확장/축소하여 상세 내용을 볼 수 있습니다. ### 5. 총합계/소계 - 행 총합계 (Row Grand Total) - 열 총합계 (Column Grand Total) - 행 소계 (Row Subtotal) - 열 소계 (Column Subtotal) ### 6. 내보내기 CSV 형식으로 데이터를 내보낼 수 있습니다. ## 사용법 ### 기본 사용 ```tsx import { PivotGridComponent } from "@/lib/registry/components/pivot-grid"; const salesData = [ { region: "북미", city: "뉴욕", year: 2024, quarter: "Q1", amount: 15000 }, { region: "북미", city: "LA", year: 2024, quarter: "Q1", amount: 12000 }, // ... ]; ``` ### 날짜 그룹화 ```tsx ``` ### 포맷 설정 ```tsx ``` ### 화면 관리에서 사용 설정 패널을 통해 테이블 선택, 필드 배치, 집계 함수 등을 GUI로 설정할 수 있습니다. ```tsx import { PivotGridRenderer } from "@/lib/registry/components/pivot-grid"; ``` ## 설정 옵션 ### PivotGridProps | 속성 | 타입 | 기본값 | 설명 | |------|------|--------|------| | `title` | `string` | - | 피벗 테이블 제목 | | `data` | `any[]` | `[]` | 원본 데이터 배열 | | `fields` | `PivotFieldConfig[]` | `[]` | 필드 설정 목록 | | `totals` | `PivotTotalsConfig` | - | 총합계/소계 표시 설정 | | `style` | `PivotStyleConfig` | - | 스타일 설정 | | `allowExpandAll` | `boolean` | `true` | 전체 확장/축소 버튼 | | `exportConfig` | `PivotExportConfig` | - | 내보내기 설정 | | `height` | `string | number` | `"auto"` | 높이 | | `maxHeight` | `string` | - | 최대 높이 | ### PivotFieldConfig | 속성 | 타입 | 필수 | 설명 | |------|------|------|------| | `field` | `string` | O | 데이터 필드명 | | `caption` | `string` | O | 표시 라벨 | | `area` | `"row" | "column" | "data" | "filter"` | O | 배치 영역 | | `areaIndex` | `number` | - | 영역 내 순서 | | `dataType` | `"string" | "number" | "date" | "boolean"` | - | 데이터 타입 | | `summaryType` | `AggregationType` | - | 집계 함수 (data 영역) | | `groupInterval` | `DateGroupInterval` | - | 날짜 그룹 단위 | | `format` | `PivotFieldFormat` | - | 값 포맷 | | `visible` | `boolean` | - | 표시 여부 | ### PivotTotalsConfig | 속성 | 타입 | 기본값 | 설명 | |------|------|--------|------| | `showRowGrandTotals` | `boolean` | `true` | 행 총합계 표시 | | `showColumnGrandTotals` | `boolean` | `true` | 열 총합계 표시 | | `showRowTotals` | `boolean` | `true` | 행 소계 표시 | | `showColumnTotals` | `boolean` | `true` | 열 소계 표시 | ## 파일 구조 ``` pivot-grid/ ├── index.ts # 모듈 진입점 ├── types.ts # 타입 정의 ├── PivotGridComponent.tsx # 메인 컴포넌트 ├── PivotGridRenderer.tsx # 화면 관리 렌더러 ├── PivotGridConfigPanel.tsx # 설정 패널 ├── README.md # 문서 └── utils/ ├── index.ts # 유틸리티 모듈 진입점 ├── aggregation.ts # 집계 함수 └── pivotEngine.ts # 피벗 데이터 처리 엔진 ``` ## 사용 시나리오 ### 1. 매출 분석 지역별/기간별/제품별 매출 현황을 분석합니다. ### 2. 재고 현황 창고별/품목별 재고 수량을 한눈에 파악합니다. ### 3. 생산 실적 생산라인별/일자별 생산량을 분석합니다. ### 4. 비용 분석 부서별/계정별 비용을 집계하여 분석합니다. ### 5. 수주 현황 거래처별/품목별/월별 수주 현황을 분석합니다. ## 주의사항 1. **대량 데이터**: 데이터가 많을 경우 성능에 영향을 줄 수 있습니다. 적절한 필터링을 사용하세요. 2. **멀티테넌시**: `autoFilter.companyCode`를 통해 회사별 데이터 격리가 적용됩니다. 3. **필드 순서**: `areaIndex`를 통해 영역 내 필드 순서를 지정하세요.