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

Workshop で Python 関数を使用する

前提条件

このガイドは、Python 関数をすでに作成して公開していることを前提としています。チュートリアルについては、Python 関数のはじめにのドキュメントを参照してください。Python SDK を使用してオントロジーをクエリする例については、Python オントロジー SDK のドキュメントを参照してください。

Workshop で Python 関数を使用する

Workshop で、モジュールの左側にある変数タブから Python 関数を検索します。サーバーレス関数とデプロイ済み関数の両方がここに表示されます。サーバーレス関数は、常にどのバージョンでも実行でき、手動でデプロイする必要はありません。デプロイ済み関数には、関数と関数バージョンのそれぞれについて、次の3つの状態のいずれかを示すアイコンが表示されます。

  • 実行中: この関数とバージョンはリクエストを処理できます。
  • 停止しました: この関数とバージョンは利用できません。関数セレクターで情報アイコンにカーソルを合わせ、設定、デプロイメントを作成して開始するの順に選択すると、関数が利用可能になります。
  • アップグレード中: この関数とバージョンはまだ利用できません。
Workshop の Python 関数

新しいリリースを作成する

関数のリポジトリで同時にホストされるバージョンは1つだけです。ダウンタイムを抑えて関数を変更するには、変更を加えた新しい関数(function_v1 など)を追加し、こちらの説明に従ってタグを付けることを推奨します。タグとリリースの下にある公開済み関数から、Ontology Manager で開くを選択します。

Ontology Manager で、アプリケーションで使用する関数リポジトリのバージョンを選択し、アップグレードを選択します。

デプロイ済み関数をアップグレードする

このリポジトリの関数を使用しているすべての下流のアプリケーションを、デプロイした新しいバージョンに更新します。以前のデプロイメントバージョンは実行されなくなるため、この変更を行う間、アプリケーションには短いダウンタイムが発生します。function_v0 と function_v1 は同時に利用可能になるため、新しいデプロイメントバージョンに切り替える必要はありますが、使用する関数を変更する必要はありません。function_v0 が使われなくなったら、その関数を削除できます。

エラーをデバッグする

Workshop で関数が期待どおりに動作しない場合は、まず、問題が関数のロジックに関するものか、応答性に関するものかを確認します。ロジックに問題がある場合は、関数の元となるコードリポジトリのソースコードを確認します。関数が応答しない、またはエラーをスローする問題がある場合は、次の手順に従います。

  1. 関数セレクターのドロップダウンメニューで、選択したバージョンが現在実行中かどうかを確認します。
Workshop の関数バージョンセレクター。
  1. 関数がデプロイされていないか、アップグレード中の場合は、関数の情報アイコンにカーソルを合わせ、設定を選択します。Ontology Manager に移動するので、デプロイを開始を選択すると、関数が再び実行されます。
Python 関数バージョンの情報。
  1. 関数が実行中の場合、またはデプロイメントの動作についてさらに情報が必要な場合は、Ontology Manager の左側のパネルからデプロイを選択して、詳細なログを表示します。ライブで表示を選択すると、SLS ログも利用できます。
Ontology Manager でデプロイメントログを表示する。

関数ベースの列を作成する

関数ベースの列を作成するには、次の要件を満たす関数を公開する必要があります。

  • 関数の入力パラメーターには、オブジェクトセットパラメーター(ontology_sdk.ontology.object_sets からインポート)を含める必要があり、任意でほかの入力パラメーターを含めることもできます。このオブジェクトセットパラメーターにより、テーブルに表示されているオブジェクトを関数に渡して、目的の派生列を生成できます。ここでは list[ObjectType] パラメーターも使用できますが、パフォーマンスが低いため、この選択肢は推奨しません。

  • 関数の戻り値の型は dict[ObjectType, ColumnType] である必要があります。ここで、ColumnType は列に使用するデータ型です。関数から複数の列を返す場合は、dict[ObjectType, CustomType] である必要があります。カスタム型については詳しくはこちらをご覧ください。

上記の条件を満たす関数を設定して公開すると、オブジェクトテーブルウィジェットの設定で、関数ベースのプロパティ列を設定できます。

1列を返す関数の例。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 from functions.api import Date, Integer, String, function from ontology_sdk import FoundryClient from ontology_sdk.ontology.object_sets import MyObjectTypeObjectSet from ontology_sdk.ontology.objects import MyObjectType @function def function_backed_column_single_col( selected_objects: MyObjectTypeObjectSet ) -> dict[MyObjectType, Integer]: final_dict = {} for curr_obj in selected_objects: final_dict[curr_obj] = 10 # 値は任意のロジックで定義できます return final_dict

1列を返す関数の例。

複数の列を返す関数の例。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 from dataclasses import dataclass @dataclass class CustomType: column_name_a: int column_name_b: int @function def function_backed_column_multiple_cols( selected_objects: MyObjectTypeObjectSet, some_other_parameter: String ) -> dict[MyObjectType, CustomType]: final_dict = {} for curr_obj in selected_objects: final_dict[curr_obj] = CustomType(column_name_a=10, column_name_b=20) return final_dict

複数の列を返す関数の例。