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