9.6.2.6 rqRowEval2関数

関数rqRowEval2は、Oracle Autonomous Databaseで使用すると、データを一連の行にチャンク化した後、各チャンクに対してユーザー定義R関数を実行します。

関数rqRowEval2は、INP_NAMパラメータで指定されたデータをユーザー定義のR関数に渡します。PAR_LSTパラメータを使用して、R関数に引数を渡すことができます。ROW_NUMパラメータは、R関数の各呼出しに渡す必要のある行数を指定します。最後のチャンクの行数は、指定した数より少なくなる可能性があります。

rqRowEval2関数ではデータ・パラレル実行がサポートされており、1つ以上のRエンジンにより同じR関数(タスク)が個々の独立したデータ・チャンクで実行されます。Oracle Databaseは、データベース・サーバー・マシンで実行されるRエンジン(複数の場合もある)の管理および制御を処理し、自動的にデータをチャンク化して、パラレルで実行されるRエンジンに渡します。Oracle Databaseでは行のすべてのチャンクに対するR関数の実行完了が保証されており、完了しない場合はrqRowEval2関数によってエラーが返されます。

OUT_FMTパラメータを使用して、戻り値の形式を定義します。

構文

rqRowEval2(
    INP_NAM VARCHAR2,
    PAR_LST VARCHAR2,
    OUT_FMT VARCHAR2,
    ROW_NUM NUMBER,
    SCR_NAME VARCHAR2,
    SCR_OWNER VARCHAR2 DEFAULT NULL,
    ENV_NAME  VARCHAR2 DEFAULT NULL
    )

パラメータ

表9-20 rqRowEval2関数のパラメータ

パラメータ 説明

INP_NAM

SCR_NAMEパラメータで指定されたR関数に渡すデータを指定する表またはビューの名前。別のユーザーが所有する表またはビューを使用する場合は、次の形式を使用します:

<owner name>.<table/view name>

指定された表またはビューに対する読取りアクセス権が必要です。

PAR_LST

SCR_NAMEパラメータで指定されたユーザー定義R関数に渡す追加パラメータが含まれるJSON文字列。oreで始まる特殊な制御引数は、 SCR_NAMEで指定された関数に渡されるのではなく、関数の呼出し前後の動作を制御します。

たとえば、R関数でレンダリングされたイメージを取得するには、次を使用します。

'{"ore_graphics_flag":true}'

関連項目: 特殊な制御引数

OUT_FMT

ファンクションによって返される出力の形式。次のいずれかになります。

  • ファンクションによって返された表の列名およびデータ型を指定するJSON文字列。イメージ・データは破棄されます。
  • 文字列'JSON'。返される表にJSON文字列であるCLOBが含まれることを指定します。
  • 文字列'XML'。返される表にXML文字列であるCLOBが含まれることを指定します。XMLには構造化データとイメージの両方が含まれる可能性があり、最初に構造化Rオブジェクトまたは半構造化Rオブジェクトが返され、次にR関数により生成されたイメージが続きます。
  • 文字列'PNG'。返される表に、R関数によって生成されたイメージを格納するBLOBが含まれることを指定します。イメージはPNG表示のbase 64エンコーディングとして返されます。

関連項目: 出力形式

ROW_NUM

チャンク内の行の数。Rスクリプトは各チャンクで実行されます。

SCR_NAME

OML4Rスクリプト・リポジトリ内のユーザー定義R関数の名前。

SCR_OWNER

登録済Rスクリプトの所有者。デフォルト値はNULLです。NULLの場合、ユーザーのスクリプト・リポジトリでRスクリプトを検索します。

ENV_NAME

指定されたユーザー定義R関数の実行時に使用されるconda環境の名前。

戻り値

関数rqRowEval2は、OUT_FMTパラメータ値で指定された構造を持つ表を返します。

例9-42 rqRowEval2関数の使用

この例では、ユーザー定義関数を作成し、その関数をOML4Rスクリプト・リポジトリに保存します。

PL/SQLブロックによって、スクリプトscoreLMが作成され、スクリプト・リポジトリに追加されます。

%script

BEGIN
    sys.rqScriptCreate('scoreLM',
        'function(dat, dsname){
            ore.load(dsname)
            dat$Petal.Length_pred <- predict(mod, newdata=dat)
            dat[,c("Petal.Length_pred","Petal.Length","Species")]}',
        v_global => FALSE,
        v_overwrite => TRUE);
END;
/

結果は次のとおりです:

PL/SQL procedure successfully completed.


---------------------------

例9-43 JSON出力

PAR_LST引数は、特殊な制御引数ore_service_levelでMEDIUMサービス・レベルを使用することを指定します。OUT_FMT引数で、文字列'JSON'は、返される表にJSON文字列であるCLOBが含まれることを指定します。SCR_NAMEパラメータは、コールするR関数としてスクリプト・リポジトリ内のscoreLM関数を指定します。JSON出力はCLOBです。set long [length]をコールすると、詳細な出力を取得できます。

%script

set long 1000

SELECT * FROM table(rqRowEval2(
 inp_nam => 'IRIS',
 par_lst => '{"dsname":"ds-1", "ore_parallel_flag":true, "ore_service_level":"MEDIUM"}',
 out_fmt => 'JSON',
 row_num => 5,
 scr_name => 'scoreLM'));

結果は次のとおりです:

---------------------------
NAME   VALUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
       [{"Petal.Length_pred":1.5295,"Species":"setosa","Petal.Length":1},{"Petal.Length_pred":1.3066,"Species":"setosa","Petal.Length":1.1},{"Petal.Length_pred":1.5295,"Species":"setosa","Petal.Length":1.2},{"Petal.Length_pred":1.5295,"Species":"setosa","Petal.Length":1.2},{"Petal.Length_pred":1.5295,"Species":"setosa","Petal.Length":1.3},{"Petal.Length_pred":1.5295,"Species":"setosa","Petal.Length":1.3},{"Petal.Length_pred":1.5295,"Species":"setosa","Petal.Length":1.3},{"Petal.Length_pred":1.5295,"Species":"setosa","Petal.Length":1.3},{"Petal.Length_pred":1.7525,"Species":"setosa","Petal.Length":1.3},{"Petal.Length_pred":1.7525,"Species":"setosa","Petal.Length":1.3},{"Petal.Length_pred":1.9755,"Species":"setosa","Petal.Length":1.3},{"Petal.Length_pred":1.3066,"Species":"setosa","Petal.Length":1.4},{"Petal.Length_pred":1.3066,"Species":"setosa","Petal.Length":1.4},{"Petal.Length_pred":1.5295,"Species":"setosa","Petal.Length":1.4},{"Petal.Length_pred":1.5295,"Species":"setosa","Petal.Length":1 

例9-44 リレーショナル

Select文を実行して、リレーショナル出力を取得します。

%script

SELECT * FROM table(rqRowEval2(
 inp_nam => 'IRIS',
 par_lst => '{"dsname":"ds-1", "ore_parallel_flag":true, "ore_service_level":"MEDIUM"}',
 out_fmt => '{"Petal.Length_pred":"NUMBER", "Petal.Length":"NUMBER", "Species":"VARCHAR2(10)"}',
 row_num => 5,
 scr_name => 'scoreLM'));

結果は次のとおりです:

Petal.Length_pred   Petal.Length   Species   
             1.5295              1 setosa    
             1.3066            1.1 setosa    
             1.5295            1.2 setosa    
             1.5295            1.2 setosa    
             1.5295            1.3 setosa    
             1.5295            1.3 setosa    
             1.5295            1.3 setosa    
             1.5295            1.3 setosa    
             1.7525            1.3 setosa    
             1.7525            1.3 setosa    
             1.9755            1.3 setosa    
             1.3066            1.4 setosa    
             1.3066            1.4 setosa    
             1.5295            1.4 setosa    

Petal.Length_pred   Petal.Length   Species   
             1.5295            1.4 setosa    
             1.5295            1.4 setosa    
             1.5295            1.4 setosa    
             1.5295            1.4 setosa    
             1.5295            1.4 setosa    
             1.5295            1.4 setosa    
             1.5295            1.4 setosa    
             1.7525            1.4 setosa    
             1.7525            1.4 setosa    
             1.7525            1.4 setosa    
             1.3066            1.5 setosa    
             1.3066            1.5 setosa    
             1.5295            1.5 setosa    
             1.5295            1.5 setosa    

Petal.Length_pred   Petal.Length   Species   
             1.5295            1.5 setosa    
             1.5295            1.5 setosa    
             1.5295            1.5 setosa    
             1.5295            1.5 setosa    
             1.5295            1.5 setosa    
             1.7525            1.5 setosa    
             1.9755            1.5 setosa    
             1.9755            1.5 setosa    
             1.9755            1.5 setosa    
             1.5295            1.6 setosa    
             1.5295            1.6 setosa    
             1.5295            1.6 setosa    
             1.5295            1.6 setosa    
             1.5295            1.6 setosa    

Petal.Length_pred   Petal.Length   Species      
             1.9755            1.6 setosa       
             2.4215            1.6 setosa       
             1.5295            1.7 setosa       
             1.7525            1.7 setosa       
             1.9755            1.7 setosa       
             2.1985            1.7 setosa       
             1.5295            1.9 setosa       
             1.9755            1.9 setosa       
             3.5365              3 versicolor   
             3.3135            3.3 versicolor   
             3.3135            3.3 versicolor   
             3.3135            3.5 versicolor   
             3.3135            3.5 versicolor   
             3.9825            3.6 versicolor   

Petal.Length_pred   Petal.Length   Species      
             3.3135            3.7 versicolor   
             3.5365            3.8 versicolor   
             3.5365            3.9 versicolor   
             3.7595            3.9 versicolor   
             4.2055            3.9 versicolor   
             3.3135              4 versicolor   
             3.7595              4 versicolor   
             3.9825              4 versicolor   
             3.9825              4 versicolor   
             3.9825              4 versicolor   
             3.3135            4.1 versicolor   
             3.9825            4.1 versicolor   
             3.9825            4.1 versicolor   
             3.7595            4.2 versicolor   

Petal.Length_pred   Petal.Length   Species      
             3.9825            4.2 versicolor   
             3.9825            4.2 versicolor   
             4.4285            4.2 versicolor   
             3.9825            4.3 versicolor   
             3.9825            4.3 versicolor   
             3.7595            4.4 versicolor   
             3.9825            4.4 versicolor   
             4.2055            4.4 versicolor   
             4.2055            4.4 versicolor   
             4.8745            4.5 virginica    
             3.9825            4.5 versicolor   
             4.4285            4.5 versicolor   
             4.4285            4.5 versicolor   
             4.4285            4.5 versicolor   

Petal.Length_pred   Petal.Length   Species      
             4.4285            4.5 versicolor   
             4.4285            4.5 versicolor   
             4.6515            4.5 versicolor   
             3.9825            4.6 versicolor   
             4.2055            4.6 versicolor   
             4.4285            4.6 versicolor   
             3.7595            4.7 versicolor   
             4.2055            4.7 versicolor   
             4.2055            4.7 versicolor   
             4.4285            4.7 versicolor   
             4.6515            4.7 versicolor   
             5.0975            4.8 virginica    
             5.0975            4.8 virginica    
             4.2055            4.8 versicolor   

Petal.Length_pred   Petal.Length   Species      
             5.0975            4.8 versicolor   
             5.0975            4.9 virginica    
             5.0975            4.9 virginica    
             5.5434            4.9 virginica    
             4.4285            4.9 versicolor   
             4.4285            4.9 versicolor   
             4.4285              5 virginica    
             5.3204              5 virginica    
             5.5434              5 virginica    
             4.8745              5 versicolor   
             4.4285            5.1 virginica    
             5.0975            5.1 virginica    
             5.3204            5.1 virginica    
             5.3204            5.1 virginica    

Petal.Length_pred   Petal.Length   Species      
             5.5434            5.1 virginica    
             6.2124            5.1 virginica    
             6.4354            5.1 virginica    
             4.6515            5.1 versicolor   
             5.5434            5.2 virginica    
             6.2124            5.2 virginica    
             5.3204            5.3 virginica    
             6.2124            5.3 virginica    
             5.7664            5.4 virginica    
             6.2124            5.4 virginica    
             5.0975            5.5 virginica    
             5.0975            5.5 virginica    
             5.7664            5.5 virginica    
             4.2055            5.6 virginica    

Petal.Length_pred   Petal.Length   Species     
             5.0975            5.6 virginica   
             5.7664            5.6 virginica   
             5.9894            5.6 virginica   
             6.4354            5.6 virginica   
             6.4354            5.6 virginica   
             5.7664            5.7 virginica   
             6.2124            5.7 virginica   
             6.6584            5.7 virginica   
             4.6515            5.8 virginica   
             5.0975            5.8 virginica   
             5.9894            5.8 virginica   
             5.7664            5.9 virginica   
             6.2124            5.9 virginica   
             5.0975              6 virginica   

Petal.Length_pred   Petal.Length   Species     
             6.6584              6 virginica   
             5.3204            6.1 virginica   
             6.2124            6.1 virginica   
             6.6584            6.1 virginica   
             5.0975            6.3 virginica   
             5.5434            6.4 virginica   
             5.7664            6.6 virginica   
             5.5434            6.7 virginica   
             5.9894            6.7 virginica   
             6.2124            6.9 virginica   


150 rows selected. 


---------------------------