IncrementalTableTransformInput: 증분 가상 테이블 입력
transforms.api.IncrementalTableTransformInput은 TableTransformInput에 증분 계산 기능을 추가합니다.
transforms.api.IncrementalTableTransformInput(table_tinput, from_version)
메타데이터 속성
| 속성 | 형식 | 의미 |
|---|---|---|
batch_incremental_configuration | BatchIncrementalConfiguration | 배치로 읽는 증분 입력의 설정 |
branch | str | 데이터셋 브랜치 |
column_descriptions | dict[str, str] | 열별 설명 |
column_typeclasses | dict[str, str] | 열별 typeclass 메타데이터 |
start_transaction_rid | str | 읽기 범위의 시작 트랜잭션 RID |
end_transaction_rid | str | 읽기 범위의 끝 트랜잭션 RID |
path | str | Compass 경로 |
rid | str | 데이터셋 RID |
테이블 식별 정보
catalog는 Spark 카탈로그 이름 문자열이고 identifier는 카탈로그 접두사가 있는 완전한 Spark V2 식별자 문자열입니다. 기반 테이블 유형이 해당 값을 노출하지 않으면 각 속성 접근에서 ValueError가 발생합니다. catalog는 지원하는 테이블의 Spark procedure에 사용할 수 있습니다.
dataframe(mode="added", options=None)
선택한 뷰의 PySpark DataFrame을 반환합니다. mode는 current, previous, added, modified, removed, changelog 중 하나이며 기본값은 added입니다. options는 추가 Spark 읽기 옵션의 dict이고 기본값은 None입니다.
Iceberg의 changelog 읽기 모드는 마지막 처리 스냅샷 ID부터 net-changes 변경 로그를 만듭니다. 식별자 열이 없는 테이블도 다룰 수 있지만 비용이 큰 경로이며 사용 중단 권고 상태입니다. 새 코드에는 아래 changelog 메서드를 사용합니다.
changelog(identifier_columns=None)
마지막 처리 스냅샷 ID 이후의 임시 변경 로그 뷰를 만듭니다. Iceberg 테이블에서만 지원합니다.
- identifier_columns에 각 행을 고유하게 식별하는 열 이름 목록을 주면 식별자 기반 변경 로그를 만듭니다. 각 식별자 행의 마지막 변경을 제공하며 더 빠르고 행 편집을 유연하게 다룰 수 있습니다.
- 식별자 열을 주지 않으면 net-changes 변경 로그를 만듭니다. 스냅샷 범위에서 DELETE와 INSERT를 상쇄하여 순변경을 계산하므로 데이터 셔플이 많고 식별자 기반 방식보다 느립니다.
반환 DataFrame에는 원래 테이블 스키마에 다음 열을 추가합니다.
| 열 | 내용 |
|---|---|
_change_type | 변경 유형 |
_change_ordinal | 변경 순서 정보 |
_commit_snapshot_id | 커밋 스냅샷 ID |
변경 유형의 일반 enum에는 INSERT, DELETE, UPDATE_AFTER와 UPDATE_BEFORE가 있습니다. 이 메서드의 식별자 기반 처리는 UPDATE_BEFORE를 제거하고 식별자별 최신 액션을 반환합니다. net-changes 방식은 INSERT와 DELETE를 반환합니다. 변경 로그의 처리 방식에 맞춰 출력 테이블을 갱신하고, 변경 로그의 식별자 열과 출력 갱신에 사용하는 식별자 열을 일치시킵니다.
나머지 읽기 인터페이스
filesystem(mode="added")은 current, previous, added만 지원하며 선택한 뷰의 FileSystem을 반환합니다. dataframe에서 지원하는 modified, removed 또는 changelog를 파일시스템 모드로 그대로 넘기지 않습니다.
pandas()는 pandas.DataFrame을 반환하며 별도 mode 인자가 없습니다. 읽기 범위를 명시적으로 정하려면 dataframe(mode=...).toPandas() 경로를 사용합니다. pandas 변환은 드라이버 메모리에 들어갈 크기로 제한합니다.