# 데이터셋 (DataSet)

![데이타샘플 처리 프로세스][datasample-process]

데이터셋은 다양한 설정과 정보를 통해 정의됩니다. 아래에서는 데이터셋과 관련된 각 필드와 설정 옵션에 대한 상세 설명을 제공합니다.

- **이름 (name)**: 데이터셋의 이름을 설정합니다. 이 이름은 데이터셋을 고유하게 식별하는 데 사용됩니다.

- **설명 (description)**: 데이터셋에 대한 설명을 설정합니다. 데이터셋의 목적, 내용 또는 특징을 설명하는 데 사용됩니다.

- **유형 (type)**: 데이터셋의 유형을 설정합니다. 두 가지 옵션 중 하나를 선택할 수 있습니다.

  - **수동 수집 (Manual)**: 사용자가 직접 데이터를 입력하는 데이터셋을 나타냅니다.
  - **자동 수집 (Automatic)**: 센서와 같은 자동화된 방법을 통해 데이터가 수집되는 데이터셋을 나타냅니다.

- **데이터 키셋 (dataKeySet)**: 데이터 키셋 마스터 페이지에서 등록한 항목을 선택하여 적용합니다. 데이터 키셋은 데이터셋에서 사용될 데이터 필드 및 속성을 정의합니다.

- **파티션 키 (partitionKeys)**: 데이터를 분할하고 구성하는 데 사용되는 파티션 키를 설정합니다. 파티션 키는 데이터를 논리적으로 그룹화하고 저장하며, 데이터를 관리하고 검색하는 데 효율성을 제공합니다. 파티션 키를 활용하면 데이터를 빠르게 필터링하고 쿼리할 수 있습니다.

- **스케줄 (schedule)**: 데이터 입력 주기를 설정합니다. 입력 주기가 설정되면 해당 주기마다 데이터 입력 작업이 수행됩니다.

- **타임존 (timezone)**: 스케줄이 적용될 기준 타임존을 설정합니다. 시간대 변환과 관련된 작업에 사용됩니다.

- **정상데이타 시나리오 (normalScenario)**: 정상데이타가 생성되었을 때, 시작되는 시나리오를 설정합니다. 데이타 후속 처리가 필요한 경우에 사용됩니다.

- **이상치 시나리오 (outlierScenario)**: 정상범위를 벗어난 데이타가 생성되었을 때, 시작되는 시나리오를 설정합니다. 데이타 후속 처리가 필요한 경우에 사용됩니다.

- **검토 결재선 (reviewApprovalLine)**: 정상데이타가 생성되었을 때, 데이타 검토과정의 결재선을 설정합니다. 검토 작업이 필요한 경우에만 적용됩니다.

- **이상치 결재선 (outlierApprovalLine)**: 정상범위를 벗어난 데이타가 생성되었을 때, 데이타 조치 과정의 결재선을 설정합니다.

- **관리자 역할 (supervisoryRole)**: 데이터셋의 관리자 역할을 설정합니다. 관리자는 수집된 데이타의 검토와 이상치 데이타 검토를 담당한다. 또한, 데이타 수집 작업을 할당하는 권한을 가진다.

- **입력 담당 역할 (entryRole)**: 입력 권한을 가진 역할을 설정합니다. 데이터 입력 작업을 수행하는 역할을 나타냅니다.

- **할당자 (assignees)**: 데이터 수집에 대한 작업을 받을 담당자를 설정합니다.

- **결재 라인 (reviewApprovalLine)**: 데이터 수집시 관리담당자의 검토 결과를 확인하는 승인 라인을 설정합니다.

- **이상치 결재 라인 (outlierApprovalLine)**: 이상치 데이터 처리를 위한 승인 라인을 설정합니다.

- **검토 요청 (requiresReview)**: 데이타 검토가 필요한 지 여부를 설정합니다. 설정되면 관리자의 검토와 검토 결재 프로세스가 자동 시작됩니다.

- **입력용 화면 종류 (entryType)**: 입력 화면 종류를 설정합니다. 다음 옵션 중 하나를 선택할 수 있습니다.

  - **Generated**: 구현된 화면을 자동으로 사용합니다.
  - **Board**: Board 화면을 사용합니다.
  - **Page**: 구현된 페이지로 이동합니다. 서브 URL(suburl)이 필요합니다.
  - **External URL**: 외부 페이지로 이동합니다. 전체 URL이 필요합니다.

- **입력용 화면 (entryView)**: 입력 화면 종류에 따라 값을 설정합니다. Board 화면 종류를 선택하면 해당하는 값을 설정할 수 있습니다.

- **모니터용 화면 종류 (monitorType)**: 모니터용 화면 종류를 설정합니다. 입력 화면 종류와 동일한 옵션을 제공합니다.

- **모니터용 화면 (monitorView)**: 모니터용 화면 종류에 해당하는 값을 설정합니다.

- **리포트용 화면 종류 (reportType)**: 리포트용 화면 종류를 설정합니다. 입력 화면 종류와 부분적으로 공유하는 옵션을 제공합니다.

  - **Jasper**: Jasper 서버 설정에 따라 Jasper 리포트 페이지를 렌더링하여 보고서를 생성합니다.
  - **Shiny**: Shiny 서버 설정에 따라 Shiny 애플리케이션 페이지를 렌더링하여 보고서를 생성합니다.

- **리포트용 화면 (reportView)**: 리포트용 화면 종류에 맞는 값을 설정합니다. Jasper나 Shiny와 같은 경우 해당 서버에서 유효한 서브 URL(suburl)이 필요합니다.

- **리포트용 템플릿 (reportTemplate)**: 리포트용 화면에 필요한 템플릿 파일을 업로드합니다.

- **사용 사례 (useCase)**: 데이터셋의 용도나 목적을 나타냅니다. "QA," "CCP," "SPC"와 같은 공통 사용 사례 옵션을 포함합니다.

- **데이터 항목 (dataItems)**: 데이터셋에 대한 데이터 항목을 설정합니다.

- **데이터 입력 일정 (schedule)**: 데이터 입력 주기를 설정합니다.

- **데이터 입력 타임존 (timezone)**: 데이터셋의 입력과 관련된 타임존을 설정합니다.

- **스케줄 ID (scheduleId)**: 데이터셋의 스케줄 ID를 설정합니다.

- **서머리 주기 (summaryPeriod)**: 서머리 주기를 설정하면 자동으로 스케줄러에 서머리 작업이 등록됩니다. 현재는 주별, 월별 주기 서머리는 작업 부하를 고려하여 제공하지 않습니다. 주기 옵션으로는 hour(매시간), shift(매 작업조), workdate(매 작업일), daily(매일)이 있습니다.

- **다음 서머리 실행 일시 (summarySchedule)**: 설정된 서머리 주기를 기준으로 다음 서머리 실행 일시를 알려줍니다. 설정된 주기에 따라 서머리 작업이 수행됩니다.

- **생성일 (createdAt)**: 데이터셋이 생성된 날짜와 시간을 나타냅니다.

- **최종 업데이트일 (updatedAt)**: 데이터셋이 마지막으로 업데이트된 날짜와 시간을 나타냅니다.

- **생성자 (creator)**: 데이터셋을 생성한 사용자를 나타냅니다.

- **업데이터 (updater)**: 데이터셋을 마지막으로 업데이트한 사용자를 나타냅니다.

이러한 설정과 정보는 데이터셋을 정의하고 데이터셋을 사용하는 데 도움이 되며, 데이터셋의 목적과 용도를 명확하게 이해할 수 있도록 도와줍니다.

## 파티션키(partitionKey) 활용 예시

**파티션 키 활용 예시 (Athena API):**

Athena는 Amazon Web Services (AWS)의 쿼리 서비스 중 하나로, S3에 저장된 데이터를 쉽게 쿼리하고 분석할 수 있습니다. 파티션 키를 사용하여 Athena에서 데이터를 빠르게 검색하고 필터링하는 방법을 살펴보겠습니다.

가정:

- 데이터셋은 일일 주문 데이터를 저장합니다.
- 파티션 키는 "날짜 (Date)"로 설정되어 있습니다.

**Athena 쿼리 예시:**

다음은 Athena를 사용하여 특정 날짜의 주문 데이터를 검색하는 쿼리의 예시입니다.

```sql
SELECT *
FROM "my_dataset"
WHERE "partition_key" = '2023-12-01';
```

이 쿼리는 "my_dataset" 데이터셋에서 "날짜" 파티션 키가 '2023-12-01'인 모든 주문 데이터를 검색합니다. 파티션 키를 활용하면 대용량 데이터 세트에서도 빠르게 원하는 데이터를 검색할 수 있습니다.

[datasample-process]: ./images/datasample-process.png
