Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

FoundryTS에서 시계열 조회

FoundryTS는 시계열을 직접 찾거나 온톨로지 속성을 통해 조회하는 Python 라이브러리입니다. Code Repositories와 Code Workbook에서 사용합니다. Functions에서는 이 라이브러리 대신 Python OSDK의 TSP 접근을 사용합니다.

변환에서 FoundryTS를 사용한 출력은 데이터셋입니다. 새 시계열로 제공하려면 series ID, Timestamp와 Value를 가진 데이터셋을 만들고 동기화의 입력으로 연결합니다.

Code Repositories

Python 저장소의 Libraries에서 foundryts, transforms-timeseries와 transforms-objects를 추가합니다.

Resources의 Ontology에서 조회할 객체 유형을 가져옵니다. 프로젝트 밖 리소스를 사용할 때는 참조도 준비합니다.

접근 방식가져올 프로젝트 참조
TSP를 통해 조회객체 유형의 기반 데이터셋
series ID 또는 검색식으로 조회시계열 동기화와 그 기반 데이터셋

Code Workbook

오른쪽 위 Environment > Configure environment에서 Conda environment의 Customize profile을 열고 foundryts를 추가합니다. Update environment로 반영합니다.

왼쪽 Contents에서 조회할 객체 유형 또는 시계열 Catalog 동기화를 Workbook 입력으로 추가합니다.

이 리소스와 기반 데이터셋도 Workbook과 같은 프로젝트 범위에 있어야 합니다. 누락된 항목은 도구 모음 설정의 Project scope settings에서 확인합니다. 입력만 추가하고 프로젝트 참조를 빠뜨리면 실행 오류가 날 수 있습니다.

가상 주식 시계열 예제

Stock series 객체 유형에서 sector가 Technology인 시계열을 찾고 각 시계열의 최초 및 최종 시각을 계산합니다. 객체 유형의 검색 식별자는 timeseries-demo-stock-series, 속성 이름은 sector라는 예제 계약입니다.

아래 리소스 RID와 출력 경로는 가상 값입니다. 실제 동기화, 객체 유형, 온톨로지 및 브랜치를 서로 맞추어 바꿉니다.

from transforms.api import Output, transform
from transforms.objects import ObjectInput
from transforms.timeseries import TimeSeriesInput
from foundryts import FoundryTS
from foundryts.search import ontology
import foundryts.functions as F


@transform(
    output=Output("/Examples/TimeSeries/technology_time_ranges"),
    ts=TimeSeriesInput(
        "ri.time-series-catalog.main.sync.6bdbda27-29f2-46e9-b0d8-12a1d886f27e"
    ),
    objects=ObjectInput(
        object_type_rid="ri.ontology.main.object-type.4168ed49-005b-4497-9b3b-4a4f1d22c1cb",
        ontology_rid="ri.ontology.main.ontology.f1eb403e-7eab-49d1-aa6d-bec9f759be2a",
        ontology_branch_rid="ri.ontology.main.branch.b8e3d74a-0cd1-402a-a21a-dc4b9745df4a",
    ),
)
def technology_time_ranges(ctx, ts, objects, output):
    fts = FoundryTS()
    result = fts.search.series(
        ontology("sector") == "Technology",
        object_types=["timeseries-demo-stock-series"],
    ).map(F.time_extent())
    output.write_dataframe(result.to_dataframe())

TimeSeriesInput과 ObjectInput 선언은 실행에 필요한 리소스 컨텍스트를 제공합니다. FoundryTS()가 이 컨텍스트를 사용하므로 함수 본문에서 ts와 objects를 직접 조회할 필요는 없습니다. time_extent는 각 검색 결과 시계열의 가장 이른 점과 가장 늦은 점의 시각을 계산합니다.