12.7.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://<oml-cloud-service-location-url>/oml/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://<oml-cloud-service-location-url>/oml/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://<oml-cloud-service-location-url>/oml/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://<oml-cloud-service-location-url>/oml/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.