10.6.2.6 pyqIndexEvalファンクション(Autonomous Database)
ファンクションpyqIndexEval
は、Oracle Autonomous Databaseで使用すると、データベース環境によって生成されたPythonエンジンで必要なユーザー定義Python関数を複数回実行します。
ファンクションpyqIndexEval
は、SCR_NAME
パラメータで指定されたユーザー定義Python関数を実行します。PAR_LST
パラメータは、スクリプトでレンダリングされたイメージを取得するための特別な制御引数oml_graphics_flag
を指定し、oml_parallel_flag
およびoml_service_level
フラグはMEDIUMサービス・レベルを使用したパラレル処理を有効にします。関連項目: 特殊な制御引数(Autonomous Database)。
構文
FUNCTION PYQSYS.pyqIndexEval(
PAR_LST VARCHAR2,
OUT_FMT VARCHAR2,
TIMES_NUM NUMBER,
SCR_NAME VARCHAR2,
SCR_OWNER VARCHAR2 DEFAULT NULL,
ENV_NAME VARCHAR2 DEFAULT NULL
)
RETURN SYS.AnyDataSet
パラメータ
パラメータ | 説明 |
---|---|
|
たとえば、入力データ型を
関連項目: 特殊な制御引数(Autonomous Database)。 |
|
ファンクションによって返される出力の形式。次のいずれかになります。
関連項目: 出力形式(Autonomous Database)。 |
TIMES_NUM |
Pythonスクリプトを実行する回数。 |
|
OML4Pyスクリプト・リポジトリ内のユーザー定義Python関数の名前。 |
|
登録済Pythonスクリプトの所有者。デフォルト値は |
|
指定されたユーザー定義Python関数の実行時に使用されるconda環境の名前。 |
例
Python関数fit_lm
を定義し、myFitMultiple
という名前でスクリプト・リポジトリに格納します。この関数は、scikit-learn
のIRISデータセットからサンプリングされたデータ基づいた適合モデルの索引および予測スコアが含まれるpandas.DataFrame
を返します。
begin
sys.pyqScriptCreate('myFitMultiple',
'def fit_lm(i, sample_size):
from sklearn import linear_model
from sklearn.datasets import load_iris
import pandas as pd
import random
random.seed(10)
iris = load_iris()
x = pd.DataFrame(iris.data, columns = ["Sepal_Length",\
"Sepal_Width","Petal_Length","Petal_Width"])
y = pd.DataFrame(list(map(lambda x: {0:"setosa", 1: "versicolor",\
2: "virginica"}[x], iris.target)),\
columns = ["Species"])
dat = pd.concat([y, x], axis=1).sample(sample_size)
regr = linear_model.LinearRegression()
regr.fit(x.loc[:, ["Sepal_Length", "Sepal_Width", \
"Petal_Length"]],
x.loc[:,["Petal_Width"]])
sc = regr.score(dat.loc[:, ["Sepal_Length", "Sepal_Width", \
"Petal_Length"]],
dat.loc[:,["Petal_Width"]])
return pd.DataFrame([[i,sc]],columns=["id","score"])
',FALSE,TRUE); -- V_GLOBAL, V_OVERWRITE
end;
/
pyqIndexEval
ファンクションを呼び出す問合せを発行します。このファンクションのPAR_LST
引数では、関数の引数sample_size
を指定します。OUT_FMT
引数では、pyqIndexEval
によって返される表の列名およびデータ型が含まれるJSON文字列を指定します。TIMES_NUM
パラメータでは、スクリプトを実行する回数を指定します。SCR_NAME
パラメータでは、myFitMultiple
という名前でスクリプト・リポジトリに格納されているユーザー定義Python関数を指定します。
select *
from table(pyqIndexEval(
par_lst => '{"sample_size":80,
"oml_parallel_flag":true", "oml_service_level":"MEDIUM"}',
out_fmt => '{"id":"number","score":"number"}',
times_num => 3,
scr_name => 'myFitMultiple'));
出力は次のようになります。
id score
---------- ----------
1 .943550631
2 .927836941
3 .937196049
3 rows selected.