Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

시계열 기반 속성값 스트리밍(Stream Values) (V2)

지리 시계열 참조를 포함하여 시계열 기반 속성의 지점을 스트리밍합니다. 요청 본문의 range로 절대 또는 상대 시간 범위를 지정합니다.

HTTP 요청

POST /api/v2/ontologies/{ontology}/objects/{objectType}/{primaryKey}/timeseries/{property}/streamValues

작업 식별자는 v2.streamValues입니다. OAuth2로 호출하는 타사 애플리케이션에는 api:ontologies-read 권한 범위가 필요합니다. 각 요청에 Authorization: Bearer <접근 토큰>을 전달합니다.

경로 매개변수

이름자료형필수 여부의미와 조건예시 값
ontologystring필수온톨로지의 API 이름 또는 RID입니다. List Ontologies 또는 Ontology Manager에서 확인합니다.palantir
objectTypestring필수객체 유형의 API 이름입니다. List Object Types 또는 Ontology Manager에서 확인합니다.employee
primaryKeystring필수시계열 속성을 가진 객체의 기본 키입니다.50030
propertystring필수시계열 기반 속성의 API 이름입니다. Ontology Manager 또는 Get Object Type에서 확인합니다.performance

쿼리 매개변수

이름자료형필수 여부의미와 조건예시 값
sdkPackageRidstring선택생성된 SDK 패키지의 RID입니다.
sdkVersionstring선택생성된 SDK의 버전입니다.
branchstring선택읽을 Foundry 브랜치입니다. 생략하면 기본 브랜치를 사용합니다.ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252

요청 본문

본문 형식은 StreamTimeSeriesValuesRequest이며 필수입니다.

이름자료형필수 여부의미와 조건예시 값
rangeunion<absolute, relative>선택시계열을 조회할 절대 또는 상대 시간 범위입니다.

range의 구조

시간 범위의 형식을 사용합니다.

현재 시각을 기준으로 5개월 전부터 1개월 전까지 조회하는 요청 본문입니다.

{
  "range": {
    "type": "relative",
    "startTime": {
      "when": "BEFORE",
      "value": 5,
      "unit": "MONTHS"
    },
    "endTime": {
      "when": "BEFORE",
      "value": 1,
      "unit": "MONTHS"
    }
  }
}

응답

응답은 바이너리 스트림입니다. 예제는 본문을 바이트 그대로 파일에 기록합니다.

개별 오류

오류 응답 처리는 공통 API 오류 계약을 따릅니다.

요청 예제

FOUNDRY_HOST에는 https://를 제외한 호스트, FOUNDRY_TOKEN에는 유효한 토큰을 제공합니다. 예시 객체와 performance 속성은 실제 조회 대상에 맞춰 바꿉니다. SERIES_OUTPUT_FILE은 응답 바이트를 저장할 파일 경로입니다. 기존 파일을 덮어씁니다.

브랜치 RID는 실제 조회 대상으로 바꿉니다. 기본 브랜치를 사용할 때는 branch를 생략합니다.

cURL

curl --fail --output "${SERIES_OUTPUT_FILE}" -X POST \
	-H "Content-type: application/json" \
	-H "Authorization: Bearer ${FOUNDRY_TOKEN}" \
	"https://${FOUNDRY_HOST}/api/v2/ontologies/palantir/objects/employee/50030/timeseries/performance/streamValues?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252" \
	-d '{"range":{"type":"relative","startTime":{"when":"BEFORE","value":5,"unit":"MONTHS"},"endTime":{"when":"BEFORE","value":1,"unit":"MONTHS"}}}'

Python

Requests 라이브러리가 필요합니다.

import os
import requests

HOSTNAME = os.environ["FOUNDRY_HOST"]
TOKEN = os.environ["FOUNDRY_TOKEN"]
headers = {
    "content-type": "application/json",
    "authorization": "Bearer {}".format(TOKEN)
}
request_body = {
    "range": {
        "type": "relative",
        "startTime": {
            "when": "BEFORE",
            "value": 5,
            "unit": "MONTHS"
        },
        "endTime": {
            "when": "BEFORE",
            "value": 1,
            "unit": "MONTHS"
        }
    }
}

with requests.post('https://{}/api/v2/ontologies/palantir/objects/employee/50030/timeseries/performance/streamValues?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252'.format(HOSTNAME), headers=headers, json=request_body, stream=True) as response:
    response.raise_for_status()
    with open(os.environ["SERIES_OUTPUT_FILE"], "wb") as output:
        for chunk in response.iter_content(chunk_size=1024 * 1024):
            output.write(chunk)

Java

Apache HttpClient 4.5 API를 사용하는 StreamValuesExample.java 예제입니다.

import java.io.IOException;
import java.io.OutputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;

public class StreamValuesExample {
    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()) {
            HttpPost request = new HttpPost("https://" + HOSTNAME + "/api/v2/ontologies/palantir/objects/employee/50030/timeseries/performance/streamValues?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252");
            request.addHeader("content-type", "application/json");
            request.addHeader("authorization", String.format("Bearer %s", TOKEN));
            request.setEntity(new StringEntity("{\"range\":{\"type\":\"relative\",\"startTime\":{\"when\":\"BEFORE\",\"value\":5,\"unit\":\"MONTHS\"},\"endTime\":{\"when\":\"BEFORE\",\"value\":1,\"unit\":\"MONTHS\"}}}", ContentType.APPLICATION_JSON));
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                int status = response.getStatusLine().getStatusCode();
                if (status < 200 || status >= 300) throw new IOException("HTTP " + status);
                try (OutputStream output = Files.newOutputStream(Paths.get(System.getenv("SERIES_OUTPUT_FILE")))) {
                    response.getEntity().writeTo(output);
                }
            }
        }
    }
}

JavaScript

fetch와 Web Streams를 지원하는 Node.js에서 ES 모듈(.mjs)로 실행합니다.

import { createWriteStream } from "node:fs";
import { Readable } from "node:stream";
import { pipeline } from "node:stream/promises";

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

const response = await fetch(`https://${HOSTNAME}/api/v2/ontologies/palantir/objects/employee/50030/timeseries/performance/streamValues?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252`, {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${TOKEN}`,
    },
    body: '{"range":{"type":"relative","startTime":{"when":"BEFORE","value":5,"unit":"MONTHS"},"endTime":{"when":"BEFORE","value":1,"unit":"MONTHS"}}}'
 });
if (!response.ok) {
    await response.body?.cancel();
    throw new Error(`HTTP ${response.status}`);
}
await pipeline(Readable.fromWeb(response.body), createWriteStream(process.env.SERIES_OUTPUT_FILE));

PowerShell

$ErrorActionPreference = 'Stop'
$TOKEN = $env:FOUNDRY_TOKEN
$HOSTNAME = $env:FOUNDRY_HOST

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

Invoke-WebRequest -Uri "https://$HOSTNAME/api/v2/ontologies/palantir/objects/employee/50030/timeseries/performance/streamValues?branch=ri.branch..branch.d827184f-ee0e-4351-8b70-efbe51e07252" `
	-Method Post `
	-Headers $headers `
	-ContentType application/json `
	-Body "{`"range`":{`"type`":`"relative`",`"startTime`":{`"when`":`"BEFORE`",`"value`":5,`"unit`":`"MONTHS`"},`"endTime`":{`"when`":`"BEFORE`",`"value`":1,`"unit`":`"MONTHS`"}}}" `
    -OutFile $env:SERIES_OUTPUT_FILE