注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
Visual Studio Code 用の Palantir 拡張機能を使用すると、ローカルの Visual Studio Code 環境や Palantir プラットフォーム内の VS Code ワークスペースから直接 Python トランスフォームをプレビューできます。この機能により、コードエディタを終了することなくトランスフォームを迅速にテストできます。現在、この機能は Python トランスフォームのみに利用可能です。
ローカルの Visual Studio Code 環境やプラットフォーム内の VS Code ワークスペースで、以下の 4 つの方法でプレビューを開始できます。
拡張機能は、トランスフォームをプレビューするための 2 つの方法を提供します。
Palantir Code Assist を Palantir 拡張機能と共に使用することは、ローカル開発中の標準的なプレビュー方法です。
Python トランスフォームのリポジトリをクローンし、Python ファイルを開くと、Palantir 拡張機能はプラットフォーム内のコードリポジトリ環境と同様に、リモートの Code Assist ワークスペースへの接続を確立します。
Code Assist が準備完了すると、拡張機能は開いているファイル内のすべてのトランスフォームを識別します。
プレビューするトランスフォームを選択すると、プレビューはリモートの Code Assist ワークスペースで実行されます。
ローカルプレビューは、プラットフォーム内の VS Code ワークスペース で作業するユーザーにとってデフォルトのプレビュー方法です。また、スタック管理者がローカルプレビューを有効にしている場合、ローカル開発においてもデフォルトのプレビュー方法となります。
ローカル開発の場合、ローカルプレビューはプラットフォーム管理者が コードリポジトリのControl Panelページ で有効にする必要があります。
Palantir リポジトリを開くと、拡張機能は環境を設定します。環境が設定され、トランスフォームが検出されると、ローカルでプレビューを実行できるようになります。これを行うために、拡張機能はデータセットの一部をユーザーのマシンに一時的にダウンロードし、適切なデータのアクセス権を持っている場合に限り保存します。
Code Assist プレビューと Preview Engine プレビューは異なる実行モデルを使用します。Code Assist プレビューは transforms
ライブラリのプレビュー版を使用します。これは、プラットフォーム内のビルド時に使用される実際の transforms
ライブラリの再実装に近いものです。これにより、精度を犠牲にして広範な機能サポートが得られます。プレビュー版とビルド版の transforms
ライブラリの間には微妙な実装の違いがあり、非直感的で時には誤解を招くプレビュー結果をもたらすことがあります。
一方、Preview Engine は元の transforms
ライブラリを使用してユーザーコードを実行します。このようにして、プレビュー モードで変換が実行されているという事実は、基礎となるコードにほとんど感知されず、より高い精度とパフォーマンスが得られます。主な欠点は、アーキテクチャの下位にある各ライブラリプリミティブのサポートを追加する必要があるため、執筆時点でサポートされている機能が少ないことです。
Preview Engine にはサンプルなしデータセットロードオプションがあります。その重要性を理解するために、Code Assist プレビューと Preview Engine プレビューの両方の入力ロード方法を見てみましょう。入力データセットが要求されると、プレビューが実際に実行される前に入力データセットの特定のサブセットがディスクにダウンロードされます。このサブセットは入力から均等にサンプリングされ、行数はユーザーが設定でき、デフォルトは 10,000 行です。いくつかの使用例では、このサンプリングは適切であり、統計的バイアスを導入しません。しかし、ナローフィルターや複数の入力間の結合など特定のトランスフォームにとっては、フィルタリング式の一致値の可能性が低くなり、結合式の場合は結合された入力の数に対して指数関数的に可能性が低くなるため、結果が欺瞞的に短くなる可能性があります。
サンプルなしデータセットロードの場合、事前サンプリングは行われません。代わりに、Preview Engine は Spark や Polars などの最新のデータ処理エンジンに依存して、プッシュダウンプレディケート ↗ をデータソースレベルにプッシュダウンし、クエリに一致する可能性が最も高いデータセットのチャンクのみをダウンロードします。これにより、トランスフォームコード内のどこかで使用されるフィルターやその他のナローワリング式がプッシュダウンの対象となり、追加の計算時間をほとんどかけずに完全に正確なプレビュー結果が得られます。
一部のパイプラインでは、フィルター式を含まないパイプラインなど、プレディケートプッシュダウンの利点を完全に活用することはできません。このような場合、パイプラインの著者はコードにいくつかの条件付きフィルター式を導入して、開発中のプレビュー実行を高速化できます。
特定の入力に対してサンプリングされたデータセットロードまたはサンプルなしデータセットロードのどちらを選択するかを決定する際に、もう 1 つの注意点があります。サンプリングされた入力はローカルにディスクにキャッシュされますが、サンプルなしロードではキャッシュはサポートされていません。つまり、入力が結合式で使用されず、パイプラインプレビューの正確性に対するフィルターの統計的特性がそれほど重要でない場合、サンプリングされたデータセットロードはより高速なプレビューのための優れた選択です。それ以外のすべての場合では、サンプルなしデータセットロードを優先する必要があります。
以下の表は、異なるプレビュー実行モデルの現在のサポートマトリックスを示しています。コードリポジトリプレビュー は、コードリポジトリだけでなく、Visual Studio Code 拡張機能のリモートプレビューモードでも使用されます。ローカルモードでプレビューする場合、ユーザーは Full dataset
(サンプルなしと同じ) と Sampled
データセットロードモードを使用することができます。
コードリポジトリ (Code Assist) | サンプルなしプレビュー (Preview Engine) | サンプル済みプレビュー (Preview Engine) | |
---|---|---|---|
デバッグ | サポート | サポート | サポート |
Foundry データセット | スキーマ付きの表形式および生ファイル | 表形式データセットのみ | スキーマ付きの表形式および生ファイル |
トランスフォームジェネレータ | サポート | サポート | サポート |
軽量トランスフォーム | サポート | 非サポート | サポート |
ビュー & オブジェクトの実体化 | サポート | 非サポート | 非サポート |
インクリメンタリティ | 無視 | 非サポート | 非サポート |
外部トランスフォーム | ソースおよび出力ポリシーの両方 | Code Workspaces のソースをサポート | Code Workspaces のソースをサポート |
メディアセット | サポート | 非サポート | 非サポート |
モデル | サポート | 非サポート | 非サポート |
暗号 | サポート | 非サポート | 非サポート |
言語モデル | サポート | 非サポート | 非サポート |
データ期待値 | サポート | 非サポート | 非サポート |
仮想テーブル | サポート | 非サポート | 非サポート |
Spark サイドカー | 非サポート | 非サポート | 非サポート |
Code Workspaces 内の外部トランスフォームは厳格な輸出規制を施行します。Code Workspaces アプリケーションはワークスペースの入力の履歴を保持しているため、追加のセキュリティマーキングを含む以前の入力により、マーキング違反のためにプレビューが停止することがあります。さらに、アプリケーションはワークスペースがマーキングセキュリティチェックと輸出規制を計算する際に、以前に組み込まれたすべてのコンテナマーキングを考慮し、マーキングされたデータの不適切な露出を避けます。
ワークスペースに外部トランスフォームと互換性のないマーキングが含まれている場合、チェックポイントなしでワークスペースを再起動して追跡されたマーキングをクリアします。追加情報については、外部トランスフォームのドキュメント を参照してください。
ローカル開発および VS Code ワークスペースの両方で、サンプルなしデータセットロードがトランスフォームのプレビューに使用されているが、トランスフォームがサポートされていない機能も使用している場合、プレビューはサンプル済みデータセットロードにフォールバックします。この動作は、拡張機能のログで警告として表示されます。