Python 변환의 값 매개변수
값 매개변수는 같은 변환 로직에 서로 다른 설정값을 전달합니다. 매개변수에는 이름, 자료형과 기본값이 있습니다. 변환을 선언할 때 명세를 지정하고, compute 함수에서는 주입된 매개변수 객체의 .value를 읽습니다. 값을 따로 지정하지 않으면 명세의 기본값을 사용합니다.
| 참조 | 역할 |
|---|---|
| StringParam | 문자열 기본값과 선택적인 허용값 집합 |
| IntegerParam | 정수 기본값 |
| FloatParam | 부동소수점 기본값 |
| BooleanParam | 불리언 기본값 |
| Param | JobSpec 값, JSON 스키마와 런타임 인스턴스의 공통 계약 |
| ParamContext | 런타임 인스턴스를 만들 때 주입하는 맥락 |
| ParamValueInput | 매개변수 명세의 값을 감싸는 객체 |
저장소와 실행 조건
스케줄 매개변수화는 베타이며 일부 플랫폼 인스턴스에는 제공되지 않을 수 있습니다. 현재 Python transforms에서 사용할 수 있습니다. 이 기능을 사용하려면 저장소의 transformsVersion은 10.96.0 이상, transformsLangPythonPluginVersion은 1.1137.0 이상이어야 합니다.
매개변수 이름은 변환 선언에서 사용하는 Python 이름으로 정합니다. 표준 모드 스케줄에서 매개변수를 숨기면 변환에 선언한 기본값을 사용합니다. 아래 예시에서 town_name의 기본값은 Seattle이고 risk_factor의 기본값은 5입니다.
Polars를 사용하는 예제이므로 저장소의 meta.yml에 polars를 run 의존성으로 추가합니다. 입력과 출력은 실제 데이터셋 경로로 지정합니다.
값을 사용하는 변환
가상 입력 towns 데이터셋에는 문자열 town과 숫자 base_risk 열이 있습니다. 지정한 마을을 선택하고 위험도에 매개변수 값을 곱해 adjusted_risk 열을 추가합니다. 입력에 adjusted_risk 열이 이미 있으면 계산한 값으로 바꿉니다.
import polars as pl
from transforms.api import Input, IntegerParam, Output, StringParam, transform
@transform.using(
processed_towns=Output("/path/to/output_towns"),
towns=Input("/path/to/input_towns"),
town_name=StringParam("Seattle"),
risk_factor=IntegerParam(5),
)
def compute(processed_towns, towns, town_name, risk_factor) -> None:
selected = towns.polars(lazy=True).filter(
pl.col("town") == town_name.value
)
result = selected.with_columns(
(pl.col("base_risk") * risk_factor.value).alias("adjusted_risk")
)
processed_towns.write_table(result)
필터 조건이 true인 행만 남기므로 town이 null인 행은 선택하지 않습니다. Foundry 빌드가 compute 함수를 실행하면 입력 데이터셋을 읽고 processed_towns에 결과를 기록합니다.
선언, 바인딩과 실행 객체
json_value는 JobSpec에 넣는 값이고 schema는 그 값의 JSON 스키마입니다. json_value가 None이면 매개변수는 바인딩되지 않은 상태이며, 그런 매개변수가 하나라도 있는 변환은 JobSpec을 게시하지 않습니다.
실행 시 instance(context, json_value)가 맥락과 원시 값을 받아 compute 함수에 주입할 객체를 만듭니다. 경량 실행을 위한 lightweight_instance도 별도로 제공됩니다. 클래스별 생성자 인자와 입력 결과 처리 메서드는 위 참조에서 확인합니다.
데이터셋 리소스 자체를 연결하는 명세는 입출력 참조에서 다룹니다. 값 매개변수와 데이터셋 입출력을 같은 변환 선언에 함께 등록할 수 있습니다.