# 数据集 (DataSet)

![DataSample Process][datasample-process]

数据集通过各种设置和信息来定义。以下是关于数据集及其相关字段和设置选项的详细说明。

- **名称 (name)**：设置数据集的名称。该名称用于唯一标识数据集。

- **描述 (description)**：设置有关数据集的描述。用于说明数据集的目的、内容或特征。

- **类型 (type)**：设置数据集的类型。可以选择以下两个选项之一：

  - **手动收集 (Manual)**：表示用户直接输入数据的数据集。
  - **自动收集 (Automatic)**：表示通过自动化方法，如传感器，收集数据的数据集。

- **数据键集 (dataKeySet)**：在数据键集主页面注册的项目应用于数据集。数据键集定义了数据集中使用的数据字段和属性。

- **分区键 (partitionKeys)**：设置用于分割和组织数据的分区键。分区键逻辑上对数据进行分组和存储，并提高数据管理和检索的效率。通过使用分区键，可以快速过滤和查询数据。

- **计划 (schedule)**：设置数据输入周期。设置周期后，将根据该周期执行数据输入作业。

- **时区 (timezone)**：设置计划应用的基准时区。用于相关时间转换工作。

- **正常数据场景 (normalScenario)**：当生成正常数据时，设置启动的场景。在需要数据后续处理的情况下使用。

- **异常数据场景 (outlierScenario)**：当生成超出正常范围的数据时，设置启动的场景。在需要数据后续处理的情况下使用。

- **审查需求 (requiresReview)**：设置是否需要数据审查。设定后，将自动启动管理员的审查和审查批准流程。

- **审查批准线 (reviewApprovalLine)**：当生成正常数据时，设置数据审查过程中的批准线。仅在需要审查工作时适用。

- **异常数据批准线 (outlierApprovalLine)**：当生成超出正常范围的数据时，设置数据处理过程中的批准线。

- **管理员角色 (supervisoryRole)**：设置数据集的管理员角色。管理员拥有数据集的权限和责任。

- **输入负责角色 (entryRole)**：设置拥有输入权限的角色。表示执行数据输入工作的角色。

- **指派者 (assignees)**：设置负责处理数据收集任务的人员。

- **输入用界面类型 (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
