Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

FunctionNode: 지연 평가하는 시계열 계산

foundryts.nodes.FunctionNode(children)는 하나 이상의 시계열을 새 시계열로 변환하는 질의를 담습니다. children은 계산의 입력 노드입니다. 변환 함수를 적용하면 새로운 FunctionNode를 만들거나, 최종 요약값을 만드는 SummarizerNode를 얻습니다.

노드 구성은 계산 계획을 만드는 단계입니다. to_pandas 또는 to_dataframe을 호출하면 질의를 평가하여 결과를 가져옵니다. 실행에는 FoundryTS 환경과 리소스 설정이 필요합니다.

계산 연결 예제

다음 가상 관측은 나노초 정수 시각과 숫자 값을 사용합니다.

import foundryts.functions as F

series = F.points(
    (100, 0.0),
    (200, float("inf")),
    (300, 3.14159),
    (2147483647, 1.0),
    name="series",
)
scaled = series.scale(1.5)
time_shifted = scaled.time_shift(1000)
result_df = time_shifted.to_pandas()

scale과 time_shift를 연결하는 동안에는 결과를 평가하지 않습니다. 마지막 호출은 값을 1.5배로 만들고 시각을 1,000나노초 늦춘 시계열을 DataFrame으로 반환합니다.

timestampvalue
1970-01-01 00:00:00.0000011000.0
1970-01-01 00:00:00.000001200inf
1970-01-01 00:00:00.0000013004.712385
1970-01-01 00:00:02.1474846471.5

메타데이터

멤버반환 내용
columns()결과 DataFrame 열 이름의 Tuple[str]
types()결과 열에 대응하는 형식의 Tuple[Type]
series_ids현재 노드와 하위 노드가 사용하는 모든 시계열 식별자

중첩 객체의 열 이름은 점으로 연결하여 평탄화합니다. 예를 들어 통계 결과에는 smallest_point.timestamp나 latest_point.value 같은 이름이 나타납니다.

import foundryts.functions as F

series = F.points((100, 0.0), (200, 1.0), name="series")
column_names = series.columns()
column_types = series.types()
statistics = series.statistics(start=0, end=300)
statistic_columns = statistics.columns()

일반 점 시계열의 columns는 timestamp와 value입니다. types는 시각과 값에 대한 형식 메타데이터를 반환하며, pandas의 dtype 객체를 반환하는 메서드는 아닙니다.

변환 및 요약 메서드

메서드마다 단일 입력 변환, 여러 입력 결합 또는 요약이라는 역할이 다릅니다. 다음 인수는 노드 메서드의 호출 형태입니다.

메서드인수역할
cumulative_aggregate*args, **kwargs시각별 누적 집계
derivative없음시간에 따른 값의 미분
distributionstart=None, end=None, bins=None, start_value=None, end_value=None값 분포 요약
dslprogram, return_type, labels=None, before='nearest', internal='linear', after='nearest'수식 적용
first_point없음첫 관측
integralmethod='LINEAR'시간축에 따른 적분
interpolatebefore=None, internal=None, after=None, frequency=None, rename_columns_by=None, static_column_name=None보간 설정
last_point없음마지막 관측
meanchildren입력 시계열들의 평균
periodic_aggregate*args, **kwargs일정한 시간 구간별 집계
rolling_aggregate*args, **kwargs이동 시간 구간 집계
scalefactor값에 배율 적용
scatterstart_timestamp, end_timestamp, first_interpolation, second_interpolation, regression_fit두 시계열의 대응 값 분석
skip_nonfinite없음유한하지 않은 값 제외
statisticsstart=None, end=None, window=None, **kwargs통계 요약
sumchildren입력 시계열 합
time_extent없음관측 시각 범위
time_rangestart=None, end=None시간 범위 제한
time_shiftduration시각 이동
udffunc, columns=None, types=None사용자 정의 함수 적용
unit_conversionfrom_unit, to_unit단위 변환
value_shiftdelta값에 일정량 추가
wheretrue=None, false=None조건 시계열을 사용한 값 선택

예를 들어 series.scale(1.5)는 시계열을 계속 변환할 수 있는 노드를 만들고, series.statistics()는 요약 결과를 평가할 노드를 만듭니다. 여러 입력을 받는 수식에는 각 입력 시계열을 전달해야 합니다.

DataFrame으로 평가

to_pandas

FunctionNode.to_pandas(fts=None)

현재 노드의 계산을 평가하여 pandas.DataFrame을 반환합니다. fts에는 사용할 FoundryTS 세션을 선택적으로 전달하며 생략하면 세션을 자동으로 구성합니다. 반환한 DataFrame에는 원시 관측 또는 변환한 시계열의 결과가 들어갑니다.

to_dataframe

FunctionNode.to_dataframe(fts=None)

현재 노드를 평가하여 pyspark.sql.DataFrame을 반환합니다. fts의 의미는 to_pandas와 같습니다. 큰 시계열이나 많은 결과를 Spark에서 분산 처리할 때 사용할 수 있습니다.

앞서 만든 series를 Spark 결과로 가져오려면 다음 호출을 사용합니다.

spark_df = series.to_dataframe()

한 결과를 pandas와 Spark 양쪽에서 평가할 필요가 없다면 사용할 출력 방식만 선택합니다.