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는 각 검색 결과 시계열의 가장 이른 점과 가장 늦은 점의 시각을 계산합니다.