注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
トランスフォームのプレビューのドキュメントで説明している入力戦略の設定「サンプリング済み」と「データセット全体」に加えて、VS Code のプレビューでは「コード定義のフィルター」という選択肢もサポートしています。これにより、トランスフォームのプレビュー時に読み込むデータを厳密に制御するカスタム Python 関数を記述できます。ランダムサンプリングやデータセット全体の読み込みに頼るのではなく、使用するデータのサブセットを決めるロジックを正確に定義できます。
適用可能な場合、これらのフィルターは述語プッシュダウン ↗を活用し、最も関連性の高いデータサンプルのみが読み込まれるようにします。Palantir extension for Visual Studio Code は、リポジトリ内でフィルターとして使用できる条件を満たすすべての関数を自動的に見つけ、プレビューの設定時にドロップダウンメニューに表示します。
特定のシナリオをテストする: 関係のないデータを選別することなく、開発で重要なエッジケースや特定のデータ条件に集中できます。
再利用可能なロジックを作成する: フィルターを1度記述すれば、複数のプレビューセッションで使用でき、開発ワークフローの一貫性が高まります。
パフォーマンスを微調整する: データセット全体の読み込みにも時間がかかる大規模なデータセットでは、フィルタリングするデータを厳密に指定して最適化できます。
複数のフィルターを組み合わせる: 複数のフィルターを選択し、任意の順序で連結して、高度なサンプリング戦略を作成できます。

拡張機能は、プロジェクトのコードベース内のどこにあっても、条件を満たすすべてのフィルターを自動的に見つけ、選択用のドロップダウンメニューに表示します。
Python 関数からプレビュー用のフィルターとして使用できるものを作成するには、以下のルールに従う必要があります。
関数は次の条件を満たす必要があります
(pyspark.sql.DataFrame) -> pyspark.sql.DataFrame(polars.LazyFrame) -> polars.LazyFrame(collections.abc.Iterator[transforms.api.FileStatus]) -> collections.abc.Iterator[transforms.api.FileStatus]関数は次のいずれにも該当してはいけません
if、with、for などの文の内部で定義されているasync 関数またはプライベート関数である(関数名は _ で始めることはできません)次の例には、有効なプレビュー用のフィルター関数がいくつか含まれています。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19from pyspark.sql import DataFrame from pyspark.sql import functions as F from collections.abc import Iterator from transforms.api import FileStatus import itertools as it import polars as pl def limit_files(files: Iterator[FileStatus]) -> Iterator[FileStatus]: """ ファイルシステムの一覧に含まれるファイル数を制限します。""" return it.islice(files, 10) def ocean_animals_only(df: DataFrame) -> DataFrame: """ 海に生息する動物のみを取得します """ return df.filter(F.col("Habitat") == "Ocean") def grassland_animals_only_lightweight(df: pl.LazyFrame) -> pl.LazyFrame: """ 草原に生息する動物のみを取得します """ return df.filter(pl.col("Habitat") == "Grassland")
フィルター関数の上に表示される CodeLens ヒントによって、関数が使用条件を満たしているかどうかのフィードバックをすぐに確認できます。

パラメーターを追加すると、フィルターの柔軟性を高められます。これにより、さまざまなシナリオに対応する、汎用的で再利用可能なフィルター関数を作成できます。
* 記号を追加し、キーワード専用引数として指定します。次に、パラメーターを使用する例を示します。
Copied!1 2 3 4 5 6from pyspark.sql import DataFrame from pyspark.sql import functions as F def filter_animals_by_habitat(df: DataFrame, *, habitat: str) -> DataFrame: """ 海に生息する動物のみを取得します """ return df.filter(F.col("Habitat") == habitat)
habitat パラメーターの前にある * 記号に注目してください。この記号により、パラメーターはキーワード専用引数に分類されます。
現在サポートされているパラメーターのデータ型は次のとおりです。
strintfloatbool関数シグネチャでパラメーターのデフォルト値を指定できます。デフォルト値を指定すると、パラメーターは任意になり、設定時に値を入力しなかった場合はデフォルト値が使用されます。
Copied!1 2 3 4 5 6 7 8 9from pyspark.sql import DataFrame from pyspark.sql import functions as F def example_filter_with_params( df: DataFrame, *, int_param: int, float_param: float = 3.3, str_param: str = "Hello world", bool_param: bool = True ) -> DataFrame: """異なるデータ型のパラメーターを多数持つ関数の例です""" print(f"int_param: {int_param}, float_param: {float_param}, str_param: {str_param}, bool_param: {bool_param}") return df.limit(int_param)
プレビュー用にパラメーター付きのフィルターを選択すると、パラメーターごとにプロンプトが表示されます。

フィルター選択用のドロップダウンメニューには、使用可能なフィルターが表示されます。ただし、トランスフォームのコンテキストに応じて、特定の種類のフィルターを選択するほうが適している場合があります。
DataFrame フィルターを使用します。LazyFrame フィルターを使用します。Iterator[FileStatus] フィルターを使用します。