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)