데이터셋 View API
View는 자체 데이터 파일을 보관하지 않고 기반 데이터셋을 참조합니다. 읽을 때 기반 데이터셋들의 합집합으로 내용을 구성합니다. 행을 다루므로 기반 데이터셋에는 스키마가 있어야 합니다. 변환의 입력에는 사용할 수 있지만 출력으로 지정할 수는 없습니다.
기본 키와 중복 해결 규칙을 추가하면 중복 데이터를 처리할 수 있습니다. 기반 데이터셋에 새 데이터가 생기면 최신 중복 제거 결과를 제공하도록 빌드가 자동 실행됩니다. 빌드 과정 자체에서는 데이터를 읽거나 쓰지 않으므로 일반적으로 매우 빠르게 완료됩니다.
작업
| 작업 | 기능 |
|---|---|
| Create View | 새 뷰를 만듭니다. |
| Get View | 뷰 메타데이터를 조회합니다. |
| Add Backing Datasets | 기반 데이터셋을 추가합니다. |
| Replace Backing Datasets | 기반 데이터셋 목록을 교체합니다. |
| Remove Backing Datasets | 지정한 기반 데이터셋을 제거합니다. |
| Add Primary Key | 아직 기본 키가 없는 뷰에 기본 키를 추가합니다. |
View 응답
| 필드 | 자료형 | 필수 여부 | 의미 |
|---|---|---|---|
viewName | string | 필수 | 뷰의 표시 이름 |
datasetRid | string | 필수 | 뷰 자체의 RID |
parentFolderRid | string | 필수 | 상위 폴더 RID |
branch | string | 선택 | 뷰의 브랜치. 미지정 기본값은 대부분의 플랫폼 인스턴스에서 master |
backingDatasets | list<ViewBackingDataset> | 선택 | 기반 데이터셋 목록 |
primaryKey | object | 선택 | 기본 키와 중복 해결 계약 |
뷰 자체의 datasetRid와 backingDatasets[].datasetRid는 각각 뷰와 입력 데이터셋을 가리킵니다.
ViewBackingDataset
| 필드 | 자료형 | 필수 여부 | 의미와 조건 |
|---|---|---|---|
datasetRid | string | 필수 | 기반 데이터셋 RID |
branch | string | 선택 | 기반 데이터셋의 브랜치. 생략하면 뷰의 브랜치를 사용 |
stopPropagatingMarkingIds | list<MarkingId> | 선택 | 이 입력에서 상속하지 않을 보안 표지 ID 목록 |
stopPropagatingMarkingIds를 지정하는 호출자는 나열한 각 보안 표지에 대한 DECLASSIFY 권한이 있어야 합니다. 같은 보안 표지가 여러 기반 데이터셋에 붙어 있으면 각 입력의 목록에 모두 지정해야 합니다. 하나라도 남아 있으면 그 입력으로부터 표지를 상속합니다.
기반 데이터셋이 뷰와 같은 프로젝트에 없으면 뷰 프로젝트의 리소스 참조로 추가하거나 같은 프로젝트로 옮겨야 합니다. 리소스 참조 추가에는 Filesystem API를 사용할 수 있습니다.
기본 키 열
primaryKey는 생성자가 데이터에 대해 보장하는 계약입니다.
| 필드 | 자료형 | 필수 여부 | 의미 |
|---|---|---|---|
columns | list<string> | 선택 필드, 기본 키에는 비어 있지 않은 목록 필요 | 기본 키를 구성하는 열 |
resolution | tagged union | 필수 | unique 또는 duplicate |
기본 키 열 목록에는 다음 제약이 있습니다.
- 하나 이상의 열을 지정해야 합니다.
- 열 이름 정규화를 적용한 뒤 중복 열이 없어야 합니다.
- 모든 열이 스키마에 존재해야 합니다.
- 열 유형은
BYTE,SHORT,DECIMAL,INTEGER,LONG,STRING,BOOLEAN,TIMESTAMP,DATE중 하나여야 합니다.
기반 데이터셋이 없는 뷰에는 기본 키를 추가할 수 없습니다. 이미 있는 기본 키는 Add Primary Key로 변경할 수 없습니다.
중복 해결 방식
unique
각 행의 기본 키가 고유하다고 작성자가 보장합니다.
{"type": "unique"}
쓰기 작업이 이 불변 조건을 유지해야 하며 읽기 작업은 그 보장에 따라 최적화할 수 있습니다. unique로 선언하고 중복 키를 넣는 등 계약을 위반하면 동작이 정의되어 있지 않습니다.
duplicate
중복 키가 있을 수 있으므로 어떤 행을 선택할지 지정합니다.
| 필드 | 자료형 | 필수 여부 | 의미 |
|---|---|---|---|
type | string | 필수 | duplicate |
deletionColumn | string | 선택 | 최종 선택 행을 삭제한 것으로 볼지 표시하는 boolean 열 |
resolutionStrategy | tagged union | 필수 | latestWins 전략 |
latestWins는 columns에 지정한 열을 차례로 비교하여 가장 높은 값을 가진 행을 선택합니다. columns는 선택적인 문자열 목록 필드입니다. 열 이름이 시각을 뜻한다고 가정하지 말고 비교할 열을 명시합니다.
선택한 최종 행의 deletionColumn 값이 true이면 결과에서 제외하고, 그렇지 않으면 포함합니다. 삭제 표시 열은 실제 데이터셋에 존재하는 boolean 열이어야 합니다.
다음은 colA를 기본 키로 사용하고 colB, colC 순서로 행을 선택하는 가상 설정입니다.
{
"columns": ["colA"],
"resolution": {
"type": "duplicate",
"deletionColumn": "deletionCol",
"resolutionStrategy": {
"type": "latestWins",
"columns": ["colB", "colC"]
}
}
}