10.4.1 Embedded Python Executionについて

1つ以上のPythonエンジンで関数をデータ・パラレルで実行するか、タスク・パラレルで実行するかを選択できます。データ・パラレル処理では、データをパーティション化し、1つ以上のPythonエンジンを使用して各データ・サブセットの同じユーザー定義Python関数を呼び出します。タスク・パラレル処理では、引数として渡された一意の索引を使用して、1つ以上のPythonエンジンでユーザー定義関数が複数回呼び出されます。たとえば、索引を使用してランダム・シードを設定するモンテカルロ・シミュレーションにタスク・パラレル処理を使用できます。

次の表に、Embedded Python ExecutionのPython関数を示します。

関数 説明
oml.do_eval

データベース環境によって生成および管理されるPythonエンジンでユーザー定義Python関数を実行します。

oml.group_apply

1つ以上の列の値でデータベース表をパーティション化し、指定されたユーザー定義Python関数を各パーティションで実行します。

oml.index_apply

呼出しの一意の索引をユーザー定義関数に渡して、Python関数を複数回実行します。

oml.row_apply

データベース表を行のセットにパーティション化し、指定されたユーザー定義Python関数を各セットのデータに対して実行します。

oml.table_apply

単一のPythonエンジンで単一のpandas.DataFrameとしてデータベース内のデータに対してPython関数を実行します。

特殊な制御引数について

特殊な制御引数は、Embedded Python Execution関数に渡す関数の実行前または実行後の動作を制御します。oml.do_evalなどの関数の**kwargsパラメータを使用して特殊な制御引数を指定します。これらの制御引数は、その関数のfunc引数で指定された関数には渡されません。

表10-1 特殊な制御引数

引数 説明
oml_input_type

func引数に渡す入力データ・オブジェクトのタイプを識別します。

入力タイプは次のとおりです。

  • pandas.DataFrame
  • numpy.recarray
  • 'default' (デフォルト値)

すべての列が数値である場合、デフォルト・タイプはnumpy.float64型の2次元のnumpy.ndarrayです。それ以外の場合、デフォルト・タイプはpandas.DataFrameです。

oml_na_omit

入力データの欠損値の処理を制御します。oml_na_omit = Trueを指定した場合、欠損値を含む行が入力データから削除されます。すべての行に欠損値が含まれている場合、入力データは空のoml.DataFrameです。デフォルト値は、Falseです。

出力について

ユーザー定義Python関数をOML4Pyで実行すると、デフォルトでは、関数によって返されたPythonオブジェクトが返されます。また、OML4Pyは、ユーザー定義Python関数によって作成されたすべてのmatplotlib.figure.Figureオブジェクトを取得し、PNG形式に変換します。

graphics = Trueの場合、Embedded Python Execution関数はoml.embed.data_image._DataImageオブジェクトを返します。oml.embed.data_image._DataImageクラスには、PythonオブジェクトとPNGイメージが含まれています。__repr__()メソッドをコールすると、PNGイメージが表示され、Pythonオブジェクトが出力されます。デフォルトでは、.datは、ユーザー定義Python関数が返したPythonオブジェクトを返します。.imgは、それぞれの図のPNGイメージ・データを含むリストを返します。

スクリプト・リポジトリについて

Embedded Python Executionには、ユーザー定義Python関数を作成してOML4Pyスクリプト・リポジトリに格納する機能、ユーザー定義Python関数への読取り権限を付与したり取り消す機能、使用可能なユーザー定義Python関数をリストする機能、ユーザー定義Python関数をPython環境にロードする機能、スクリプト・リポジトリからユーザー定義Python関数を削除する機能が用意されています。

ユーザー定義Python関数が実行する他のアクションとともに、OML4Pyデータストアに格納されているPythonオブジェクトの作成、取得および変更を行うこともできます。

Embedded Python Executionでは、ユーザー定義Python関数は、データベース環境によって生成および管理される1つ以上のPythonエンジンで実行されます。これらのエンジンは、データベースによって動的に起動および管理されます。同じユーザー定義Python関数から、構造化データおよびPNGイメージを取得できます。

ユーザー定義Python関数は、プライベートまたはグローバルのいずれかにできます。グローバル関数は、すべてのユーザーが使用できます。プライベート関数は、所有者、または関数の所有者が読取り権限を付与したユーザーのみが使用できます。