Transforms Python API
Transforms Python API는 입력 및 출력 명세, compute 함수와 실행 설정을 묶어 Pipeline을 구성합니다. 기본 Python 변환 저장소의 src/myproject/datasets/examples.py에서 transforms.api를 가져와 변환을 선언할 수 있습니다. 선언용 명세와 실행 중 주입되는 객체는 역할이 다릅니다.
최소 경량 변환
입력 표를 읽어 출력에 기록하는 가상 예시입니다. 두 경로를 실제 데이터셋으로 지정하고, meta.yml에 polars를 run 의존성으로 추가합니다.
from transforms.api import Input, Output, transform, LightweightInput, LightweightOutput
@transform.using(
output_dataset=Output("/path/to/output/dataset"),
input_dataset=Input("/path/to/input/dataset"),
)
def compute(input_dataset: LightweightInput, output_dataset: LightweightOutput) -> None:
output_dataset.write_table(input_dataset.polars(lazy=True))
PySpark DataFrame 변환
PySpark DataFrame을 바로 반환하는 방식은 transform_df를 사용합니다. 다음 가상 입력에는 문자열 hair 열이 있습니다.
from transforms.api import transform_df, Input, Output
@transform_df(
Output("/path/to/output/dataset"),
hair_eye_color=Input("/path/to/input/dataset"),
)
def filter_hair_color(hair_eye_color):
return hair_eye_color.filter(hair_eye_color.hair == "Brown")
실행 방식과 자료형
PySpark 변환은 Spark 입출력과 실행 맥락을 사용합니다. transform.using과 transform_polars는 Spark 없는 단일 노드 경로입니다. transform_pandas의 기본 Spark 경로는 계산 전후에 DataFrame을 변환하며 pandas로 가져올 데이터가 드라이버 메모리에 들어가야 합니다. DuckDB 관계를 표 출력으로 전달하는 경로는 Dataset 및 경량 출력의 지원 유형을 따릅니다.
주제별 계약은 등록과 실행 방식, 입출력 명세, 런타임 객체, 값 매개변수, 표와 원시 파일에서 확인할 수 있습니다.
함수와 데코레이터
| API | 역할 |
|---|---|
| configure | Spark 변환의 실행 설정 변경 |
| incremental | 입력, 출력 및 맥락을 증분 대응 객체로 구성 |
| lightweight | 기존 경량 실행 데코레이터. 3.85.0부터 transform.using 경로 권장 |
| transform | compute 함수와 이름별 매개변수로 변환 객체 구성. using으로 경량 선언 가능 |
| transform_df | PySpark DataFrame 입출력 함수 등록 |
| transform_pandas | pandas DataFrame 입출력 함수 등록 |
| transform_polars | Polars DataFrame 입출력 함수 등록 |
클래스
| 클래스 | 역할 |
|---|---|
| BooleanParam | 불리언 값의 ParameterSpec 입력 명세 |
| Check | expectation을 Data Health에 등록할 검사로 구성 |
| ComputeBackend | configure에서 사용할 SPARK/VELOX 백엔드 열거형 |
| ContainerTransform | 경량 단일 노드 계산의 호출 가능한 실행 객체 |
| ContainerTransformsConfiguration | ContainerTransform의 하위 호환 이름 |
| Dataset | foundry.transforms 이름 공간에서 데이터셋 뷰의 기반 파일과 표를 다루는 클래스 |
| FileStatus | 경로, 크기와 수정 시각의 namedtuple |
| FileSystem | Spark 변환의 원시 데이터셋 파일 접근 |
| FloatParam | 부동소수점 값의 입력 명세 |
| FoundryDataSidecarFile | 경량 단일 노드의 원시 파일 객체 |
| FoundryDataSidecarFileSystem | 경량 단일 노드의 파일시스템 |
| FoundryInputParam | Foundry 변환 입력 매개변수의 기본 계약 |
| FoundryOutputParam | Foundry 변환 출력 매개변수의 기본 계약 |
| IncrementalLightweightInput | 증분 ContainerTransform의 런타임 입력 |
| IncrementalLightweightOutput | 증분 ContainerTransform의 런타임 출력 |
| IncrementalTableTransformInput | 가상 테이블 입력의 증분 계산과 Iceberg 변경 로그 |
| IncrementalTransformContext | 증분 Spark 맥락 |
| IncrementalTransformInput | 증분 Spark 입력 |
| IncrementalTransformOutput | 증분 Spark 출력 |
| Input | 단일 데이터셋 입력 명세 |
| InputSet | 입력 명세 목록 |
| IntegerParam | 정수 값의 입력 명세 |
| LightweightContext | 경량 실행에 선택적으로 주입할 맥락 |
| LightweightInput | 경량 실행의 입력 객체 |
| LightweightInputParam | 경량 입력 매개변수 구현의 계약 |
| LightweightOutput | 경량 실행의 출력 객체 |
| LightweightOutputParam | 경량 출력 매개변수 구현의 계약 |
| Markings | 입력 보안 표지의 전파 중단 명세 |
| OrgMarkings | 출력에서 요구하지 않을 상속 조직의 명세 |
| Output | 단일 데이터셋 출력 명세 |
| OutputSet | 출력 명세 목록 |
| Param | compute 함수 매개변수의 기본 계약 |
| ParamContext | 매개변수 instance 생성에 주입할 맥락 |
| ParamValueInput | 매개변수 명세의 값 래퍼 |
| Pipeline | 변환 묶음과 등록 및 재귀 탐색 |
| StringParam | 문자열 값과 선택적인 허용값 집합 |
| TableTransformInput | 가상 테이블의 런타임 입력 |
| Transform | compute 함수와 입출력을 구성하는 호출 가능한 Spark 계산 단계 |
| TransformContext | 일반 Spark 실행에 선택적으로 주입할 맥락 |
| TransformInput | 일반 Spark 런타임 입력 |
| TransformOutput | 일반 Spark 런타임 출력 |
예외
| 예외 | 역할 |
|---|---|
| LightweightException | 경량 호환성 검사의 기본 예외 |
| LightweightNotImplementedError | 경량 환경의 미지원 기능 |
| LightweightTypeError | 경량 호환성 타입 오류 |
| LightweightValueError | 경량 호환성 값 오류 |