@things-factory/dataset 8.0.0-alpha.2 → 8.0.0-alpha.20
Sign up to get free protection for your applications and to get access to all the features.
- package/client/activities/activity-data-collect-edit.ts +3 -1
- package/client/activities/activity-ooc-resolve-edit.ts +4 -2
- package/client/activities/activity-ooc-review-edit.ts +4 -2
- package/client/bootstrap.ts +11 -1
- package/client/components/data-entry-form.ts +3 -3
- package/client/pages/data-entry/data-entry-list-page.ts +65 -12
- package/client/pages/data-report/data-report-list-page.ts +9 -2
- package/client/pages/data-set/data-set-list-page.ts +14 -1
- package/dist-client/activities/activity-data-collect-edit.d.ts +1 -1
- package/dist-client/activities/activity-data-collect-edit.js +2 -1
- package/dist-client/activities/activity-data-collect-edit.js.map +1 -1
- package/dist-client/activities/activity-ooc-resolve-edit.js +4 -2
- package/dist-client/activities/activity-ooc-resolve-edit.js.map +1 -1
- package/dist-client/activities/activity-ooc-review-edit.js +4 -2
- package/dist-client/activities/activity-ooc-review-edit.js.map +1 -1
- package/dist-client/bootstrap.js +4 -0
- package/dist-client/bootstrap.js.map +1 -1
- package/dist-client/components/data-entry-form.js +3 -3
- package/dist-client/components/data-entry-form.js.map +1 -1
- package/dist-client/pages/data-entry/data-entry-list-page.js +61 -10
- package/dist-client/pages/data-entry/data-entry-list-page.js.map +1 -1
- package/dist-client/pages/data-report/data-report-list-page.js +8 -2
- package/dist-client/pages/data-report/data-report-list-page.js.map +1 -1
- package/dist-client/pages/data-set/data-set-list-page.js +14 -1
- package/dist-client/pages/data-set/data-set-list-page.js.map +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/controllers/issue-data-collection-task.d.ts +2 -0
- package/dist-server/controllers/{issue-collect-data.js → issue-data-collection-task.js} +10 -7
- package/dist-server/controllers/issue-data-collection-task.js.map +1 -0
- package/dist-server/engine/task/issue-collect-data.js +2 -2
- package/dist-server/engine/task/issue-collect-data.js.map +1 -1
- package/dist-server/routes.js +5 -3
- package/dist-server/routes.js.map +1 -1
- package/dist-server/service/data-set/data-set-mutation.d.ts +1 -0
- package/dist-server/service/data-set/data-set-mutation.js +44 -11
- package/dist-server/service/data-set/data-set-mutation.js.map +1 -1
- package/dist-server/service/data-set/data-set-query.d.ts +2 -0
- package/dist-server/service/data-set/data-set-query.js +89 -29
- package/dist-server/service/data-set/data-set-query.js.map +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/helps/dataset/data-set.ja.md +55 -59
- package/helps/dataset/data-set.ko.md +9 -11
- package/helps/dataset/data-set.md +20 -24
- package/helps/dataset/data-set.zh.md +3 -11
- package/helps/dataset/task/issue-collect-data.ja.md +1 -1
- package/helps/dataset/task/issue-collect-data.ko.md +1 -1
- package/helps/dataset/task/issue-collect-data.md +1 -1
- package/helps/dataset/task/issue-collect-data.ms.md +1 -1
- package/helps/dataset/task/issue-collect-data.zh.md +1 -1
- package/package.json +13 -13
- package/server/controllers/{issue-collect-data.ts → issue-data-collection-task.ts} +9 -5
- package/server/engine/task/issue-collect-data.ts +2 -2
- package/server/routes.ts +5 -3
- package/server/service/data-set/data-set-mutation.ts +45 -12
- package/server/service/data-set/data-set-query.ts +86 -30
- package/translations/en.json +1 -0
- package/translations/ja.json +1 -0
- package/translations/ko.json +1 -0
- package/translations/ms.json +1 -0
- package/translations/zh.json +1 -0
- package/dist-server/controllers/issue-collect-data.d.ts +0 -2
- package/dist-server/controllers/issue-collect-data.js.map +0 -1
@@ -1,110 +1,106 @@
|
|
1
|
-
#
|
1
|
+
# 数据集 (DataSet)
|
2
2
|
|
3
3
|
![DataSample Process][datasample-process]
|
4
4
|
|
5
|
-
|
5
|
+
数据集通过各种设置和信息来定义。以下是关于数据集及其相关字段和设置选项的详细说明。
|
6
6
|
|
7
|
-
-
|
7
|
+
- **名称 (name)**: 设置数据集的名称。该名称用于唯一标识数据集。
|
8
8
|
|
9
|
-
-
|
9
|
+
- **描述 (description)**: 设置有关数据集的描述。用于说明数据集的目的、内容或特征。
|
10
10
|
|
11
|
-
-
|
11
|
+
- **类型 (type)**: 设置数据集的类型。可以选择以下两个选项之一:
|
12
12
|
|
13
|
-
-
|
14
|
-
-
|
13
|
+
- **手动收集 (Manual)**: 表示用户直接输入数据的数据集。
|
14
|
+
- **自动收集 (Automatic)**: 表示通过自动化方法,如传感器,收集数据的数据集。
|
15
15
|
|
16
|
-
-
|
16
|
+
- **数据键集 (dataKeySet)**: 在数据键集主页面注册的项目应用于数据集。数据键集定义了数据集中使用的数据字段和属性。
|
17
17
|
|
18
|
-
-
|
18
|
+
- **分区键 (partitionKeys)**: 设置用于分割和组织数据的分区键。分区键逻辑上对数据进行分组和存储,并提高数据管理和检索的效率。通过使用分区键,可以快速过滤和查询数据。
|
19
19
|
|
20
|
-
-
|
20
|
+
- **计划 (schedule)**: 设置数据输入周期。设置周期后,将根据该周期执行数据输入作业。
|
21
21
|
|
22
|
-
-
|
22
|
+
- **时区 (timezone)**: 设置计划应用的基准时区。用于相关时间转换工作。
|
23
23
|
|
24
|
-
-
|
24
|
+
- **正常数据场景 (normalScenario)**: 当生成正常数据时,设置启动的场景。在需要数据后续处理的情况下使用。
|
25
25
|
|
26
|
-
-
|
26
|
+
- **异常数据场景 (outlierScenario)**: 当生成超出正常范围的数据时,设置启动的场景。在需要数据后续处理的情况下使用。
|
27
27
|
|
28
|
-
-
|
28
|
+
- **审查批准线 (reviewApprovalLine)**: 当生成正常数据时,设置数据审查过程中的批准线。仅在需要审查工作时适用。
|
29
29
|
|
30
|
-
-
|
30
|
+
- **异常数据批准线 (outlierApprovalLine)**: 当生成超出正常范围的数据时,设置数据处理过程中的批准线。
|
31
31
|
|
32
|
-
-
|
32
|
+
- **管理员角色 (supervisoryRole)**: 设置数据集的管理员角色。管理员负责审查收集的数据和异常数据。他们还拥有分配数据收集任务的权限。
|
33
33
|
|
34
|
-
-
|
34
|
+
- **输入负责角色 (entryRole)**: 设置拥有输入权限的角色。表示执行数据输入工作的角色。
|
35
35
|
|
36
|
-
-
|
36
|
+
- **分配者 (assignees)**: 设置负责处理数据收集任务的人员。
|
37
37
|
|
38
|
-
-
|
38
|
+
- **审查批准线 (reviewApprovalLine)**: 设置用于验证数据收集结果的批准线。
|
39
39
|
|
40
|
-
|
41
|
-
- **Board**: Board 画面を使用します。
|
42
|
-
- **Page**: 実装されたページに移動します。サブ URL(suburl)が必要です。
|
43
|
-
- **External URL**: 外部ページに移動します。完全な URL が必要です。
|
40
|
+
- **异常数据批准线 (outlierApprovalLine)**: 设置用于处理异常数据的批准线。
|
44
41
|
|
45
|
-
-
|
42
|
+
- **审查必要性 (requiresReview)**: 设置是否需要数据审查。设置后,管理员的审查和审查批准流程将自动开始。
|
46
43
|
|
47
|
-
-
|
44
|
+
- **输入画面类型 (entryType)**: 设置输入画面的类型。可以选择以下选项之一:
|
48
45
|
|
49
|
-
|
46
|
+
- **Generated**: 自动使用已实现的画面。
|
47
|
+
- **Board**: 使用 Board 画面。
|
48
|
+
- **Page**: 移至已实现的页面。需要子 URL(suburl)。
|
49
|
+
- **External URL**: 移至外部页面。需要完整的 URL。
|
50
50
|
|
51
|
-
-
|
51
|
+
- **输入画面 (entryView)**: 根据输入画面的类型设置值。如果选择 Board 画面类型,可以设置相应的值。
|
52
52
|
|
53
|
-
-
|
53
|
+
- **监控画面类型 (monitorType)**: 设置监控画面的类型。提供与输入画面类型相同的选项。
|
54
54
|
|
55
|
-
|
56
|
-
- **Shiny**: Shiny サーバー設定に従い Shiny アプリケーションページをレンダリングし、報告書を生成します。
|
55
|
+
- **监控画面 (monitorView)**: 设置与监控画面类型相对应的值。
|
57
56
|
|
58
|
-
-
|
57
|
+
- **报告画面类型 (reportType)**: 设置报告画面的类型。提供部分与输入画面类型共享的选项。
|
59
58
|
|
60
|
-
-
|
59
|
+
- **Jasper**: 根据 Jasper 服务器设置渲染 Jasper 报告页面并生成报告。
|
60
|
+
- **Shiny**: 根据 Shiny 服务器设置渲染 Shiny 应用程序页面并生成报告。
|
61
61
|
|
62
|
-
-
|
62
|
+
- **报告画面 (reportView)**: 根据报告画面的类型设置值。对于 Jasper 或 Shiny,需要在相应服务器上有效的子 URL(suburl)。
|
63
63
|
|
64
|
-
-
|
64
|
+
- **报告模板 (reportTemplate)**: 上传报告画面所需的模板文件。
|
65
65
|
|
66
|
-
-
|
66
|
+
- **使用案例 (useCase)**: 指示数据集的用途或目的。包括常见的使用案例选项,如 "QA," "CCP," "SPC"。
|
67
67
|
|
68
|
-
-
|
68
|
+
- **数据项 (dataItems)**: 设置数据集的数据项。
|
69
69
|
|
70
|
-
-
|
70
|
+
- **数据输入计划 (schedule)**: 设置数据输入周期。
|
71
71
|
|
72
|
-
-
|
72
|
+
- **数据输入时区 (timezone)**: 设置与数据集输入相关的时区。
|
73
73
|
|
74
|
-
-
|
74
|
+
- **计划 ID (scheduleId)**: 设置数据集的计划 ID。
|
75
75
|
|
76
|
-
-
|
76
|
+
- **摘要周期 (summaryPeriod)**: 设置摘要周期会自动在计划器中注册摘要作业。目前不考虑工作负载,不提供每周和每月周期摘要。周期选项包括 hour(每小时)、shift(每班次)、workdate(每工作日)和 daily(每日)。
|
77
77
|
|
78
|
-
-
|
78
|
+
- **下一摘要执行日期 (summarySchedule)**: 根据设置的摘要周期通知下一摘要执行日期。根据设置的周期执行摘要作业。
|
79
79
|
|
80
|
-
-
|
80
|
+
- **创建日期 (createdAt)**: 显示数据集创建的日期和时间。
|
81
81
|
|
82
|
-
-
|
82
|
+
- **最后更新日期 (updatedAt)**: 显示数据集最后更新的日期和时间。
|
83
83
|
|
84
|
-
-
|
84
|
+
- **创建者 (creator)**: 显示创建数据集的用户。
|
85
85
|
|
86
|
-
-
|
86
|
+
- **更新者 (updater)**: 显示最后更新数据集的用户。
|
87
87
|
|
88
|
-
|
88
|
+
这些设置和信息有助于定义数据集并使用它,有助于清晰理解数据集的目的和用途。
|
89
89
|
|
90
|
-
|
90
|
+
## 分区键使用示例
|
91
91
|
|
92
|
-
|
92
|
+
**分区键使用示例 (Athena API):**
|
93
93
|
|
94
|
-
|
94
|
+
Athena 是 Amazon Web Services (AWS) 的查询服务之一,可以轻松查询和分析存储在 S3 中的数据。让我们看看如何使用分区键在 Athena 中快速搜索和过滤数据。
|
95
95
|
|
96
|
-
|
96
|
+
假设:
|
97
97
|
|
98
|
-
|
98
|
+
- 数据集存储每日订单数据。
|
99
|
+
- 分区键设置为 "日期 (Date)"。
|
99
100
|
|
100
|
-
|
101
|
+
**Athena 查询示例:**
|
101
102
|
|
102
|
-
|
103
|
-
- パーティションキーは「日付 (Date)」として設定されています。
|
104
|
-
|
105
|
-
**Athena クエリ例:**
|
106
|
-
|
107
|
-
以下は、特定の日付の注文データを検索するために Athena を使用したクエリの例です。
|
103
|
+
以下是使用 Athena 搜索特定日期的订单数据的查询示例。
|
108
104
|
|
109
105
|
```sql
|
110
106
|
SELECT *
|
@@ -112,6 +108,6 @@ FROM "my_dataset"
|
|
112
108
|
WHERE "partition_key" = '2023-12-01';
|
113
109
|
```
|
114
110
|
|
115
|
-
|
111
|
+
此查询搜索 "my_dataset" 数据集中 "日期" 分区键为 '2023-12-01' 的所有订单数据。使用分区键可以在大型数据集中快速检索所需的数据。
|
116
112
|
|
117
113
|
[datasample-process]: ./images/datasample-process.png
|
@@ -25,16 +25,22 @@
|
|
25
25
|
|
26
26
|
- **이상치 시나리오 (outlierScenario)**: 정상범위를 벗어난 데이타가 생성되었을 때, 시작되는 시나리오를 설정합니다. 데이타 후속 처리가 필요한 경우에 사용됩니다.
|
27
27
|
|
28
|
-
- **검토 필요 여부 (requiresReview)**: 데이타 검토가 필요한 지 여부를 설정합니다. 설정되면 관리자의 검토와 검토 결재 프로세스가 자동 시작됩니다.
|
29
|
-
|
30
28
|
- **검토 결재선 (reviewApprovalLine)**: 정상데이타가 생성되었을 때, 데이타 검토과정의 결재선을 설정합니다. 검토 작업이 필요한 경우에만 적용됩니다.
|
31
29
|
|
32
30
|
- **이상치 결재선 (outlierApprovalLine)**: 정상범위를 벗어난 데이타가 생성되었을 때, 데이타 조치 과정의 결재선을 설정합니다.
|
33
31
|
|
34
|
-
- **관리자 역할 (supervisoryRole)**: 데이터셋의 관리자 역할을 설정합니다. 관리자는
|
32
|
+
- **관리자 역할 (supervisoryRole)**: 데이터셋의 관리자 역할을 설정합니다. 관리자는 수집된 데이타의 검토와 이상치 데이타 검토를 담당한다. 또한, 데이타 수집 작업을 할당하는 권한을 가진다.
|
35
33
|
|
36
34
|
- **입력 담당 역할 (entryRole)**: 입력 권한을 가진 역할을 설정합니다. 데이터 입력 작업을 수행하는 역할을 나타냅니다.
|
37
35
|
|
36
|
+
- **할당자 (assignees)**: 데이터 수집에 대한 작업을 받을 담당자를 설정합니다.
|
37
|
+
|
38
|
+
- **결재 라인 (reviewApprovalLine)**: 데이터 수집시 관리담당자의 검토 결과를 확인하는 승인 라인을 설정합니다.
|
39
|
+
|
40
|
+
- **이상치 결재 라인 (outlierApprovalLine)**: 이상치 데이터 처리를 위한 승인 라인을 설정합니다.
|
41
|
+
|
42
|
+
- **검토 요청 (requiresReview)**: 데이타 검토가 필요한 지 여부를 설정합니다. 설정되면 관리자의 검토와 검토 결재 프로세스가 자동 시작됩니다.
|
43
|
+
|
38
44
|
- **입력용 화면 종류 (entryType)**: 입력 화면 종류를 설정합니다. 다음 옵션 중 하나를 선택할 수 있습니다.
|
39
45
|
|
40
46
|
- **Generated**: 구현된 화면을 자동으로 사용합니다.
|
@@ -57,12 +63,6 @@
|
|
57
63
|
|
58
64
|
- **리포트용 템플릿 (reportTemplate)**: 리포트용 화면에 필요한 템플릿 파일을 업로드합니다.
|
59
65
|
|
60
|
-
- **할당자 (assignees)**: 이상치 데이터 처리 결재선에 대한 문의를 받을 담당자를 설정합니다.
|
61
|
-
|
62
|
-
- **확인 승인 라인 (reviewApprovalLine)**: 데이터셋 확인을 위한 승인 라인을 설정합니다.
|
63
|
-
|
64
|
-
- **이상치 데이타 처리 결재선 (outlierApprovalLine)**: 이상치 데이터 처리를 위한 승인 라인을 설정합니다.
|
65
|
-
|
66
66
|
- **사용 사례 (useCase)**: 데이터셋의 용도나 목적을 나타냅니다. "QA," "CCP," "SPC"와 같은 공통 사용 사례 옵션을 포함합니다.
|
67
67
|
|
68
68
|
- **데이터 항목 (dataItems)**: 데이터셋에 대한 데이터 항목을 설정합니다.
|
@@ -71,8 +71,6 @@
|
|
71
71
|
|
72
72
|
- **데이터 입력 타임존 (timezone)**: 데이터셋의 입력과 관련된 타임존을 설정합니다.
|
73
73
|
|
74
|
-
- **리뷰 필요 여부 (requiresReview)**: 데이터셋이 리뷰가 필요한지 여부를 나타냅니다.
|
75
|
-
|
76
74
|
- **스케줄 ID (scheduleId)**: 데이터셋의 스케줄 ID를 설정합니다.
|
77
75
|
|
78
76
|
- **서머리 주기 (summaryPeriod)**: 서머리 주기를 설정하면 자동으로 스케줄러에 서머리 작업이 등록됩니다. 현재는 주별, 월별 주기 서머리는 작업 부하를 고려하여 제공하지 않습니다. 주기 옵션으로는 hour(매시간), shift(매 작업조), workdate(매 작업일), daily(매일)이 있습니다.
|
@@ -25,30 +25,36 @@ DataSets are defined through various settings and information. Below is a detail
|
|
25
25
|
|
26
26
|
- **Outlier Scenario (outlierScenario)**: Sets the scenario that starts when data exceeding the normal range is generated. Used when subsequent data processing is needed.
|
27
27
|
|
28
|
-
- **Review Requirement (requiresReview)**: Sets whether data review is necessary. If set, the administrator's review and review approval process automatically begins.
|
29
|
-
|
30
28
|
- **Review Approval Line (reviewApprovalLine)**: Sets the approval line for the data review process when normal data is generated. Only applies if review work is needed.
|
31
29
|
|
32
30
|
- **Outlier Approval Line (outlierApprovalLine)**: Sets the approval line for the data action process when data exceeding the normal range is generated.
|
33
31
|
|
34
|
-
- **Supervisory Role (supervisoryRole)**: Set the supervisory role for the DataSet. The supervisor
|
32
|
+
- **Supervisory Role (supervisoryRole)**: Set the supervisory role for the DataSet. The supervisor is responsible for reviewing collected data and outlier data. They also have the authority to assign data collection tasks.
|
33
|
+
|
34
|
+
- **Entry Role (entryRole)**: Set the role with entry permissions. This role is responsible for performing data entry tasks.
|
35
|
+
|
36
|
+
- **Assignees (assignees)**: Set the person in charge of handling data collection tasks.
|
37
|
+
|
38
|
+
- **Review Approval Line (reviewApprovalLine)**: Set the approval line for verifying the data collection results by the supervisor.
|
39
|
+
|
40
|
+
- **Outlier Approval Line (outlierApprovalLine)**: Set the approval line for handling outlier data.
|
35
41
|
|
36
|
-
- **
|
42
|
+
- **Requires Review (requiresReview)**: Set whether data review is necessary. If set, the administrator's review and review approval process automatically begins.
|
37
43
|
|
38
44
|
- **Entry Type (entryType)**: Set the type of entry screen. You can choose one of the following options:
|
39
45
|
|
40
46
|
- **Generated**: Automatically use the implemented screen.
|
41
47
|
- **Board**: Use the Board screen.
|
42
|
-
- **Page**: Move to the implemented page. A sub URL (suburl) is
|
43
|
-
- **External URL**: Move to an external page. A full URL is
|
48
|
+
- **Page**: Move to the implemented page. A sub URL (suburl) is required.
|
49
|
+
- **External URL**: Move to an external page. A full URL is required.
|
44
50
|
|
45
|
-
- **Entry View (entryView)**: Set the value according to the type of entry screen. If the Board screen type is selected, the corresponding value
|
51
|
+
- **Entry View (entryView)**: Set the value according to the type of entry screen. If the Board screen type is selected, set the corresponding value.
|
46
52
|
|
47
53
|
- **Monitor Type (monitorType)**: Set the type of monitor screen. Provides the same options as the entry screen type.
|
48
54
|
|
49
|
-
- **Monitor View (monitorView)**: Set the value
|
55
|
+
- **Monitor View (monitorView)**: Set the value corresponding to the type of monitor screen.
|
50
56
|
|
51
|
-
- **Report Type (reportType)**: Set the type of report screen.
|
57
|
+
- **Report Type (reportType)**: Set the type of report screen. Provides partially shared options with the entry screen type.
|
52
58
|
|
53
59
|
- **Jasper**: Render a Jasper report page according to Jasper server settings to generate a report.
|
54
60
|
- **Shiny**: Render a Shiny application page according to Shiny server settings to generate a report.
|
@@ -57,12 +63,6 @@ DataSets are defined through various settings and information. Below is a detail
|
|
57
63
|
|
58
64
|
- **Report Template (reportTemplate)**: Upload the template file required for the report screen.
|
59
65
|
|
60
|
-
- **Assignees (assignees)**: Set the person in charge of handling inquiries for the approval line for outlier data processing.
|
61
|
-
|
62
|
-
- **Review Approval Line (reviewApprovalLine)**: Set the approval line for DataSet verification.
|
63
|
-
|
64
|
-
- **Outlier Approval Line (outlierApprovalLine)**: Set the approval line for outlier data processing.
|
65
|
-
|
66
66
|
- **Use Case (useCase)**: Indicates the purpose or use of the DataSet. Includes common use case options like "QA," "CCP," "SPC."
|
67
67
|
|
68
68
|
- **Data Items (dataItems)**: Set the data items for the DataSet.
|
@@ -71,8 +71,6 @@ DataSets are defined through various settings and information. Below is a detail
|
|
71
71
|
|
72
72
|
- **Data Entry Timezone (timezone)**: Set the timezone related to data entry for the DataSet.
|
73
73
|
|
74
|
-
- **Requires Review (requiresReview)**: Indicates whether the DataSet requires a review.
|
75
|
-
|
76
74
|
- **Schedule ID (scheduleId)**: Set the schedule ID for the DataSet.
|
77
75
|
|
78
76
|
- **Summary Period (summaryPeriod)**: Setting a summary period automatically registers a summary task in the scheduler. Currently, weekly and monthly period summaries are not provided considering workload. Period options include hour (hour), shift (shift), workdate (workdate), and daily (daily).
|
@@ -89,22 +87,20 @@ DataSets are defined through various settings and information. Below is a detail
|
|
89
87
|
|
90
88
|
These settings and information help define the DataSet and use it, aiding in a clear understanding of the DataSet's purpose and use.
|
91
89
|
|
92
|
-
## Partition Key Utilization Example
|
93
|
-
|
94
|
-
partitionKey)
|
90
|
+
## Partition Key Utilization Example
|
95
91
|
|
96
92
|
**Partition Key Utilization Example (Athena API):**
|
97
93
|
|
98
|
-
Athena is one of Amazon Web Services (AWS)
|
94
|
+
Athena is one of Amazon Web Services (AWS) query services, which allows easy querying and analysis of data stored in S3. Let's look at how to use partition keys to quickly search and filter data in Athena.
|
99
95
|
|
100
96
|
Assumptions:
|
101
97
|
|
102
98
|
- The DataSet stores daily order data.
|
103
|
-
- The partition key is set
|
99
|
+
- The partition key is set to "Date."
|
104
100
|
|
105
101
|
**Athena Query Example:**
|
106
102
|
|
107
|
-
|
103
|
+
The following is an example query using Athena to search for order data on a specific date.
|
108
104
|
|
109
105
|
```sql
|
110
106
|
SELECT *
|
@@ -112,6 +108,6 @@ FROM "my_dataset"
|
|
112
108
|
WHERE "partition_key" = '2023-12-01';
|
113
109
|
```
|
114
110
|
|
115
|
-
This query searches for all order data in the "my_dataset" DataSet where the "Date"
|
111
|
+
This query searches for all order data in the "my_dataset" DataSet where the partition key "Date" is '2023-12-01'. Using partition keys allows for quick retrieval of desired data even in large data sets.
|
116
112
|
|
117
113
|
[datasample-process]: ./images/datasample-process.png
|
@@ -35,6 +35,8 @@
|
|
35
35
|
|
36
36
|
- **输入负责角色 (entryRole)**:设置拥有输入权限的角色。表示执行数据输入工作的角色。
|
37
37
|
|
38
|
+
- **指派者 (assignees)**:设置负责处理数据收集任务的人员。
|
39
|
+
|
38
40
|
- **输入用界面类型 (entryType)**:设置输入界面类型。可以选择以下选项之一:
|
39
41
|
|
40
42
|
- **Generated**: 自动使用实现的界面。
|
@@ -57,12 +59,6 @@
|
|
57
59
|
|
58
60
|
- **报告用模板 (reportTemplate)**:上传报告用界面所需的模板文件。
|
59
61
|
|
60
|
-
- **指派者 (assignees)**:设置负责处理异常数据审批线的负责人。
|
61
|
-
|
62
|
-
- **审批线 (reviewApprovalLine)**:设置数据集审批线。
|
63
|
-
|
64
|
-
- **异常数据处理审批线 (outlierApprovalLine)**:设置异常数据处理的审批线。
|
65
|
-
|
66
62
|
- **使用案例 (useCase)**:表示数据集的用途或目的。包括 "QA"、"CCP"、"SPC" 等常见用例选项。
|
67
63
|
|
68
64
|
- **数据项 (dataItems)**:设置数据集的数据项。
|
@@ -71,13 +67,9 @@
|
|
71
67
|
|
72
68
|
- **数据输入时区 (timezone)**:设置数据集输入相关的时区。
|
73
69
|
|
74
|
-
- **审查需要性 (requiresReview)**:表示是否需要审查数据集。
|
75
|
-
|
76
70
|
- **计划 ID (scheduleId)**:设置数据集的计划 ID。
|
77
71
|
|
78
|
-
- **汇总周期 (summaryPeriod)
|
79
|
-
|
80
|
-
月周期的汇总。周期选项包括小时(hour)、班次(shift)、工作日(workdate)、每日(daily)。
|
72
|
+
- **汇总周期 (summaryPeriod)**:设置汇总周期后,自动在调度器中注册汇总作业。目前,考虑到工作负载,不提供每周、每月周期的汇总。周期选项包括小时(hour)、班次(shift)、工作日(workdate)、每日(daily)。
|
81
73
|
|
82
74
|
- **下次汇总执行时间 (summarySchedule)**:根据设定的汇总周期,通知下次汇总执行时间。根据设定周期执行汇总作业。
|
83
75
|
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
## 機能
|
22
22
|
|
23
|
-
実行時に、タスクはデータセット ID の存在を確認します。ID が提供されていない場合、タスクはデータセットが見つからないことを示すエラーを投げます。有効なデータセット ID が提供された場合、タスクはそのデータセットに特定のデータ収集活動を発行します。`
|
23
|
+
実行時に、タスクはデータセット ID の存在を確認します。ID が提供されていない場合、タスクはデータセットが見つからないことを示すエラーを投げます。有効なデータセット ID が提供された場合、タスクはそのデータセットに特定のデータ収集活動を発行します。`IssueCollectData` によって処理される基本的なプロセスには、データセットの存在の検証、データ収集環境の準備、およびデータセットの構成および関連するデータソースに従ってデータ収集プロセスを開始するなどの操作が含まれます。
|
24
24
|
|
25
25
|
タスクは開始された活動のインスタンスを返し、これを使用して進行状況を追跡し、データ収集ワークフローを管理するか、収集したデータを処理するための後続のタスクと統合することができます。
|
26
26
|
|
@@ -17,7 +17,7 @@
|
|
17
17
|
|
18
18
|
## 기능
|
19
19
|
|
20
|
-
실행 시, 작업은 데이터셋 ID의 존재를 확인합니다. ID가 제공되지 않으면, 데이터셋이 발견되지 않았다는 오류를 발생시킵니다. 유효한 데이터셋 ID가 제공되면, 작업은 해당 데이터셋에 특정한 데이터 수집 활동을 발행합니다. `
|
20
|
+
실행 시, 작업은 데이터셋 ID의 존재를 확인합니다. ID가 제공되지 않으면, 데이터셋이 발견되지 않았다는 오류를 발생시킵니다. 유효한 데이터셋 ID가 제공되면, 작업은 해당 데이터셋에 특정한 데이터 수집 활동을 발행합니다. `IssueCollectData`에 의해 처리되는 기본 프로세스는 데이터셋의 존재를 확인, 데이터 수집 환경 준비, 데이터셋의 구성 및 관련 데이터 소스에 따라 데이터 수집 프로세스 시작과 같은 작업을 포함합니다.
|
21
21
|
|
22
22
|
작업은 시작된 활동의 인스턴스를 반환하며, 이는 진행 상황을 추적하고, 데이터 수집 워크플로를 관리하거나, 수집된 데이터를 처리하기 위한 후속 작업과 통합하는 데 사용할 수 있습니다.
|
23
23
|
|
@@ -17,7 +17,7 @@ The `IssueCollectData` task is an automated function that triggers a data collec
|
|
17
17
|
|
18
18
|
## Functionality
|
19
19
|
|
20
|
-
Upon execution, the task checks for the presence of a dataset ID. If the ID is not provided, the task will throw an error indicating that no dataset has been found. If a valid dataset ID is provided, the task proceeds to issue a data collection activity specific to that dataset. The underlying process handled by `
|
20
|
+
Upon execution, the task checks for the presence of a dataset ID. If the ID is not provided, the task will throw an error indicating that no dataset has been found. If a valid dataset ID is provided, the task proceeds to issue a data collection activity specific to that dataset. The underlying process handled by `IssueCollectData` involves operations such as validating the dataset's existence, preparing the data collection environment, and initiating the data collection process according to the dataset's configuration and associated data sources.
|
21
21
|
|
22
22
|
The task returns an instance of the activity initiated, which can be used to track the progress, manage the data collection workflow, or integrate with subsequent tasks for processing the collected data.
|
23
23
|
|
@@ -19,7 +19,7 @@ Tugas `IssueCollectData` adalah fungsi automatik yang memicu proses pengumpulan
|
|
19
19
|
|
20
20
|
## Fungsi
|
21
21
|
|
22
|
-
Saat dieksekusi, tugas memeriksa keberadaan ID set data. Jika ID tidak disediakan, tugas akan melempar kesalahan yang menunjukkan bahwa tidak ada set data yang ditemukan. Jika ID set data yang valid disediakan, tugas melanjutkan untuk mengeluarkan aktiviti pengumpulan data yang spesifik untuk set data tersebut. Proses dasar yang ditangani oleh `
|
22
|
+
Saat dieksekusi, tugas memeriksa keberadaan ID set data. Jika ID tidak disediakan, tugas akan melempar kesalahan yang menunjukkan bahwa tidak ada set data yang ditemukan. Jika ID set data yang valid disediakan, tugas melanjutkan untuk mengeluarkan aktiviti pengumpulan data yang spesifik untuk set data tersebut. Proses dasar yang ditangani oleh `IssueCollectData` melibatkan operasi seperti validasi keberadaan set data, persiapan lingkungan pengumpulan data, dan memulai proses pengumpulan data sesuai dengan konfigurasi set data dan sumber data terkait.
|
23
23
|
|
24
24
|
Tugas mengembalikan instansi aktivitas yang dimulai, yang dapat digunakan untuk melacak kemajuan, mengurus alur kerja pengumpulan data, atau mengintegrasikan dengan tugas berikutnya untuk memproses data yang dikumpulkan.
|
25
25
|
|
@@ -17,7 +17,7 @@
|
|
17
17
|
|
18
18
|
## 功能
|
19
19
|
|
20
|
-
执行时,任务会检查数据集 ID 的存在。如果未提供 ID,则任务会抛出错误,指示未找到数据集。如果提供了有效的数据集 ID,则任务将继续针对该数据集发起数据收集活动。`
|
20
|
+
执行时,任务会检查数据集 ID 的存在。如果未提供 ID,则任务会抛出错误,指示未找到数据集。如果提供了有效的数据集 ID,则任务将继续针对该数据集发起数据收集活动。`IssueCollectData` 处理的底层过程涉及验证数据集的存在、准备数据收集环境以及根据数据集的配置和关联数据源启动数据收集过程。
|
21
21
|
|
22
22
|
任务返回启动的活动实例,可用于跟踪进度、管理数据收集工作流或与后续任务集成以处理收集的数据。
|
23
23
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@things-factory/dataset",
|
3
|
-
"version": "8.0.0-alpha.
|
3
|
+
"version": "8.0.0-alpha.20",
|
4
4
|
"main": "dist-server/index.js",
|
5
5
|
"browser": "dist-client/index.js",
|
6
6
|
"things-factory": true,
|
@@ -40,21 +40,21 @@
|
|
40
40
|
"@operato/shell": "^8.0.0-alpha",
|
41
41
|
"@operato/styles": "^8.0.0-alpha",
|
42
42
|
"@operato/utils": "^8.0.0-alpha",
|
43
|
-
"@things-factory/auth-base": "^8.0.0-alpha.
|
44
|
-
"@things-factory/aws-base": "^8.0.0-alpha.
|
45
|
-
"@things-factory/board-service": "^8.0.0-alpha.
|
46
|
-
"@things-factory/env": "^8.0.0-alpha.
|
47
|
-
"@things-factory/integration-base": "^8.0.0-alpha.
|
48
|
-
"@things-factory/organization": "^8.0.0-alpha.
|
49
|
-
"@things-factory/personalization": "^8.0.0-alpha.
|
50
|
-
"@things-factory/scheduler-client": "^8.0.0-alpha.
|
51
|
-
"@things-factory/shell": "^8.0.0-alpha.
|
52
|
-
"@things-factory/work-shift": "^8.0.0-alpha.
|
53
|
-
"@things-factory/worklist": "^8.0.0-alpha.
|
43
|
+
"@things-factory/auth-base": "^8.0.0-alpha.19",
|
44
|
+
"@things-factory/aws-base": "^8.0.0-alpha.19",
|
45
|
+
"@things-factory/board-service": "^8.0.0-alpha.20",
|
46
|
+
"@things-factory/env": "^8.0.0-alpha.8",
|
47
|
+
"@things-factory/integration-base": "^8.0.0-alpha.20",
|
48
|
+
"@things-factory/organization": "^8.0.0-alpha.19",
|
49
|
+
"@things-factory/personalization": "^8.0.0-alpha.19",
|
50
|
+
"@things-factory/scheduler-client": "^8.0.0-alpha.19",
|
51
|
+
"@things-factory/shell": "^8.0.0-alpha.19",
|
52
|
+
"@things-factory/work-shift": "^8.0.0-alpha.19",
|
53
|
+
"@things-factory/worklist": "^8.0.0-alpha.20",
|
54
54
|
"cron-parser": "^4.3.0",
|
55
55
|
"moment-timezone": "^0.5.45",
|
56
56
|
"simple-statistics": "^7.8.3",
|
57
57
|
"statistics": "^3.3.0"
|
58
58
|
},
|
59
|
-
"gitHead": "
|
59
|
+
"gitHead": "2cfe88c38c1b7de9dfbd2f68d15bdae7210a001f"
|
60
60
|
}
|
@@ -4,8 +4,9 @@ import { Domain, getDataSource } from '@things-factory/shell'
|
|
4
4
|
import { Activity, ActivityInstance, issue } from '@things-factory/worklist'
|
5
5
|
|
6
6
|
import { DataSet } from '../service/data-set/data-set'
|
7
|
+
import { OrgMemberTargetType } from '@things-factory/organization'
|
7
8
|
|
8
|
-
export async function
|
9
|
+
export async function issueDataCollectionTask(
|
9
10
|
domainId: string,
|
10
11
|
dataSetId: string,
|
11
12
|
context: ResolverContext
|
@@ -23,7 +24,8 @@ export async function issueCollectData(
|
|
23
24
|
id: In([domain.id, domain.parentId].filter(Boolean))
|
24
25
|
},
|
25
26
|
id: dataSetId
|
26
|
-
}
|
27
|
+
},
|
28
|
+
relations: ['entryRole']
|
27
29
|
})
|
28
30
|
|
29
31
|
const activity = (await tx.getRepository(Activity).findOneBy({
|
@@ -32,9 +34,11 @@ export async function issueCollectData(
|
|
32
34
|
})) as Activity
|
33
35
|
|
34
36
|
if (activity) {
|
35
|
-
const {
|
37
|
+
const { entryRole } = dataSet
|
38
|
+
|
39
|
+
const assignees = entryRole ? [{ type: OrgMemberTargetType.Role, value: entryRole.id, assignee: entryRole }] : []
|
36
40
|
|
37
|
-
/* 해당 dataset에 대한 데이타 수집 태스크를 dataset
|
41
|
+
/* 해당 dataset에 대한 데이타 수집 태스크를 dataset entryRole에게 할당한다. */
|
38
42
|
if (assignees && assignees instanceof Array && assignees.length > 0) {
|
39
43
|
const activityInstance = {
|
40
44
|
name: `[Data 수집] ${dataSet.name}`,
|
@@ -57,7 +61,7 @@ export async function issueCollectData(
|
|
57
61
|
return await issue(activityInstance, context)
|
58
62
|
} else {
|
59
63
|
throw new Error(
|
60
|
-
`
|
64
|
+
`Data Entry Role not set. So Data Collect Activity for ${dataSet.name}($dataSet.id) could not be issued.`
|
61
65
|
)
|
62
66
|
}
|
63
67
|
} else {
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { TaskRegistry, InputStep, Context } from '@things-factory/integration-base'
|
2
|
-
import {
|
2
|
+
import { issueDataCollectionTask } from '../../controllers/issue-data-collection-task'
|
3
3
|
import i18next from 'i18next'
|
4
4
|
|
5
5
|
async function IssueCollectData(step: InputStep, context: Context) {
|
@@ -12,7 +12,7 @@ async function IssueCollectData(step: InputStep, context: Context) {
|
|
12
12
|
throw new Error(`no dataset found`)
|
13
13
|
}
|
14
14
|
|
15
|
-
const activityInstance = await
|
15
|
+
const activityInstance = await issueDataCollectionTask(domain.id, dataSetId, {
|
16
16
|
t: i18next.t,
|
17
17
|
state: {
|
18
18
|
domain,
|
package/server/routes.ts
CHANGED
@@ -8,7 +8,7 @@ import { ScheduleRegisterRequest } from '@things-factory/scheduler-client'
|
|
8
8
|
import { createDataSample } from './controllers/create-data-sample'
|
9
9
|
import { renderJasperReport } from './controllers/jasper-report'
|
10
10
|
import { renderShinyReport } from './controllers/shiny-report'
|
11
|
-
import {
|
11
|
+
import { issueDataCollectionTask } from './controllers/issue-data-collection-task'
|
12
12
|
import { DataSensor } from './service/data-sensor/data-sensor'
|
13
13
|
import { DataSet } from './service/data-set/data-set'
|
14
14
|
|
@@ -120,7 +120,7 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
120
120
|
throw new Error(`group(${domainId}) and key(${dataSetId}) properties should not be empty`)
|
121
121
|
}
|
122
122
|
|
123
|
-
await
|
123
|
+
await issueDataCollectionTask(domainId, dataSetId, context)
|
124
124
|
|
125
125
|
context.status = 200
|
126
126
|
})
|
@@ -146,7 +146,9 @@ process.on('bootstrap-module-global-public-route' as any, (app, globalPublicRout
|
|
146
146
|
throw new Error(`domain(${domainId}) not found`)
|
147
147
|
}
|
148
148
|
|
149
|
-
const dataSet = await tx
|
149
|
+
const dataSet = await tx
|
150
|
+
.getRepository(DataSet)
|
151
|
+
.findOne({ where: { domain: { id: In([domain.id, domain.parentId].filter(Boolean)) }, id: dataSetId } })
|
150
152
|
|
151
153
|
// do what you gotta do
|
152
154
|
})
|