Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Search: 온톨로지 조건으로 시계열 찾기

foundryts.search.Search는 온톨로지 속성으로 시계열 참조를 검색하는 인터페이스입니다. 객체의 속성값에 따라 조회 대상이 바뀌는 작업에 사용합니다. FoundryTS의 search 속성을 통해 접근합니다.

검색 대상은 시계열 참조입니다. 시계열 안의 관측값이 조건을 만족하는지 찾으려면 dsl 또는 time_series_search를 사용합니다.

series

Search.series(query, max_results=10000, **kwargs)
인수형식기본값과 조건
queryAnyontology 속성 참조와 비교 연산으로 만든 검색 식
max_resultsint기본 10,000. 반환할 시계열 정의 수이며 1부터 10,000까지
object_typesList[str], 키워드검색할 객체 유형 ID 목록. 생략하면 모든 시계열 객체를 검색
property_type_idstr, 키워드반환할 TSP의 속성 ID. 객체에 TSP가 여러 개이고 기본 TSP가 없으면 필수
experimental_enable_complex_propertiesbool, 키워드기본 False. 복합 TSP를 백엔드에 전달할지 여부

반환값은 조건에 맞는 시계열 참조 FunctionNode를 담은 NodeCollection입니다. max_results는 반환할 시계열 정의 수를 제한하며 시계열 안의 관측점 수를 제한하는 값은 아닙니다.

검색 식은 ontology로 속성을 참조하고 ==로 값을 비교합니다. 전체 온톨로지를 검색하지 않도록 object_types로 범위를 제한하는 것이 권장됩니다. 검색 조건의 속성은 검색 가능해야 하며 그렇지 않으면 검색에 실패합니다. TSP 자체는 검색 가능 속성이 아닙니다.

템플릿 또는 다중 동기화의 qualified series ID처럼 원시 문자열 ID만으로 표현하지 않는 TSP를 사용할 때는 experimental_enable_complex_properties=True가 필요합니다.

기술 업종의 주가 시계열

가상 stock 객체 유형에는 ticker, sector, exchange와 price 속성이 있고 price는 주가 TSP입니다. 실행 환경과 입력 참조를 준비한 뒤 검색합니다.

from foundryts import FoundryTS
from foundryts.search import ontology

fts = FoundryTS()
tech_stocks_price = fts.search.series(
    query=ontology("sector") == "Technology",
    object_types=["stock"],
    property_type_id="price",
)
prices_df = tech_stocks_price.to_pandas()

가상 결과는 series, timestamp와 value를 가진 행으로 구성됩니다.

seriestimestampvalue
stock-A2023-01-01 00:00:00.000150.75
stock-A2023-01-02 00:00:00.000152.30
stock-A2023-01-03 00:00:00.000148.90
stock-B2023-01-01 00:00:00.000200.50
stock-B2023-01-02 00:00:00.000202.75
stock-B2023-01-03 00:00:00.000198.40
stock-C2023-01-01 00:00:00.000120.10
stock-C2023-01-02 00:00:00.000118.95
stock-C2023-01-03 00:00:00.000121.70
stock-D2023-01-01 00:00:00.000310.20
stock-D2023-01-02 00:00:00.000312.50
stock-D2023-01-03 00:00:00.000308.90

exchange 등 다른 검색 가능한 속성에도 같은 방식으로 조건을 적용할 수 있습니다.

속성 조건 없이 유형으로 검색

객체 유형 범위만 지정하는 검색도 가능합니다.

from foundryts import FoundryTS

fts = FoundryTS()
stock_series = fts.search.series(object_types=["stock-series"])
stock_series_df = stock_series.to_pandas()

기본 TSP가 설정된 가상 stock-series 객체들의 결과 예는 다음과 같습니다.

seriestimestampvalue
SPX_open1970-01-01 00:00:00.0001.5
SPX_open1970-01-01 00:00:00.0012.5
SPX_open1970-01-01 00:00:00.0043.5
ZVZZT_open1970-01-01 00:00:00.0002.5
ZVZZT_open1970-01-01 00:00:00.0013.5
ZVZZT_open1970-01-01 00:00:00.0044.5

ticker 조건

from foundryts import FoundryTS
from foundryts.search import ontology

fts = FoundryTS()
spx_series = fts.search.series(ontology("ticker") == "SPX")
spx_df = spx_series.to_pandas()

이 호출은 object_types를 지정하지 않아 전체 시계열 객체를 검색합니다. 다음 가상 결과처럼 조건에 맞는 객체에서 여러 시계열 참조를 찾을 수 있습니다. 객체 하나에 여러 TSP가 있고 기본 TSP가 없는 경우에는 property_type_id를 지정해야 한다는 조건도 적용됩니다.

seriestimestampvalue
SPX_open1970-01-01 00:00:00.0001.5
SPX_open1970-01-01 00:00:00.0012.5
SPX_open1970-01-01 00:00:00.0043.5
SPX_close1970-01-01 00:00:00.00515.0
SPX_close1970-01-01 00:00:00.00625.0
SPX_close1970-01-01 00:00:00.00735.0

복합 TSP 검색

from foundryts import FoundryTS
from foundryts.search import ontology

fts = FoundryTS()
complex_series = fts.search.series(
    ontology("ticker") == "SPX",
    object_types=["stock-series"],
    experimental_enable_complex_properties=True,
)
complex_df = complex_series.to_pandas()

가상 결과의 series 식별자는 stock-series:SPX:open_price처럼 객체와 속성을 나타낼 수 있습니다.

seriestimestampvalue
stock-series:SPX:open_price1970-01-01 00:00:00.0001.5
stock-series:SPX:open_price1970-01-01 00:00:00.0012.5
stock-series:SPX:open_price1970-01-01 00:00:00.0043.5