Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Python 변환의 값 매개변수

값 매개변수는 같은 변환 로직에 서로 다른 설정값을 전달합니다. 매개변수에는 이름, 자료형과 기본값이 있습니다. 변환을 선언할 때 명세를 지정하고, compute 함수에서는 주입된 매개변수 객체의 .value를 읽습니다. 값을 따로 지정하지 않으면 명세의 기본값을 사용합니다.

참조역할
StringParam문자열 기본값과 선택적인 허용값 집합
IntegerParam정수 기본값
FloatParam부동소수점 기본값
BooleanParam불리언 기본값
ParamJobSpec 값, 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도 별도로 제공됩니다. 클래스별 생성자 인자와 입력 결과 처리 메서드는 위 참조에서 확인합니다.

데이터셋 리소스 자체를 연결하는 명세는 입출력 참조에서 다룹니다. 값 매개변수와 데이터셋 입출력을 같은 변환 선언에 함께 등록할 수 있습니다.