Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

udf: 시계열 질의 결과에 Python 함수 적용

foundryts.functions.udf(func, columns=None, types=None)는 시계열 질의의 최종 DataFrame 결과에 사용자 정의 Python 함수를 적용합니다. 보간이나 수식 결과를 포함하여 질의가 만든 pandas.DataFrame을 func에 전달합니다.

인수형식의미
funcCallable[[pandas.DataFrame], Any]최종 결과에 적용할 Python 함수
columnsList[str], 선택func가 DataFrame을 반환할 때 결과 열 이름. 기본값은 입력 열 이름
typesList[Any], 선택func가 DataFrame을 반환할 때 결과 열 형식. 기본값은 입력 열 형식

사용자 함수의 반환값은 Any입니다. DataFrame 결과의 열 이름이나 형식을 바꾸는 경우 columns와 types를 결과에 맞춰 지정합니다.

값을 두 배로 만드는 예

가상 관측의 정수 시각은 나노초입니다. 함수는 전달받은 DataFrame의 value 열에 배율을 적용하고 같은 DataFrame을 반환합니다.

import pandas as pd
import foundryts.functions as F

series = F.points(
    (0, 0.0),
    (100, 100.0),
    (140, 140.0),
    (200, 200.0),
    name="series",
)


def double(df: pd.DataFrame) -> pd.DataFrame:
    df["value"] *= 2
    return df


doubled = F.udf(
    double,
    columns=["timestamp", "value"],
    types=[int, float],
)(series)
doubled_df = doubled.to_pandas()

columns와 types는 결과 스키마의 메타데이터입니다. 예제 DataFrame에서 시각은 다음과 같이 표시됩니다.

timestamp입력 값출력 value
1970-01-01 00:00:00.0000000000.00.0
1970-01-01 00:00:00.000000100100.0200.0
1970-01-01 00:00:00.000000140140.0280.0
1970-01-01 00:00:00.000000200200.0400.0

시계열 자체에 표현식을 적용하는 기능은 dsl입니다.