2.4.1 透過層について
Oracle Machine Learning for Rの透過層は、OREbase
、OREgraphics
、OREdplyr
およびOREstats
のパッケージで実装されます。
これらのOML4Rパッケージには、オープン・ソースRのbase
、graphics
およびstats
のパッケージの関数のオーバーロードされたメソッドがそれぞれ含まれています。
これらのパッケージのメソッドおよび関数を使用すると、Oracle Databaseインスタンスの表およびビューに対応するdata.frameおよびその他のRプロキシ・オブジェクトを作成できます。そのようなオブジェクトを使用するR式を実行すると、メソッドおよび関数はSQL問合せを透過的に生成してデータベースに送信します。その後、データベースは問合せを実行し、通常は結果もプロキシ・オブジェクトとして返して、データとクライアント間のデータ移動を最小限に抑えます。これは、結果によっては大きくなる可能性があるためです。
データベース表またはビューは、data.frame
のサブクラスであるore.frame
オブジェクトで表されます。その他のOML4Rクラスは、vector
から継承されるore.vector
など、対応するRクラスから継承されます。OML4Rは、Oracle Databaseのデータ型をOML4Rのクラスに(たとえば、NUMBER
を完全なマップ・リストに)マップします。
透過層メソッドおよび関数を使用して、分析用のデータベース常駐データを準備できます。次に、他のOML4Rパッケージの関数を使用してモデルを構築し、それを使用してデータをスコアリングできます。
例2-2 Rでの種ごとの花弁の長さの平均の調査
この例では、Rデータ・フレームirisからIRIS_TABLEという表を作成します。次に、オーバーロードされた集計関数を使用して、種ごとに花弁の長さの平均を計算します。
ore.create(iris, table = 'IRIS_TABLE') aggplen = aggregate(IRIS_TABLE$Petal.Length, by = list(species = IRIS_TABLE$Species), FUN = mean) aggplenこの例のリスト
R> ore.create(iris, table = 'IRIS_TABLE')
R> aggplen = aggregate(IRIS_TABLE$Petal.Length,
by = list(species = IRIS_TABLE$Species),
FUN = mean)
R> aggplen
species x
setosa setosa 1.462
versicolor versicolor 4.260
virginica virginica 5.552
例2-3 前の例に対応するSQL
この例では、前の例のaggregate
関数に対応するSQLを示します。
SELECT "Species", AVG("Petal.Length") FROM IRIS_TABLE GROUP BY "Species" ORDER BY "Species"; Species AVG("PETAL.LENGTH") ----------- ------------------- setosa 1.4620000000000002 versicolor 4.26 virginica 5.552