udf: 시계열 질의 결과에 Python 함수 적용
foundryts.functions.udf(func, columns=None, types=None)는 시계열 질의의 최종 DataFrame 결과에 사용자 정의 Python 함수를 적용합니다. 보간이나 수식 결과를 포함하여 질의가 만든 pandas.DataFrame을 func에 전달합니다.
| 인수 | 형식 | 의미 |
|---|---|---|
| func | Callable[[pandas.DataFrame], Any] | 최종 결과에 적용할 Python 함수 |
| columns | List[str], 선택 | func가 DataFrame을 반환할 때 결과 열 이름. 기본값은 입력 열 이름 |
| types | List[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.000000000 | 0.0 | 0.0 |
| 1970-01-01 00:00:00.000000100 | 100.0 | 200.0 |
| 1970-01-01 00:00:00.000000140 | 140.0 | 280.0 |
| 1970-01-01 00:00:00.000000200 | 200.0 | 400.0 |
시계열 자체에 표현식을 적용하는 기능은 dsl입니다.