プライマリ・コンテンツに移動
Oracle® R Enterpriseユーザーズ・ガイド
リリース1.5
E67082-02
目次へ移動
目次
索引へ移動
索引

前
前へ
次
次へ

A.7 rqTableEval関数

rqTableEval関数は、EXP_NAMパラメータで指定されているスクリプト内のR関数を実行します。INP_CURパラメータを使用して、データをR関数に渡します。PAR_CURパラメータを使用して、引数をR関数に渡すことができます。

R関数は、データベース内にSQL表として表示されるR data.frameオブジェクトを返します。OUT_QRYパラメータを使用して、返される値の形式を定義します。

構文

rqTableEval (
     INP_CUR     REF CURSOR     IN
     PAR_CUR     REF CURSOR     IN
     OUT_QRY     VARCHAR2       IN
     EXP_NAM     VARCHAR2       IN)

パラメータ


表A-2 rqTableEval関数のパラメータ

パラメータ 説明

INP_CUR

EXP_NAMEパラメータで指定されているR関数に渡すデータを指定するカーソル。

PAR_CUR

入力関数に渡す引数値を含むカーソル。

OUT_QRY

次のうちの1つ。

  • NULL。データ・オブジェクトとイメージ・オブジェクトの両方を含む可能性のあるシリアライズ・オブジェクトを返します。

  • rqEvalにより返された表の列名およびデータ型を指定するSQL SELECT文。イメージ・データは破棄されます。デュアル・ダミー表を使用してプロトタイプ行を指定することも、既存の表またはビューに基づいてSELECT文を作成することもできます。R関数はdata.frameを返す必要があります。

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

  • 文字列'PNG'。返される表に、R関数により生成されたPNG形式のイメージを持つBLOBが含まれることを指定します。

EXP_NAM

Oracle R EnterpriseのRスクリプト・リポジトリ内のスクリプトの名前。


戻り値

関数rqTableEvalは、OUT_QRYパラメータ値で指定されている構造を持つ表を返します。

例A-9の最初にあるPL/SQLブロックでは、スクリプトmyNaiveBayesModelがOracle R EnterpriseのRスクリプト・リポジトリ内に存在しないようにするために、このスクリプトを削除します。次に、関数を作成して、それをスクリプトmyNaiveBayesModelとしてリポジトリに格納します。

このR関数は、2つの引数(操作対象のデータおよびデータストアの名前)を受け入れます。この関数は、irisデータセットに基づいてNaive Bayesモデルを構築します。Naive Bayesはe1071パッケージ内にあります。

myNaiveBayesModel関数はe1071パッケージをロードして、データベース・サーバーのRエンジンで関数が実行されるときにその関数本体がe1071パッケージにアクセスできるようにします。data.frame内のファクタはユーザー定義の埋込みR関数にロードされるときに文字列ベクターに変換されるため、myNaiveBayesModel関数は明示的に文字ベクターをRファクタに変換します。

myNaiveBayesModel関数は指定された列からデータを取得した後、モデルを作成してデータストアに保存します。R関数は、関数の実行結果として表示可能な単純な値を持つためにTRUEを返します。

例A-9では次に、rqTableEval関数を呼び出すSELECT文を実行します。churnGroupEval関数のINP_CUR 引数で、SELECT文は、R関数に渡すデータセットを指定します。データは、ore.create(iris, "IRIS")の呼出しによって作成されたIRIS表から取得されます(この例には示していません)。rqTableEval関数のINP_CUR引数は、R関数に渡すデータストアの名前を指定し、ユーザー定義のR関数の埋込みRの実行中にデータベースへのOracle R Enterprise接続を確立するためのore.connect制御引数を指定します。OUT_QRY引数はXML形式の値を返すことを指定し、EXP_NAM引数は、呼び出すR関数としてRスクリプト・リポジトリ内のmyNaiveBayesModelスクリプトを指定します。

例A-9 rqTableEval関数の使用方法

BEGIN
  sys.rqScriptDrop('myNaiveBayesModel');
  sys.rqScriptCreate('myNaiveBayesModel',
    'function(dat, datastoreName) {
       library(e1071)
       dat$Species <- as.factor(dat$Species)
       nbmod <- naiveBayes(Species ~ ., dat)
       ore.save(nbmod, name = datastoreName)
       TRUE
     }');
END;
/

SELECT *
  FROM table(rqTableEval(
    cursor(SELECT * FROM IRIS),
    cursor(SELECT 'myNaiveBayesDatastore' "datastoreName", 
           1 as "ore.connect" FROM dual),
    'XML', 'myNaiveBayesModel'));

SELECT文は、rqTableEval表関数から値TRUEを含むXML文字列を返します。

次のSELECT文に示すとおり、myNaiveBayesDatastoreデータソースが生成され、オブジェクトnbmodがこのデータソースに存在しています。

SQL> SELECT * from rquser_DataStoreContents 
  2     WHERE dsname = 'myNaiveBayesDatastore';
 
DSNAME                  OBJNAME  CLASS       OBJSIZE  LENGTH  NROW  NCOL
---------------------   -------  ----------  -------  ------  ----  ----
myNaiveBayesDatastore   nbmod    naiveBayes     1485       4

次のように、ローカルのRセッションでモデルをロードして表示できます。

R> ore.load("myNaiveBayesDatastore")
[1] "nbmod"
R> nbmod
$apriori
Y
    setosa versicolor  virginica 
        50         50         50 
 
$tables
$tables$Sepal.Length
            Sepal.Length
Y             [,1]      [,2]
  setosa     5.006 0.3524897
  versicolor 5.936 0.5161711
  virginica  6.588 0.6358796
 
$tables$Sepal.Width
            Sepal.Width
Y             [,1]      [,2]
  setosa     3.428 0.3790644
  versicolor 2.770 0.3137983
  virginica  2.974 0.3224966
 
$tables$Petal.Length
            Petal.Length
Y             [,1]      [,2]
  setosa     1.462 0.1736640
  versicolor 4.260 0.4699110
  virginica  5.552 0.5518947
 
$tables$Petal.Width
            Petal.Width
Y             [,1]      [,2]
  setosa     0.246 0.1053856
  versicolor 1.326 0.1977527
  virginica  2.026 0.2746501
 
 
$levels
[1] "setosa"     "versicolor" "virginica" 
 
$call
naiveBayes.default(x = X, y = Y, laplace = laplace)
 
attr(,"class")
[1] "naiveBayes"