10.6.2.4 rqEval2関数
関数rqEval2
は、Oracle Autonomous Databaseで使用すると、データを明示的に取得するか、関数に対して外部データが自動的にロードされるユーザー定義R関数を実行します。
関数rqEval2
は、SCR_NAME
パラメータで指定されたスクリプト内のR関数を実行します。
構文
rqEval2 (
PAR_LST VARCHAR2,
OUT_FMT VARCHAR2,
SCR_NAME VARCHAR2,
SCR_OWNER VARCHAR2 DEFAULT NULL,
ENV_NAME VARCHAR2 DEFAULT NULL
)
パラメータ
パラメータ | 説明 |
---|---|
|
たとえば、欠損値が含まれる行を入力表から省略するには、'{"ore.na.omit":true}'を使用します。 関連項目: 特殊な制御引数。 |
|
ファンクションによって返される出力の形式。次のいずれかになります。
関連項目: 出力形式。 |
|
OML4Rスクリプト・リポジトリ内のユーザー定義R関数の名前。 |
SCR_OWNER |
Rスクリプトの所有者。デフォルト値は |
ENV_NAME |
指定されたユーザー定義R関数の実行時に使用されるconda環境の名前。 |
戻り値
関数rqEval2
は、out_fmt
パラメータ値で指定された構造を持つ表を返します。
例
例10-31 rqEval2の使用方法
この例では、R関数を定義し、OML4Rスクリプト・リポジトリに格納します。PL/SQLブロックによって、スクリプトRandomRedDots2
が作成され、スクリプト・リポジトリに追加されます。スクリプトがプライベートであることを指定し、同じ名前でスクリプトを上書きします。ユーザー定義R関数でrqEval2関数をコールします。
BEGIN
sys.rqScriptCreate('RandomRedDots2',
'function(divisor = 100, numDots = 100) {
id <- 1:10
plot(1:numDots, rnorm(numDots), pch = 21, bg = "red", cex = 2 )
data.frame(id = id, val = id / divisor)}',
v_global => FALSE,
v_overwrite => TRUE);
END;
/
例10-32 JSON出力
PAR_LST
引数は、特殊な制御引数oml_service_level
でLOW
サービス・レベルを使用することを指定します。OUT_FMT引数で、文字列'JSON'は、返される表にJSON文字列であるCLOBが含まれることを指定します。SCR_NAME
パラメータは、コールするR関数としてスクリプト・リポジトリ内のRandomRedDots2関数を指定します。JSON出力はCLOBです。set long [length]をコールすると、詳細な出力を取得できます。
%script
set long 500
SELECT * FROM table(rqEval2(
par_lst => '{"ore_service_level":"LOW"}',
out_fmt => 'JSON',
scr_name => 'RandomRedDots2'));
結果は次のとおりです:
NAME VALUE
[{"val":0.01,"id":1},{"val":0.02,"id":2},{"val":0.03,"id":3},{"val":0.04,"id":4},{"val":0.05,"id":5},{"val":0.06,"id":6},{"val":0.07,"id":7},{"val":0.08,"id":8},{"val":0.09,"id":9},{"val":0.1,"id":10}]
例10-33 PNG出力。
PAR_LST
引数は、特殊な制御引数oml_service_levelでLOW
サービス・レベルを使用することを指定します。OUT_FMT
引数で、reqEval2によって返されるイメージを含める文字列'PNG'。SCR_NAME
パラメータは、コールするR関数としてスクリプト・リポジトリ内のRandomRedDots2関数を指定します。JSON出力はCLOBです。
%script
SELECT * FROM table(rqEval2(
par_lst => '
{"ore_graphics_flag":true, "ore_service_level":"LOW"}',
out_fmt => 'PNG',
scr_name => 'RandomRedDots2'));
結果は次のとおりです:
---------------------------
NAME ID VALUE IMAGE
1 89504E470D0A1A0A0000000D49484452000001E0000001E008060000007DD4BE950000200049444154789C
ノート:
ここでは、出力の一部のみを示します。出力の長さを決定するには、パラメータset long [length]
を使用します。
例10-34 XML出力。
PAR_LST
引数は、特殊な制御引数oml_service_levelでLOW
サービス・レベルを使用することを指定します。OUT_FMT
引数で、文字列'JSON'は、返される表にJSON文字列であるCLOBが含まれることを指定します。SCR_NAME
パラメータは、コールするR関数としてスクリプト・リポジトリ内のRandomRedDots2関数を指定します。JSON出力はCLOBです。
%script
set long 1000
SELECT * FROM table(rqEval2(
par_lst => '{"ore_service_level":"LOW"}',
out_fmt => 'XML',
scr_name => 'RandomRedDots2'));
結果は次のとおりです:
NAME VALUE
<root><frame_obj><ROW-frame_obj><id>1</id><val>0.01</val></ROW-frame_obj><ROW-frame_obj><id>2</id><val>0.02</val></ROW-frame_obj><ROW-frame_obj><id>3</id><val>0.03</val></ROW-frame_obj><ROW-frame_obj><id>4</id><val>0.04</val></ROW-frame_obj><ROW-frame_obj><id>5</id><val>0.05</val></ROW-frame_obj><ROW-frame_obj><id>6</id><val>0.06</val></ROW-frame_obj><ROW-frame_obj><id>7</id><val>0.07</val></ROW-frame_obj><ROW-frame_obj><id>8</id><val>0.08</val></ROW-frame_obj><ROW-frame_obj><id>9</id><val>0.09<
ノート:
ここでは、出力の一部のみを示します。出力の長さを決定するには、パラメータset long [length]
を使用します。set long 1000
は、完全な出力を提示します。
例10-35 XML出力
Select
文を実行して、XML
出力を取得します。構造化データとイメージの両方がXMLに含まれるように、ore_graphics_flag
をtrueに設定します
%script
set long 1000
SELECT * FROM table(rqEval2(
par_lst => '{"ore_graphics_flag":true, "ore_service_level":"LOW"}',
out_fmt => 'XML',
scr_name => 'RandomRedDots2'));
結果は次のとおりです:
---------------------------
NAME VALUE
<root><R-data><frame_obj><ROW-frame_obj><id>1</id><val>0.01</val></ROW-frame_obj><ROW-frame_obj><id>2</id><val>0.02</val></ROW-frame_obj><ROW-frame_obj><id>3</id><val>0.03</val></ROW-frame_obj><ROW-frame_obj><id>4</id><val>0.04</val></ROW-frame_obj><ROW-frame_obj><id>5</id><val>0.05</val></ROW-frame_obj><ROW-frame_obj><id>6</id><val>0.06</val></ROW-frame_obj><ROW-frame_obj><id>7</id><val>0.07</val></ROW-frame_obj><ROW-frame_obj><id>8</id><val>0.08</val></ROW-frame_obj><ROW-frame_obj><id>9</id><val>0.09</val></ROW-frame_obj><ROW-frame_obj><id>10</id><val>0.1</val></ROW-frame_obj></frame_obj></R-data><images><image><img src="data:image/pngbase64"><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAYAAAB91L6VAAAgAElEQVR4nOzdd3hT5fvH8Xe6m6QDSgtl07KRjciQIZvKkiECCspQBNkiICBLUBRxACoqU0RAkT0EREGGTCm77LJll2Z0pc/vD9Qf8u04QJPTcb+uq9clzZM8n9Qkd845zzAopRRCCCGEcCk3vQMIIYQQOZEUYCGEEEIHUoCFEEIIHUgBFkIIIXQgBVgIIYTQgRRgIYQQQgdSgIUQQggdSAEWQgghdCAFWAghhNCBFGAhhBBCB1KAhRBCCB1IARZCCCF0IAVYCCGE0IEUYCGEEEIHUoCFEEIIHU
例10-36 リレーショナル出力
Select
文を実行して、リレーショナル
出力を取得します。OUT_FMT
引数は、rqEval2によって返される表の列名およびデータ型が含まれるJSON文字列を指定します。
%script
SELECT * FROM table(rqEval2(
par_lst => '{"ore_service_level":"LOW"}',
out_fmt => '{"val":"NUMBER","id":"NUMBER"}',
scr_name => 'RandomRedDots2'));
結果は次のとおりです:
val id
0.01 1
0.02 2
0.03 3
0.04 4
0.05 5
0.06 6
0.07 7
0.08 8
0.09 9
0.1 10
10 rows selected.
例10-37 rqEval2を使用して引数を渡す場合:
Select
文を実行し、rqEval2
関数に引数を渡してXML
出力を取得します。
%script
set long 500
SELECT * FROM table(rqEval2(
par_lst => '{"ore_service_level":"LOW", "divisor":50, "numDots":500}',
out_fmt => 'XML',
scr_name => 'RandomRedDots2'));
結果は次のとおりです:
NAME VALUE
<root><frame_obj><ROW-frame_obj><id>1</id><val>0.01</val></ROW-frame_obj><ROW-frame_obj><id>2</id><val>0.02</val></ROW-frame_obj><ROW-frame_obj><id>3</id><val>0.03</val></ROW-frame_obj><ROW-frame_obj><id>4</id><val>0.04</val></ROW-frame_obj><ROW-frame_obj><id>5</id><val>0.05</val></ROW-frame_obj><ROW-frame_obj><id>6</id><val>0.06</val></ROW-frame_obj><ROW-frame_obj><id>7</id><val>0.07</val></ROW-frame_obj><ROW-frame_obj><id>8</id><val>0.08</val></ROW-frame_obj><ROW-frame_obj><id>9</id><val>0.09<
次のコードでは、SQL問合せを実行して、rqEval2
関数コールの結果からすべての列を取得します。これにより、指定したスクリプトおよび環境に基づいてPNG出力が生成されます。
select *
from table(rqEval2(
par_lst => '{"ore_graphics_flag":true}',
out_fmt => 'PNG',
scr_name => 'test_ggplot2_noinp',
scr_owner => 'OMLUSER',
env_name => 'myrenv'));
出力が次のように表示されます。
NAME ID VALUE IMAGE
---------- ---------- -------------------- ------------------------------
1 "Hello World" 89504E470D0A1A0A0000000D494844
52000001E0000001E008060000007D
D4BE950000200049444154789CECDD
795854F51EC7F1F79919F655164190
4D0141DC01714D3335772D5B6CB72C
AB9B65FBDE