Developer toolchainPalantir 拡張機能 for Visual Studio Codeトランスフォームのプレビュー

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

トランスフォームをプレビューする

Palantir extension for Visual Studio Code を使用すると、ローカルの Visual Studio Code 環境または Palantir プラットフォームの VS Code Workspace から Python トランスフォームを直接プレビューできます。プレビューは、完全なビルドを実行する前にデータ変換の動作を確認できるライブテスト環境です。コードを記述して変更をすばやくプレビューすることで、ビルドやコンテキストの切り替えを行わずに即座にフィードバックを得られます。

プレビューを使用する理由

開発サイクルの短縮: パイプライン全体をビルドせずに、トランスフォームに対するフィードバックを即座に得られます。複雑なロジックを繰り返し改善する際に、時間を大幅に節約できます。

エラーの早期発見: データの問題、ロジックのエラー、予期しない結果が本番パイプラインに入り込む前に発見できます。

安心して試行: さまざまなアプローチを試し、結果を即座に確認できます。特に、データの探索やエッジケースのテストに役立ちます。

効率的なデバッグ: 実際のデータに対してコードが何を行うかを正確に確認できるため、問題を特定して修正しやすくなります。

トランスフォームをプレビューする

プレビューを開始する

ワークフローに最も適した方法に応じて、次の4つのいずれかの方法でプレビューを開始できます。

  1. コマンドパレット: コマンドパレットからプレビューを実行コマンドを選択します。

    コマンドパレットで「プレビューを実行」コマンドを見つけます。

  2. Palantir サイドパネル: ツールバーからプレビューアイコンを選択します。

  3. CodeLens: トランスフォームの上にあるプレビューを選択します。

    Python トランスフォームの例の上にある「プレビュー」の選択肢。

  4. プレビューパネル:****プレビューパネルを開き、コードのファイル名の横にあるプレビューボタンを選択します。

    VS Code の「プレビュー」パネルにある「プレビュー」ボタン。

拡張機能は、入力の実際のデータを使用してトランスフォームを実行し、結果を即座に表示します。

データの読み込み戦略を選択する

トランスフォームのプレビューで特に強力な機能の1つが、データの読み込み方法を制御できることです。変換ごとに必要なデータが異なるため、これは特に重要です。単純な集計はどのサンプルでも適切に動作しますが、対象を狭く絞るフィルターや複雑な結合をテストするには、より慎重なデータ選択が必要です。

戦略を選択するには、プレビューパネルで入力戦略を設定するを選択し、サンプリング済、フルデータセット、コード定義フィルターのいずれかを選択します。

サンプリング済(デフォルト)

サンプリング済戦略は、入力データからランダムなサンプルを読み込みます。デフォルトは1000行です。入力からランダムにサンプリングしてサブセットを作成し、行数は設定できます。

適した用途: サンプリングが適切で、統計的なバイアスを生じさせない変換。トランスフォームのロジックが妥当かどうかをすばやく確認するのに適しています。

制限事項: 対象を狭く絞るフィルターや複数の入力間の結合など、一部の変換では、フィルター式に一致する値がサンプルに含まれる可能性が低いため、結果が実際よりも少なく見えることがあります。複数の入力間の結合では、この問題が指数関数的に悪化します。

フルデータセット

フルデータセットオプションは、トランスフォームのロジックに基づいてインテリジェントにデータを読み込み、事前のサンプリングは行いません。代わりに、Preview Engine は Spark や Polars などの最新のデータ処理エンジンを利用して、述語をデータソースレベルにプッシュダウン ↗し、クエリに一致する可能性が最も高いデータセットのチャンクのみをダウンロードします。

適した用途: トランスフォームのコード内のどこで使用されていても、フィルターやその他の絞り込み式はプッシュダウンの対象となる場合があります。その結果、追加の計算時間をほとんどかけずに、完全に正確なプレビュー結果を生成できます。これは、フィルターや結合を正確にテストする際に特に役立ちます。

ベストプラクティス: 一部のパイプラインでは、述語プッシュダウンを十分に活用できません(たとえば、フィルター式を含まないパイプライン)。このような場合は、コードに条件付きフィルター式を追加することで、開発中のプレビュー実行を高速化できます。述語プッシュダウンのロジックの有効性は、選択したデータ処理エンジンに大きく依存します。Spark と DuckDB は通常、最も速く結果を生成し、ストリーミングモードの Polars も十分な性能を発揮します。一方、Pandas は述語プッシュダウンに対応していません。

コード定義フィルター

プレビュー中に読み込むデータを正確に制御する独自のカスタムフィルター関数を記述します。このオプションでは、コード内に直接実装した独自のカスタムフィルタリング戦略を指定できます。

適した用途: プレビューに使用するデータを細かく制御する必要がある場合、再利用可能なフィルタリングロジックを作成したい場合、またはランダムサンプリングでもフルデータセットの読み込みでも効果的に対応できない特定のシナリオをテストする必要がある場合。サンプリングはプレビューの高速化に有効に活用できますが、そのためには、フィルターが生成する出力が十分に少ないことに加え、フィルタリングロジックが効率的に実装されている必要があります。これは、コード定義フィルターが本番データセット全体を入力として実行されるためです。

詳細については、コード定義の入力フィルタリングのドキュメントを確認してください。

インクリメンタル(差分処理)プレビューの結果を理解する

インクリメンタルトランスフォームを使用する場合、プレビューパネルにはトランスフォームの実行方法に関する詳細なフィードバックが表示されます。Python トランスフォームの VS Code 統合は、本番ビルドと同じロジックを使用してインクリメンタル実行の可否を判定し、評価します。そのため、プレビューを実行すると、同じタイミングでビルドを開始した場合と同じ結果が生成されます(サンプリングの影響を無視した場合)。

トランスフォームがインクリメンタルに実行された場合:****プレビューパネルに「インクリメンタルに実行」タグが表示されます。

インクリメンタル実行後のプレビューパネル。

トランスフォームがスナップショットとして実行された場合:「スナップショットとして実行」タグが表示されます。このタグにカーソルを合わせると、トランスフォームをインクリメンタルに実行できなかった理由(semantic_version パラメーターの変更や、入力の特定のトランザクションタイプなど)が表示されます。

スナップショットモードでのインクリメンタル実行後のプレビューパネル。

インクリメンタルプレビューは、Spark と軽量トランスフォームの両方に対応しており、v1 と v2 の両方のインクリメンタルセマンティクスを使用できます。

インクリメンタル変換とその評価ロジックの詳細については、インクリメンタル変換のドキュメントを確認してください。

その他のリソース:


技術的な詳細

ローカル開発の前提条件

Palantir extension for Visual Studio Code は、Preview Engine を使用してローカルプレビューを実行します。この Preview Engine は、データに対するダウンロード権限がある場合に、データセットの一部をローカルマシンにストリーミングします。ローカルプレビューのセキュリティへの影響とデータストレージについて詳しくは、ローカル開発におけるセキュリティ上の考慮事項のドキュメントを参照してください。

ローカル開発中にプレビューを使用するには、プラットフォーム管理者が Control Panel の Code Repositories 設定ページでローカルプレビューを有効にする必要があります。

Gradle を使用した Java トランスフォームのローカルプレビューのセットアップについては、ローカル開発でトランスフォームをプレビューするのドキュメントを参照してください。

Palantir リポジトリを開くと、拡張機能が環境を設定します。環境のセットアップが完了し、トランスフォームが検出されると、ローカルでプレビューを実行できるようになります。

機能の対応状況の比較

次のテーブルは、Code Repositories と VS Code のプレビューにおける、各機能の現在の対応状況を示しています。Code Repositories のプレビューは、Code Repositories でのみ使用されるものではありません。VS Code でプレビューする際には、データセットの読み込みモードとして、データセット全体、サンプリング済み、コード定義のフィルター(サンプリングされていないデータにユーザー定義のフィルターを適用)を選択できます。いずれの場合も Preview Engine を使用します。

Code RepositoriesVS Code のプレビュー(Preview Engine)
デバッグ対応対応
Foundry データセット対応対応
トランスフォームジェネレーター対応対応
データが満たすべき条件対応対応
軽量トランスフォーム対応対応
ビューとオブジェクトの実体化対応対応
インクリメンタル(差分処理)非対応対応(v1 および v2 のセマンティクス)
外部トランスフォーム対応Code Workspaces で対応
列の統計とフィルター処理対応対応
メディアセット非対応対応[1]
モデル対応Spark トランスフォームで対応[2]
Spark プロファイル非対応一部の Spark 設定に対応
Cipher対応対応[3]
言語モデル対応非対応
仮想テーブル対応Code Workspaces で対応
Iceberg テーブル非対応Code Workspaces で対応
複雑な入力のサンプリング対応コード定義で対応(表形式ファイルと生ファイル)
デバッグ中の変数のプレビュー対応対応
Spark サイドカー非対応非対応

[1] メディアセットの出力プレビューでは、put_media_item のみ対応しています。メディアセットのプレビューはインクリメンタルに対応していません。

[2] モデルの入力と出力のプレビューは、VS Code ワークスペースとローカル開発の両方で利用できます。モデルの入力プレビューは、VS Code ワークスペースでのみ利用できます。

[3] Cipher 列には、プレビュー中にプレースホルダーテキスト **DATA WILL BE ENCRYPTED AT BUILD TIME** が表示されます。暗号化はビルド時に適用されます。

Spark プロファイル

Spark プロファイルを使用すると、カスタムの Spark 設定値をすばやく定義して使用し、トランスフォームのプレビュー中やビルド中の Spark エンジンの動作を指定できます。詳しくは、Spark プロファイルのドキュメントを参照してください。

VS Code のプレビューでは、プレビュー対象のトランスフォームの Spark プロファイルから一部の設定が適用されます。これには、実行エンジンの実行時の動作に影響する設定が含まれ、主に破壊的変更における下位互換性の維持に使用されます。Spark プロファイルを通じて、プレビューに割り当てられるリソースを変更することはできません。これは、Code Workspaces の設定ページで別途変更できます。

プレビュー中は、組み込みとユーザー定義の両方の Spark プロファイルを使用できます。以下のリストにないオプションは無視されます。

  • 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

外部トランスフォーム

Code Workspaces の外部トランスフォームでは、厳格なエクスポート制御が適用されます。Code Workspaces アプリケーションはワークスペースの入力履歴を保持するため、追加のセキュリティマーキングを含む過去の入力が、マーキング違反によってプレビューを停止させる場合があります。また、マーキングがついたデータの不適切な公開を防ぐため、ワークスペースがマーキングのセキュリティチェックとエクスポート制御を計算する際には、過去に取り込まれたすべてのコンテナマーキングが考慮されます。

ワークスペースに外部トランスフォームと互換性のないマーキングが含まれている場合は、Checkpoint を使用せずにワークスペースを再起動して、追跡されているマーキングをクリアします。詳しくは、外部トランスフォームのドキュメントを参照してください。