10.6.3.4 非同期ジョブの例
次の例は、XML以外の出力およびXML出力を使用して非同期ジョブを発行する方法を示しています。
XML以外の出力
非同期ジョブを発行する際、JSON、PNGおよびリレーショナル出力の場合は、ジョブの発行時にOUT_FMT
引数をNULL
に設定します。ジョブ結果をフェッチする際は、pyqJobResult
コールでOUT_FMT
を指定します。
この例では、「pyqTableEvalファンクション(Autonomous Database)」に示した例で作成されたIRIS表と、「pyqRowEvalファンクション(Autonomous Database)」に示した例で作成されたlinregrPredict
スクリプトを使用します。
pyqGroupEval
ファンクション・コールを発行して、非同期ジョブを発行します。このファンクションのINP_NAM
引数では、関数に渡すIRIS表内のデータを指定します。
PAR_LST
引数は、特殊な制御引数oml_async_flag
でジョブを非同期に発行することを指定し、特殊な制御引数oml_graphics_flag
でスクリプトでレンダリングされたイメージを取得し、特殊な制御引数oml_input_type
で入力データをpandas.DataFrame
として、関数の引数modelName
およびdatastoreName
の値とともに渡すことを指定します。
OUT_FMT
引数はNULL
です。
GRP_COL
パラメータでは、グループ化する列を指定します。
SCR_NAME
パラメータでは、linregrPredict
という名前でスクリプト・リポジトリに格納されているユーザー定義Python関数を指定します。
非同期コールはCLOBでジョブ・ステータスURLを返し、set long [length]
をコールして完全なURLを取得できます。
set long 150
select *
from table(pyqGroupEval(
inp_nam => 'IRIS',
par_lst => '{"oml_input_type":"pandas.DataFrame",
"oml_async_flag":true, "oml_graphics_flag":true,
"modelName":"linregr", "datastoreName":"pymodel"}',
out_fmt => NULL,
grp_col => 'Species',
ord_col => NULL,
scr_name => 'linregrPredict',
scr_owner => NULL
));
出力は次のようになります。
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
https://<host name>/oml/tenants/<tenant name>/databases/<database name>/api/py-scripts/v1/jobs/<job id>
1 row selected.
pyqJobStatus
ファンクションを呼び出すSELECT
文を実行します。これにより、ジョブ結果の準備ができると、ジョブIDが含まれるリソースURLが返されます。
select * from pyqJobStatus(
job_id => '<job id>');
ジョブがまだ保留中の場合は、出力は次のようになります。
NAME
----------------------------------------------------------------------
VALUE
----------------------------------------------------------------------
job is still running
1 row selected.
ジョブが終了すると、出力は次のようになります。
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
https://<host name>/oml/tenants/<tenant name>/databases/<database name>/api/py-scripts/v1/jobs/<job id>/result
1 row selected.
pyqJobResult
ファンクションを呼び出すSELECT
文を実行します。
OUT_FMT
引数で、文字列'PNG'
は、戻り値とイメージ(タイトルとイメージ・バイト)の両方を結果に含めるように指定します。
column name format a7
column value format a15
column title format a16
column image format a15
select * from pyqJobResult(
job_id => '<job id>',
out_fmt => 'PNG'
);
出力は次のようになります。
NAME ID VALUE TITLE IMAGE
------- ---------- --------------- ---------------- ---------------
GROUP_s 1 [{"Species":"se Prediction of Pe 6956424F5277304
etosa tosa","Sepal_Le tal Width B47676F41414141
ngth":4.6,"Sepa 4E5355684555674
l_Width":3.6,"P 141416F41414141
etal_Length":1. 486743415941414
0,"Petal_Width" 1413130647A6B41
:0.2,"Pred_Peta 41414142484E435
l_Width":0.1325 356514943416749
345443},{"Speci 6641686B6941414
es":"setosa","S 141416C7753466C
7A4141415059514
141443245427144
2B6E61514141414
468305256683055
32396D644864686
36D554162574630
634778766447787
0596942325A584A
7A615739754D793
4784C6A49734947
GROUP_v 1 [{"Species":"ve Prediction of Pe 6956424F5277304
ersicol rsicolor","Sepa tal Width B47676F41414141
or l_Length":5.1," 4E5355684555674
Sepal_Width":2. 141416F41414141
5,"Petal_Length 486743415941414
":3.0,"Petal_Wi 1413130647A6B41
dth":1.1,"Pred_ 41414142484E435
Petal_Width":0. 356514943416749
8319563387},{"S 6641686B6941414
pecies":"versic 141416C7753466C
7A4141415059514
141443245427144
2B6E61514141414
468305256683055
32396D644864686
36D554162574630
634778766447787
0596942325A584A
7A615739754D793
4784C6A49734947
GROUP_v 1 [{"Species":"vi Prediction of Pe 6956424F5277304
irginic rginica","Sepal tal Width B47676F41414141
a _Length":5.7,"S 4E5355684555674
epal_Width":2.5 141416F41414141
,"Petal_Length" 486743415941414
:5.0,"Petal_Wid 1413130647A6B41
th":2.0,"Pred_P 41414142484E435
etal_Width":1.7 356514943416749
55762924},{"Spe 6641686B6941414
cies":"virginic 141416C7753466C
7A4141415059514
141443245427144
2B6E61514141414
468305256683055
32396D644864686
36D554162574630
634778766447787
0596942325A584A
7A615739754D793
4784C6A49734947
3 rows selected.
XML出力
非同期ジョブからXML出力が想定される場合は、ジョブの発行時とジョブ結果のフェッチ時に、OUT_FMT
引数を'XML'
に設定します。
この例では、「pyqIndexEvalファンクション(Autonomous Database)」に示した例で作成されたスクリプトmyFitMultiple
を使用します。
pyqIndexEval
ファンクション・コールを発行して、非同期ジョブを発行します。このファンクションのPAR_LST
引数では、特殊な制御引数oml_async_flag
とともに関数の引数sample_size
の値を使用して、ジョブを非同期に発行することを指定します。
非同期コールはCLOBでジョブ・ステータスURLを返し、set long [length]
をコールして完全なURLを取得できます。
set long 150 select *
from table(pyqIndexEval(
par_lst => '{"sample_size":80,"oml_async_flag":true}',
out_fmt => 'XML',
times_num => 3,
scr_name => 'myFitMultiple',
scr_owner => NULL
));
出力は次のようになります。
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
https://<host name>/oml/tenants/<tenant name>/databases/<database name>/api/py-scripts/v1/jobs/<job id>
1 row selected.
pyqJobStatus
ファンクションを呼び出すSELECT
文を実行します。これにより、ジョブ結果の準備ができると、ジョブIDが含まれるリソースURLが返されます。
select * from pyqJobStatus(
job_id => '<job id>'
);
ジョブがまだ保留中の場合は、出力は次のようになります。
NAME
----------------------------------------------------------------------
VALUE
----------------------------------------------------------------------
job is still running
1 row selected.
ジョブ結果の準備ができると、出力は次のようになります。
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
https://<host name>/oml/tenants/<tenant name>/databases/<database name>/api/py-scripts/v1/jobs/<job id>/result
1 row selected.
pyqJobResult
ファンクションを呼び出すSELECT
文を実行します。
OUT_FMT
引数で、文字列'XML'
は、返される表にXML文字列であるCLOBが含まれることを指定します。
select * from pyqJobResult(
job_id => '<job id>',
out_fmt => 'XML'
);
出力は次のようになります。
NAME
----------------------------------------------------------------------
VALUE
----------------------------------------------------------------------
1
<root><pandas_dataFrame><ROW-pandas_dataFrame><id>1</id><score>0.94355
0631313753</score></ROW-pandas_dataFrame></pandas_dataFrame></root>
2
<root><pandas_dataFrame><ROW-pandas_dataFrame><id>2</id><score>0.92783
6941437123</score></ROW-pandas_dataFrame></pandas_dataFrame></root>
3
<root><pandas_dataFrame><ROW-pandas_dataFrame><id>3</id><score>0.93719
6049031545</score></ROW-pandas_dataFrame></pandas_dataFrame></root>
3 rows selected.
親トピック: 非同期ジョブ(Autonomous Database)