10.6.2.8 rqIndexEval2関数
関数rqIndexEval2
は、Oracle Autonomous Databaseで使用すると、データベース環境によって生成されたRエンジンでユーザー定義R関数を複数回実行します。
PAR_LST
パラメータを使用して、ユーザー定義R関数に引数を渡すことができます。追加の引数は、ore_parallel_flag
、ore_service_level
などのパラメータPAR_LST
に渡すことができます。ブール引数ore_parallel_flag
(デフォルト値false
)は、データ・パラレル処理でユーザー定義R関数を実行します。Autonomous Databaseでの様々なレベルのパフォーマンスおよび同時実行性は、引数ore_service_level
(デフォルトのサービス・レベルLOW
)で制御できます。関連項目: 特殊な制御引数。
構文
rqIndexEval2(
PAR_LST VARCHAR2,
OUT_FMT VARCHAR2,
TIMES_NUM NUMBER,
SCR_NAME VARCHAR2,
SCR_OWNER VARCHAR2 DEFAULT NULL,
ENV_NAME VARCHAR2 DEFAULT NULL
)
パラメータ
パラメータ | 説明 |
---|---|
|
関連項目: 特殊な制御引数。 |
|
ファンクションによって返される出力の形式。次のいずれかになります。
関連項目: 出力形式 |
TIMES_NUM |
Rスクリプトを実行する回数。 |
|
OML4Rスクリプト・リポジトリ内のユーザー定義R関数の名前。 |
|
登録済Rスクリプトの所有者。デフォルト値は |
|
指定されたユーザー定義R関数の実行時に使用されるconda環境の名前。 |
例
PL/SQLブロックによって、スクリプトcomputeMean
が作成され、スクリプト・リポジトリに追加されます。スクリプトがプライベートであることを指定し、同じ名前でスクリプトを上書きします。
BEGIN
sys.rqScriptCreate('computeMean',
'function(idx, rseed){
set.seed(rseed)
x <- round(runif(100,2,10),4)
return(mean(x))}',
v_global => FALSE,
v_overwrite => TRUE);
END;
/
結果は次のとおりです:
PL/SQL procedure successfully completed.
---------------------------
例10-49 JSON出力
Select
文を実行して、JSON
出力を取得します。
%script
SELECT * FROM table(rqIndexEval2(
par_lst => '{"rseed":99, "ore_parallel_flag":true, "ore_service_level":"MEDIUM"}',
out_fmt => 'JSON',
times_num => 5,
scr_name => 'computeMean'));
結果は次のとおりです:
NAME VALUE
{"1":5.8977,"2":5.8977,"3":5.8977,"4":5.8977,"5":5.8977}
---------------------------
例10-50 XML出力
Select
文を実行して、XML
出力を取得します。
%script
SELECT * FROM table(rqIndexEval2(
par_lst => '{"rseed":99, "ore_parallel_flag":true, "ore_service_level":"MEDIUM"}',
out_fmt => 'XML',
times_num => 5,
scr_name => 'computeMean'));
結果は次のとおりです:
NAME VALUE
1 <root><vector_obj><ROW-vector_obj><value>5.897744</value></ROW-vector_obj></vect
2 <root><vector_obj><ROW-vector_obj><value>5.897744</value></ROW-vector_obj></vect
3 <root><vector_obj><ROW-vector_obj><value>5.897744</value></ROW-vector_obj></vect
4 <root><vector_obj><ROW-vector_obj><value>5.897744</value></ROW-vector_obj></vect
5 <root><vector_obj><ROW-vector_obj><value>5.897744</value></ROW-vector_obj></vect
次のコードでは、SQL問合せを実行して、rqIndexEval2
関数コールの結果からすべての列を取得します。これにより、指定したスクリプトおよび環境に基づいてPNG出力が生成されます。
select *
from table(rqIndexEval2(
par_lst => '{"ore_graphics_flag":true}',
out_fmt => 'PNG',
times_num => 2,
scr_name => 'test_ggplot2_idx',
scr_owner => NULL,
env_name => 'myrenv'));
出力が次のように表示されます。
NAME ID VALUE IMAGE
---------- ---------- -------------------- ------------------------------
TIME_1 1 "hello world" 89504E470D0A1A0A0000000D494844
52000001E0000001E008060000007D
D4BE950000200049444154789CEDDD
777454D5DEC6F167D2430A2DF4163A
A1080ABC5C848480A2808A2055B080
88800D29F6
TIME_2 1 "hello world" 89504E470D0A1A0A0000000D494844
52000001E0000001E008060000007D
D4BE950000200049444154789CEDDD
799C4E75FFC7F1F735FB98856130F6
NAME ID VALUE IMAGE
---------- ---------- -------------------- ------------------------------
B11B4B64F9B9C58CA194A544765224
D12A4BDA77