Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

데이터셋 스키마 조회(Get Dataset Schema) (V2)

데이터셋의 스키마를 조회합니다. endTransactionRid를 생략하면 가장 최근 커밋된 트랜잭션을 기준으로 하며, versionId를 생략하면 최신 스키마 버전을 사용합니다.

매개변수

위치이름자료형필수 여부의미
경로datasetRidstring필수데이터셋 RID
쿼리branchNamestring선택브랜치 이름. 예: master
쿼리endTransactionRidstring선택끝 트랜잭션 RID. 생략하면 최신 커밋 트랜잭션
쿼리versionIdstring선택스키마 버전. 생략하면 최신 버전

요청 본문은 없습니다. 개별 매개변수가 유효해도 조합을 지원하지 않으면 InvalidParameterCombination이 발생합니다. 오류의 validCombinations와 providedParameters로 조합을 확인합니다.

응답 필드

응답은 GetDatasetSchemaResponse이며 다음 필드는 모두 필수입니다.

이름자료형의미
branchNamestring응답의 브랜치 이름
endTransactionRidstring응답의 끝 트랜잭션 RID
schemaobject업로드할 파일이 따라야 하는 데이터셋 스키마
versionIdstring스키마 버전 식별자

schema.fieldSchemaList와 재귀적인 DatasetFieldSchema의 전체 필드, 15개 열 유형, null 허용과 배열/맵/구조체 구성은 스키마 자료형을 따릅니다.

HTTP 요청

GET /api/v2/datasets/{datasetRid}/getSchema

작업 식별자는 v2.getDatasetSchema입니다. Authorization: Bearer <접근 토큰> 헤더로 인증합니다. OAuth 클라이언트에는 api:datasets-read 권한 범위가 필요합니다.

JSON 응답 예시

가상 데이터셋의 응답 예시입니다.

{
  "endTransactionRid": "ri.foundry.main.transaction.0a0207cb-26b7-415b-bc80-66a3aa3933f4",
  "schema": {
    "fieldSchemaList": [
      {
        "name": "id",
        "type": "LONG",
        "nullable": false,
        "customMetadata": {
          "description": "Primary key"
        }
      },
      {
        "name": "event_time",
        "type": "TIMESTAMP",
        "nullable": false
      },
      {
        "name": "price",
        "type": "DECIMAL",
        "precision": 10,
        "scale": 2,
        "nullable": true
      },
      {
        "name": "tags",
        "type": "ARRAY",
        "nullable": true,
        "arraySubtype": {
          "type": "STRING",
          "nullable": false
        }
      },
      {
        "name": "metrics",
        "type": "STRUCT",
        "nullable": true,
        "subSchemas": [
          {
            "name": "temperature",
            "type": "DOUBLE",
            "nullable": true
          },
          {
            "name": "humidity",
            "type": "DOUBLE",
            "nullable": true
          }
        ]
      }
    ]
  },
  "versionId": "0000000d-2acf-537c-a228-3a9fe3cdc523",
  "branchName": "master"
}

개별 오류

오류 이름오류 코드HTTP의미와 조건추가 매개변수
BranchNotFoundNOT_FOUND404브랜치를 찾을 수 없거나 토큰이 접근할 수 없습니다.datasetRid, branchName
DatasetNotFoundNOT_FOUND404데이터셋을 찾을 수 없거나 토큰이 접근할 수 없습니다.datasetRid
SchemaNotFoundNOT_FOUND404데이터셋과 브랜치의 스키마를 찾을 수 없거나 토큰이 접근할 수 없습니다.datasetRid, branchName, transactionRid
InvalidParameterCombinationINVALID_ARGUMENT400각 매개변수는 유효하지만 지정한 조합으로는 사용할 수 없습니다.validCombinations, providedParameters
DatasetViewNotFoundNOT_FOUND404트랜잭션에서 계산한 해당 브랜치와 시점의 데이터셋 뷰를 찾을 수 없습니다. 트랜잭션이나 파일이 없거나, 브랜치가 유효하지 않거나, 토큰이 접근할 수 없는 경우에 발생할 수 있습니다.datasetRid, branch
GetDatasetSchemaPermissionDeniedPERMISSION_DENIED403데이터셋 스키마 조회 권한이 거부되었습니다.datasetRid

요청 예제

FOUNDRY_HOST에는 https://를 제외한 Foundry 호스트를, FOUNDRY_TOKEN에는 유효한 토큰을 환경 변수로 제공합니다. 아래 RID, 이름과 파일 경로는 예시이며 실제 작업 대상으로 바꾸어야 합니다.

cURL

curl \
	-H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
	"https://${FOUNDRY_HOST}/api/v2/datasets/ri.foundry.main.dataset.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/getSchema?branchName=master&endTransactionRid=ri.foundry.main.transaction.0a0207cb-26b7-415b-bc80-66a3aa3933f4&versionId=0000000d-2acf-537c-a228-3a9fe3cdc523"

Python

Requests 라이브러리가 설치된 Python 환경에서 사용합니다.

import os
import requests

HOSTNAME = os.environ["FOUNDRY_HOST"]
TOKEN = os.environ["FOUNDRY_TOKEN"]
headers = {
    "authorization": "Bearer {}".format(TOKEN)
}

response = requests.get('https://{}/api/v2/datasets/ri.foundry.main.dataset.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/getSchema?branchName=master&endTransactionRid=ri.foundry.main.transaction.0a0207cb-26b7-415b-bc80-66a3aa3933f4&versionId=0000000d-2acf-537c-a228-3a9fe3cdc523'.format(HOSTNAME), headers=headers)
print(response)

Java

Apache HttpClient 4.5 API와 try-with-resources를 사용하는 예제입니다. 클래스 이름에 맞는 GetDatasetSchemaExample.java 파일에서 사용합니다.

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;

public class GetDatasetSchemaExample {
    public static void main(String[] args) throws Exception {
        String HOSTNAME = System.getenv("FOUNDRY_HOST");
        String TOKEN = System.getenv("FOUNDRY_TOKEN");

        try (CloseableHttpClient httpClient = HttpClientBuilder.create().build()) {
            HttpGet request = new HttpGet("https://" + HOSTNAME + "/api/v2/datasets/ri.foundry.main.dataset.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/getSchema?branchName=master&endTransactionRid=ri.foundry.main.transaction.0a0207cb-26b7-415b-bc80-66a3aa3933f4&versionId=0000000d-2acf-537c-a228-3a9fe3cdc523");
            request.addHeader("authorization", String.format("Bearer %s", TOKEN));
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println(response);
            }
        }
    }
}

JavaScript

fetch를 제공하는 Node.js 환경에서 사용합니다. 서비스 사용자 토큰을 브라우저로 전달하지 않습니다.

const HOSTNAME = process.env.FOUNDRY_HOST;
const TOKEN = process.env.FOUNDRY_TOKEN;

fetch(`https://${HOSTNAME}/api/v2/datasets/ri.foundry.main.dataset.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/getSchema?branchName=master&endTransactionRid=ri.foundry.main.transaction.0a0207cb-26b7-415b-bc80-66a3aa3933f4&versionId=0000000d-2acf-537c-a228-3a9fe3cdc523`, {
    method: 'GET',
    headers: {
        'Authorization': `Bearer ${TOKEN}`,
    }
}).then((response) => {
    console.log(response)
});

PowerShell

$TOKEN = $env:FOUNDRY_TOKEN
$HOSTNAME = $env:FOUNDRY_HOST

$headers = @{
    "authorization" = "Bearer $TOKEN"
}

$response = Invoke-WebRequest -Uri "https://$HOSTNAME/api/v2/datasets/ri.foundry.main.dataset.c26f11c8-cdb3-4f44-9f5d-9816ea1c82da/getSchema?branchName=master&endTransactionRid=ri.foundry.main.transaction.0a0207cb-26b7-415b-bc80-66a3aa3933f4&versionId=0000000d-2acf-537c-a228-3a9fe3cdc523" `
	-Headers $headers

$response.content