Oracle R Enterpriseの埋込みRの実行用のSQLインタフェースでは、本番データベースのアプリケーションでR関数を実行できます。SQLインタフェースには、次のアクションのためのプロシージャがあります。
Oracle R EnterpriseのRスクリプト・リポジトリに対するスクリプトの追加および削除
所有者による他のユーザーに対するスクリプトへの読取りアクセス権の付与または取消し
埋込みRセッションでのRスクリプトの実行
Oracle R Enterpriseデータストアの削除
データ・ディクショナリ・ビューは、スクリプトおよびデータストアに関する情報を提供します。
このSQLインタフェースについては、次のトピックで説明しています。
Oracle R Enterpriseでは、埋込みRの実行用のRインタフェース関数のほとんどに相当するSQL表関数が提供されています。SELECT FROM TABLE
文を実行し、いずれかの表関数を指定すると、指定されたRスクリプトが呼び出されます。このスクリプトは、Oracle Databaseサーバー上の1つ以上のRエンジンで実行されます。
rqEval
rqGroupEval
rqRowEval
rqTableEval
表6-1に、Rインタフェース関数およびそれに相当するSQL関数を示します。
rqGroupEval
関数の場合、Oracle R EnterpriseはSQLでのグループ適用機能の汎用実装を提供します。入力カーソルの後続を取得する表関数を記述する必要があります。
次の各トピックでは、SQL表関数の一般的な側面について説明します。
これらの関数の詳細および使用例は、各関数の参照ページを参照してください。
SQL表関数の中には、共通のパラメータを持つものもあれば、その関数に固有のパラメータを持つものもあります。SQL表関数のパラメータは次のとおりです。
表6-2 SQL表関数のパラメータ
パラメータ | 説明 |
---|---|
|
|
|
R関数に渡す引数を指定するカーソル。パラメータ・カーソルは、単一行のスカラー値で構成されます。引数には文字列または数値を指定できます。カーソル内には複数の引数を指定できます。R関数への引数では大/小文字が区別されるため、列名などの名前は二重引用符で囲む必要があります。 カーソル内には、Oracle R Enterprise制御引数やシリアライズされたRオブジェクト(Oracle R Enterpriseデータストア内にある予測モデルなど)の名前をスカラー値として指定することもできます。 R関数への引数も制御引数も渡さない場合は、このパラメータ・カーソルの値を |
|
出力表の定義。この引数の値は、 |
|
|
|
|
|
Oracle R EnterpriseのRスクリプト・リポジトリ内のスクリプトの名前。 |
関連トピック
Oracle R EnterpriseのSQL表関数は、表を返します。表の構造と内容は、SQL表関数に渡されたR関数の結果と、OUT_QRY
パラメータによって決定されます。R関数はdata.frame
オブジェクト、他のRオブジェクトおよびグラフィックを返すことができます。R関数の結果を表す表の構造は、次のいずれかのOUT_QRY
値によって指定されます。
NULL:
データ・オブジェクトとイメージ・オブジェクトの両方を含む可能性のあるシリアライズ・オブジェクトを持つ表が返されます。
SELECT
文で指定された表シグネチャ: 定義された構造の表が返されます。R関数の結果はdata.frame
となる必要があります。イメージは返されません。
文字列'XML'
: XML文字列での構造化データとグラフ・イメージの両方を含む可能性のあるCLOBを持つ表が返されます。イメージでないRオブジェクト(data.frame
やmodel
オブジェクトなど)が最初に提供され、次にbase 64でエンコードされたイメージのPNG表示が続きます。
文字列'PNG'
: PNG形式のグラフ・イメージを含むBLOBを持つ表が返されます。表には、列名name
、id
およびimage
が含まれます。
埋込みRの実行中にOracle Databaseサーバー上のOracle R Enterpriseへの接続を確立するには、パラメータ・カーソル内に制御引数ore.connect
を指定できます。これを行うと、埋込みR関数を呼び出したユーザーの資格証明を使用して接続が確立されます。また、自動的にORE
パッケージがロードされます。オブジェクトをOracle R EnterpriseのRオブジェクト・データストアに保存する場合や、データソースからオブジェクトをロードする場合は、Oracle R Enterpriseへの接続を確立する必要があります。また、これにより、Oracle R Enterpriseの透過層を明示的に使用できます。
関連項目:
他の制御引数の詳細は、「オプションの制御引数」を参照してください。
このトピックでは、Rスクリプトを作成および管理するためのPL/SQLプロシージャとOracle Databaseデータ・ディクショナリ・ビューを紹介します。
埋込みRの実行用のSQL APIの関数は、Oracle R EnterpriseのRスクリプト・リポジトリに格納されている名前付きのスクリプトを引数として必要とします。PL/SQLプロシージャsys.rqScriptCreate
およびsys.rqScriptDrop
は、スクリプトを作成および削除します。スクリプトを作成する場合やOracle R EnterpriseのRスクリプト・リポジトリから削除する場合は、RQADMINロールが必要です。
sys.rqScriptCreate
関数を使用する場合、スクリプトの名前と、1つのR関数定義を含むR関数スクリプトを指定する必要があります。関数sys.rqScriptCreate
およびsys.rqScriptDrop
のコールは、BEGIN-END
PL/SQLブロックでラップする必要があります。Rスクリプト・リポジトリには、R関数がキャラクタ・ラージ・オブジェクト(CLOB
)として格納されるため、関数定義を一重引用符で囲んで文字列として指定する必要があります。
スクリプトの所有者は、rqGrant
プロシージャを使用してスクリプトへの読取りアクセス権を別のユーザーに付与したり、rqRevoke
プロシージャを使用して権限を取り消すことができます。別のユーザーによってアクセス権を付与されたスクリプトを使用するには、次のように、スクリプトの名前の前に所有者の名前とピリオドを付加して、所有者を指定する必要があります。
select * from table(rqEval(NULL, 'select 1 x from dual', 'owner_name.script_name'));
パブリック・スクリプトやユーザーが所有しているスクリプトには、所有者の接頭辞は必要ありません。
次の各表は、Oracle R EnterpriseのRスクリプト・リポジトリ内のスクリプトを管理するためのPL/SQLプロシージャと、スクリプトに関する情報を格納するデータ・ディクショナリ・ビューのリストです。
表6-3 スクリプトを管理するためのPL/SQLプロシージャ
PL/SQLプロシージャ | 説明 |
---|---|
rqGrant |
データストアまたはスクリプトへの読取りアクセス権を付与します。 |
rqRevoke |
データストアまたはスクリプトへの読取りアクセス権を取り消します。 |
sys.rqScriptCreate |
指定されたR関数を、指定された名前でOracle R EnterpriseのRスクリプト・リポジトリに追加します。 |
sys.rqScriptDrop |
指定されたR関数をOracle R EnterpriseのRスクリプト・リポジトリから削除します。 |
表6-4 スクリプトのデータ・ディクショナリ・ビュー
データ・ディクショナリ・ビュー | 説明 |
---|---|
ALL_RQ_SCRIPTS |
現行のユーザーが使用可能な、Oracle R EnterpriseのRスクリプト・リポジトリ内のスクリプトを示します。 |
USER_RQ_SCRIPTS |
現行のユーザーが所有している、Oracle R EnterpriseのRスクリプト・リポジトリ内のスクリプトを示します。 |
USER_RQ_SCRIPT_PRIVS |
現行のユーザーが読取りアクセス権を付与したOracle R EnterpriseのRスクリプト・リポジトリ内のスクリプトおよびアクセス権が付与されたユーザーを示します。 |
SYS.RQ_SCRIPTS |
Oracle R EnterpriseのRスクリプト・リポジトリ内のシステム・スクリプトを示します。 |
この例では、sys.rqScriptCreate
プロシージャを使用して、Oracle R EnterpriseのRスクリプト・リポジトリ内にスクリプトを作成します。
この例では、myRandomRedDots2
という名前のユーザー定義関数を作成します。このユーザー定義関数は2つの引数を受け入れ、2つの列を持ち指定の数のランダム標準値を表示するdata.frame
オブジェクトを返します。sys.rqScriptCreate
関数は、ユーザー定義関数をOracle R Enterpriseのスクリプト・リポジトリに格納します。
-- Create a script named myRandomRedDots2 and add it to the R script repository. -- Specify that the script is private and to overwrite a script with the same name. BEGIN sys.rqScriptCreate('myRandomRedDots2', '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; / -- Grant read privilege access to Scott. BEGIN rqGrant('myRandomRedDots2', 'rqscript', 'SCOTT'); END; / -- View the users granted read access to myRandomRedDots2. select * from USER_RQ_SCRIPT_PRIVS; NAME GRANTEE ---------------- ------- myRandomRedDots SCOTT -- Revoke the read privilege access from Scott. BEGIN rqRevoke('myRandomRedDots2', 'rqscript', 'SCOTT'); END; / -- Remove the script from the R script repository. BEGIN sys.rqScriptDrop('myRandomRedDots2'); END; /
Oracle R Enterpriseには、SQLでデータストアの基本的な管理を行うためのPL/SQLプロシージャおよびOracle Databaseデータ・ディクショナリ・ビューが用意されています。次の各表は、これらのプロシージャおよびビューのリストです。
表6-5 データストアを管理するためのPL/SQLプロシージャ
PL/SQLプロシージャ | 説明 |
---|---|
rqGrant |
データストアまたはスクリプトへの読取りアクセス権を付与します。 |
rqRevoke |
データストアまたはスクリプトへの読取りアクセス権を取り消します。 |
rqDropDataStore |
データストアを削除します。 |
表6-6 データストアのデータ・ディクショナリ・ビュー
ビュー | 説明 |
---|---|
ALL_RQ_DATASTORES |
データストアが付与可能かどうかを含め、現行のユーザーが使用可能なデータストアを示します。 |
RQUSER_DATASTORELIST |
Oracle Databaseスキーマ内のデータストアを示します。 |
RQUSER_DATASTORECONTENTS |
Oracle Databaseスキーマ内のデータストア内のオブジェクトを示します。 |
USER_RQ_DATASTORE_PRIVS |
データストア、および現行のユーザーが読取りアクセス権を付与したユーザーを示します。 |
USER_RQ_DATASTORES |
データストアが付与可能かどうかを含め、現行のユーザーが所有しているデータストアを示します。 |