11.7.3.1 oml_async_flag引数
特殊な制御引数oml_async_flagは、ジョブを同期で実行するか非同期で実行するかを決定します。デフォルト値はfalseです。
               
oml_async_flag引数の設定
                  
- 
                        同期モードで関数を実行するには、 oml_async_flagをfalseに設定します。同期モードでは、SQL APIはHTTPコールが終了するのを待機し、HTTPレスポンスの準備ができると戻ります。 デフォルトでは、 pyq*Evalファンクションは同期で実行されます。デフォルトの接続タイムアウト制限は60秒です。同期モードは、oml_async_flagが設定されていない場合、またはfalseに設定されている場合に使用されます。
- 
                        非同期モードで関数を実行するには、 oml_async_flagをtrueに設定します。非同期モードでは、非同期ジョブがWebサーバーに発行された直後に、SQL APIはURLを返します。URLにはジョブIDが含まれており、これを使用してジョブ・ステータスをフェッチし、後続のSQLコールを実行できます。 
非同期ジョブの発行例
この例では、次のように作成された表GRADEを使用します。
                  
CREATE TABLE GRADE (
NAME VARCHAR2(30),
GENDER VARCHAR2(1),
STATUS NUMBER(10),
YEAR NUMBER(10),
SECTION VARCHAR2(1),
SCORE NUMBER(10),
FINALGRADE NUMBER(10)
);
insert into GRADE values('Abbott', 'F', 2, 97, 'A', 90, 87);
insert into GRADE values('Branford', 'M', 1, 98, 'A', 92, 97);
insert into GRADE values('Crandell', 'M', 2, 98, 'B', 81, 71);
insert into GRADE values('Dennison', 'M', 1, 97, 'A', 85, 72);
insert into GRADE values('Edgar', 'F', 1, 98, 'B', 89, 80);
insert into GRADE values('Faust', 'M', 1, 97, 'B', 78, 73);
insert into GRADE values('Greeley', 'F', 2, 97, 'A', 82, 91);
insert into GRADE values('Hart', 'F', 1, 98, 'B', 84, 80);
insert into GRADE values('Isley', 'M', 2, 97, 'A', 88, 86);
insert into GRADE values('Jasper', 'M', 1, 97, 'B', 91, 83);次のコードでは、Python関数score_diffが定義され、computeGradeDiffという名前でプライベート関数としてスクリプト・リポジトリに格納されます。この関数は、入力データのSCORE列とFINALGRADE列の差を計算して、新しいDIFF列を割り当てた後にpandas.DataFrameを返します。
                  
begin
    sys.pyqScriptCreate('computeGradeDiff','def score_diff(dat):
        import numpy as np
        import pandas as pd
        df = dat.assign(DIFF=dat.SCORE-dat.FINALGRADE)
        return df
    ');
end;
/次のように、保存されたcomputeGradeDiffスクリプトを実行します。
               
select *
   from table(pyqTableEval(
         inp_nam => 'GRADE',
         par_lst => '{"oml_async_flag":true}',
         out_fmt => NULL,
         scr_name => 'computeGradeDiff',
         scr_owner => NULL
   ));結果のVALUE列には、非同期ジョブのジョブIDが含まれるURLが示されます。
               
NAME
--------------------------------------------------------------------------------
VALUE
--------------------------------------------------------------------------------
https://<oml-cloud-service-location-url>/oml/api/py-scripts/v1/jobs/<job id>
1 row selected.
親トピック: 非同期ジョブ(Autonomous Database)