Keyboard shortcuts

Press ← or → to navigate between chapters

Press ? to show this help

Press Esc to hide this help

Python transform 미리보기

Palantir 확장은 로컬 VS Code 또는 플랫폼 작업공간에서 실제 입력 데이터로 transform을 미리 실행합니다. 전체 파이프라인 빌드 전에 결과와 오류를 보고 로직을 수정할 수 있습니다.

실행 방법

  • Command Palette의 Run preview

  • Palantir 패널 toolbar의 Preview 아이콘
  • transform 위 CodeLens의 Preview

  • Preview 패널의 파일 이름 옆 Preview

저장할 때마다 다시 실행하려면 Active Preview를, 중단 시점 변수를 보려면 디버깅을 사용합니다.

입력 전략

Preview > Configure input strategy에서 Sampled, Full dataset 또는 Code-defined filters를 선택합니다. 세 전략 모두 Preview Engine을 사용합니다.

Sampled

기본 전략은 무작위 표본이며 기본 행 수는 1,000입니다. 행 수를 설정할 수 있습니다. 로직의 빠른 점검에 쓸 수 있지만 표본의 합계나 건수를 전체 데이터의 값으로 해석하지 않습니다.

좁은 조건이나 여러 입력의 join은 일치하는 값이 표본에 포함되지 않아 결과가 매우 작거나 비어 보일 수 있습니다. 입력이 늘어나는 join에서는 표본 선택의 영향을 더 신중히 확인합니다.

Full dataset

사전 무작위 샘플링 없이 transform 로직에 맞춰 데이터를 읽습니다. 엔진이 조건을 데이터 소스까지 밀어내면 일치할 가능성이 높은 데이터 조각만 가져옵니다. 이름이 Full dataset이라고 항상 모든 파일과 행을 먼저 내려받는 것은 아닙니다.

필터 또는 join의 실제 입력 범위를 확인할 때 적합합니다. pushdown 활용 여부는 엔진과 코드에 따라 다릅니다. Spark와 DuckDB는 대체로 빠른 경로를 제공하고 Polars streaming도 활용할 수 있지만 pandas 자체는 이 predicate pushdown을 지원하지 않습니다.

필터가 없는 코드처럼 최적화 여지가 작으면 preview 비용이 커질 수 있습니다. 개발용 조건 필터를 넣는 경우 그 필터가 결과 범위를 바꾼다는 점을 함께 고려합니다.

Code-defined filters

직접 정의한 함수로 입력을 정합니다. 첫 필터는 전체 운영 입력에 대해 평가되고 이후 필터가 앞 결과에 순차 적용됩니다. 최종 행 수뿐 아니라 필터 구현의 계산 및 읽기 비용도 작아야 빠르게 실행됩니다.

증분 실행 결과

Spark 및 lightweight의 v1/v2 증분 의미 체계를 지원하며 운영 빌드와 같은 증분 해석/평가 로직을 사용합니다. 같은 시점의 입력과 이전 출력 조건으로 실행하고 표본 선택 차이를 제외했을 때 빌드와 대응하는 결과를 해석할 수 있습니다.

증분으로 실행하면 Ran incrementally를 표시합니다.

snapshot으로 실행하면 Ran as a snapshot을 표시합니다. 마우스를 올려 semantic_version 변경이나 입력 트랜잭션 유형 등 증분 실행을 하지 못한 이유를 봅니다.

로컬 실행 준비

관리자가 Control Panel의 Code Repositories 설정에서 로컬 preview를 허용하고 필요한 Download 권한을 부여해야 합니다. 저장소를 열면 확장이 환경을 구성하고 transform을 찾습니다. 준비된 뒤 실행할 수 있습니다.

데이터 이동과 결과 캐시는 로컬 보안을, Java transform의 별도 Gradle 경로는 일반 로컬 preview를 따릅니다.

기능 지원

기능Code Repositories previewVS Code Preview Engine
디버깅지원지원
Foundry 데이터셋지원지원
Transform generator지원지원
Data expectation지원지원
Lightweight transform지원지원
뷰와 객체 구체화지원지원
증분 실행미지원v1 및 v2 지원
External transform지원플랫폼 Code Workspaces에서 지원
열 통계 및 필터지원지원
미디어 집합미지원출력은 put_media_item만 지원. 미디어 증분 preview는 미지원
모델지원Spark transform에서 지원. 출력은 작업공간/로컬, 입력은 작업공간에서 지원
Spark profile미지원아래 설정 일부 지원
Cipher지원preview 표시와 빌드 암호화 구분
Language model지원이 transform preview에서는 미지원
가상 테이블지원플랫폼 Code Workspaces에서 지원
Iceberg 테이블미지원플랫폼 Code Workspaces에서 지원
복합 입력 샘플링지원코드 필터로 표/원본 파일 지원
디버깅 중 변수 preview지원지원
Spark sidecar미지원미지원

Cipher 열은 preview에서 **DATA WILL BE ENCRYPTED AT BUILD TIME** 표시를 사용하며 실제 암호화는 빌드할 때 적용합니다. 이 표의 Language model 제한은 transform Preview Engine에 대한 조건이며, 별도 Jupyter 모델 바인딩이나 IDE 코딩 도구의 LLM 사용과는 다릅니다.

Spark profile 적용 범위

미리보기는 실행 엔진 동작과 호환성에 관한 일부 Spark 설정을 적용합니다. profile로 preview의 CPU/메모리 자원을 바꿀 수는 없으며 Code Workspaces 자원 설정을 사용합니다.

기본 및 사용자 정의 profile을 지원하지만 아래 목록에 없는 옵션은 preview에서 무시합니다.

spark.sql.legacy.timeParserPolicy
spark.sql.parquet.datetimeRebaseModeInRead
spark.sql.legacy.parquet.datetimeRebaseModeInRead
spark.sql.legacy.parquet.datetimeRebaseModeInWrite
spark.sql.analyzer.failAmbiguousSelfJoin
spark.sql.legacy.dataset.nameNonStructGroupingKeyAsValue
spark.sql.legacy.fromDayTimeString.enabled
spark.sql.legacy.typeCoercion.datetimeToString.enabled
spark.sql.legacy.followThreeValuedLogicInArrayExists
spark.sql.legacy.allowUntypedScalaUDF
spark.sql.legacy.allowNegativeScaleOfDecimal
spark.sql.legacy.allowHashOnMapType
spark.sql.legacy.avro.datetimeRebaseModeInRead
spark.sql.legacy.avro.datetimeRebaseModeInWrite
spark.sql.legacy.charVarcharAsString
spark.sql.optimizer.collapseProjectAlwaysInline
spark.foundry.sql.allowAddMonths
spark.sql.parquet.int96AsTimestamp

profile 작성은 Spark 프로파일을 참고합니다.

외부 transform과 보안 표지

Code Workspaces에서 미리보는 Code Repositories 외부 transform은 내보내기 통제를 적용합니다. 작업공간은 과거 입력과 이전에 포함한 컨테이너의 보안 표지도 계산에 포함하므로 예전에 읽은 데이터의 표지가 현재 preview를 막을 수 있습니다.

호환되지 않는 표지가 남으면 체크포인트를 복원하지 않고 작업공간을 재시작합니다. 외부 transform의 조건을 따릅니다.

이 경로는 Jupyter notebook 또는 RStudio에서 게시한 transform의 외부 API 미지원 조건과 다른 저장소/실행 경로입니다.