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

プロジェクト構造

デフォルトのブートストラップされたリポジトリ

ブートストラップされたPython transformsリポジトリの標準的な構造は以下の通りです:

transforms-python
├── conda_recipe
│   └── meta.yaml
└── src
    ├── myproject
    │   ├── __init__.py
    │   ├── datasets
    │   │   ├── __init__.py
    │   │   └── examples.py
    │   └── pipeline.py
    ├── setup.cfg
    └── setup.py

また、リポジトリ内には追加のファイルもあり、Code RepositoriesのFile ExplorerタブにあるSettings歯車アイコンからShow hidden files and foldersを選択することで確認できます。ほぼ全ての場合において、これらの隠しファイルは編集すべきではありません。Palantirは、これらの隠しファイルにカスタム変更を加えたリポジトリに対してサポートを提供しません。

以下のファイルについては、さらに詳しく学ぶことができます:

この先を読む前に、必ずはじめにガイドを通読してください。また、このページでは、ブートストラップされたPython transformsリポジトリに含まれているデフォルトのプロジェクト構造を使用していることを前提としています。

リポジトリアップグレードファイルの変更

リポジトリを初回作成する際、その時点での最新のPython transformsテンプレートバージョンのデフォルト内容でブートストラップされます。その後のリポジトリアップグレード時には、リポジトリ内のファイルが最新のPython transformsテンプレートバージョンの内容に合わせてアップグレードされます。一貫性を保つため、これらのファイルに対するユーザーのカスタム変更は、新しいアップグレードテンプレートによって上書きされる可能性があります。予期しない動作を引き起こす可能性があるため、これらのファイルへのカスタム変更はサポートしていません。

以下のファイルは、リポジトリアップグレードによって上書きされません

  • conda_recipeおよびsrcフォルダ内のデフォルトファイル
  • 内側と外側のbuild.gradleファイル

以下のファイルは、リポジトリアップグレード時に最新のPythonテンプレートファイルとマージされます。共通のキーがある場合は、Pythonテンプレートのバージョンが選択されます:

  • gradle.properties
  • versions.properties

残りのファイルは、最新のPythonテンプレートバージョンのファイルと一致するようにアップグレードによって上書きされます。

pipeline.py

このファイルでは、データ変換に関連するTransformオブジェクトのレジストリであるプロジェクトのPipelineを定義します。デフォルトのsrc/myproject/pipeline.pyファイルは以下の通りです:

Copied!
1 2 3 4 from transforms.api import Pipeline from myproject import datasets my_pipeline = Pipeline() my_pipeline.discover_transforms(datasets)

デフォルトのpipeline.pyファイルでは、自動登録を使用してTransformオブジェクトをプロジェクトのPipelineに追加していることに注意してください。自動登録は、プロジェクトのdatasetsパッケージ内のすべてのTransformオブジェクトを発見します。そのため、変換ロジックがdatasetsフォルダ内に含まれないようにプロジェクトを再構築する場合は、src/myproject/pipeline.pyファイルを適切に更新するようにしてください。

また、手動登録を使用してTransformオブジェクトを明示的にプロジェクトのPipelineに追加することもできます。各TransformオブジェクトをPipelineに明示的に追加する必要があるワークフローがない限り、自動登録の使用を推奨します。Pipelineオブジェクトについての詳細は、Pipelineについて説明しているセクションを参照してください。

setup.py

このファイルでは、プロジェクトのPipelineに関連付けられたrootという名前のtransforms.pipelineエントリポイントを定義します。これにより、Python transformsがプロジェクトのPipelineを発見できるようになります。デフォルトのsrc/setup.pyファイルは以下の通りです:

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import os from setuptools import find_packages, setup setup( name=os.environ['PKG_NAME'], version=os.environ['PKG_VERSION'], description='Python data transformation project', # Modify the author for this project author='{{REPOSITORY_ORG_NAME}}', packages=find_packages(exclude=['contrib', 'docs', 'test']), # Instead, specify your dependencies in conda_recipe/meta.yml install_requires=[], entry_points={ 'transforms.pipelines': [ 'root = myproject.pipeline:my_pipeline' ] } )

デフォルトのプロジェクト構造を変更する場合、src/setup.pyファイルの内容を変更する必要がある場合があります。詳細については、transforms.pipelineエントリポイントについて説明しているセクションを参照してください。

examples.py

このファイルには、データ変換コードが含まれています。デフォルトのsrc/myproject/datasets/examples.pyファイルは以下の通りです:

Copied!
1 2 3 4 5 6 7 8 9 10 11 """ from transforms.api import transform_df, Input, Output from myproject.datasets import utils @transform_df( Output("/path/to/output/dataset"), my_input=Input("/path/to/input/dataset"), ) def my_compute_function(my_input): return utils.identity(my_input) """

サンプルコードのコメントを解除した後、/path/to/input/dataset および /path/to/out/dataset を、それぞれユーザーの入力データセットと出力データセットへの完全なパスに置き換えることができます。データ変換が複数のデータセットに依存する場合、追加の入力データセットを提供できます。また、my_compute_function を更新して、入力データセットを出力データセットに変換するコードを含める必要があります。また、単一のPythonファイルは、複数の出力データセットの作成をサポートします。

サンプルコードは、DataFrame transform decorator を使用していることに注意してください。代わりに、以下を使用することもできます:

  • transform decorator - データセットではなく、ファイルへのアクセスに依存するデータ変換を書いている場合は、このデコレーターを使用すべきです、または
  • Pandas transform decorator - Pandasライブラリのみを使用し、入力データがメモリに収まる場合は、このデコレーターを使用すべきです。

Transformオブジェクトの作成に関する詳細情報(これは、ユーザーの入力および出力データセットと変換ロジックを記述します)は、Transformsの説明セクションを参照してください。

meta.yaml

condaビルドレシピは、conda ↗ パッケージをビルドするために必要なすべてのメタデータとスクリプトを含むディレクトリです。ビルドレシピのファイルの1つは meta.yaml で、このファイルにはすべてのメタデータが含まれています。このファイルの構造についての詳細情報は、meta.yamlファイルに関するcondaドキュメンテーション ↗を参照してください。 ここにデフォルトの conda_recipe/meta.yaml ファイルがあります:

注意:

  • オペレータの後にスペースを入れないでください。たとえば、scipy <= 1.4.0 は CI チェックに失敗します。
  • Foundry では、バージョンに対するオペレータ >= はまだサポートされていません。

pip で管理される依存関係の使用

ユーザーの変換が Conda ではなく、pip ↗ を使用してインストールされた場合に利用可能な特定のライブラリが必要な場合は、追加の pip セクションでそれらを宣言できます。依存関係は、ユーザーの Conda 環境の上にインストールされます。以下は、pip 依存関係を追加する例です: