データベース分析の概要
Oracle Databaseでは、ネイティブ分析機能がサポートされています。これらの機能はすべて共通サーバー上にあるため、効率的に結合できます。分析結果は、Oracle Business Intelligence Suite Enterprise Editionや他のBIツールと統合できます。
様々な分析は、ほとんど制限なく組み合せることができます。例6-28に、単一のSQL問合せにおけるOracle Machine Learning for SQLおよびテキストの処理を示します。この問合せでは、自然減する傾向が強く(確率が80%を超える)、有望な顧客であり(顧客価値率が90%を超える)、かつChecking Plusアカウントに関して最近カスタマ・サービスに問合せのあった顧客がすべて選択されます。自然減の傾向に関する情報は、tree_model
というOML4SQLモデルを使用して計算されます。Checking Plusアカウントに関するコール・センターのノートを検索するために、Oracle TextのCONTAINS
演算子が使用されています。
次の表に、Oracle Databaseで実行できる組込み分析の一部を示します。
表6-259 Oracle Databaseのネイティブ分析
分析機能 | 説明 | 参照先ドキュメント |
---|---|---|
複合データの変換 |
データ変換は、分析用アプリケーションやETL (抽出、変換およびロード)の重要な側面である。データ変換の実装には、SQL式または
|
|
Oracle Databaseでは多数のSQL統計関数が提供され、仮説検定(t検定、F検定など)、相関関数(ピアソン相関など)、クロスタブ統計および記述統計(中央値、最頻値など)がサポートされる。 |
『Oracle Database SQL言語リファレンス』および『Oracle Database PL/SQLパッケージおよびタイプ・リファレンス』 |
|
ウィンドウ関数と分析SQL関数 |
Oracle Databaseでは、累積集計、移動集計および集中集計を計算するためのウィンドウ関数および分析関数がサポートされる。集計ウィンドウ関数群では、 |
|
線形代数 |
|
|
分析ビュー |
分析ビューは、ディメンション・モデルを使用してデータを編成します。これらを使用すると、集計および計算をデータ・セットに簡単に追加でき、比較的単純なSQLで問い合せることができるデータをビューに表示できます。 |
|
空間分析 |
Oracle Spatialでは、ハイエンドGISおよびLBSソリューションをサポートする高度な空間機能が提供される。Oracle Spatialの分析機能および機械学習機能には、ビニング、地域パターンの検出、空間相関、関連機械学習および空間クラスタリングなどがある。 また、Oracle Spatialでは、トポロジおよびネットワーク・データのモデルと分析もサポートされる。Oracle Spatialのトポロジ・データ・モデルを使用すると、トポロジ内のノード、エッジおよびフェイスに関するデータと連携できる。最短経路、最小コストの全域木、隣接分析、巡回セールスマン問題の計算など様々なネットワーク分析機能が含まれる。 |
|
グラフ |
プロパティ・グラフは、Oracle Databaseの高度なグラフ問合せ機能および分析機能を提供します。インメモリー・グラフ・サーバー(PGX)は、グラフ化された機械学習アルゴリズムをサポートする機械学習ライブラリを提供します。機械学習ライブラリは、DeepWalk、教師ありGraphWiseおよびPg2vecアルゴリズムをサポートしています。 |
|
テキスト分析 |
Oracle Textでは、Oracleデータベース、ファイルおよびWeb上に格納されているテキストおよびドキュメントの索引付け、検索および分析のために標準SQLが使用される。Oracle Textによって、一群のドキュメントの自動分類およびクラスタリングもサポートされる。こうしたOracle Textの分析機能の多くは、Oracle Machine Learningの機能の最上位に用意されている。 |
例6-28 Oracle Machine Learning for SQLとOracle Textを組み合せたSQL問合せ
SELECT A.cust_name, A.contact_info FROM customers A WHERE PREDICTION_PROBABILITY(tree_model, 'attrite' USING A.*) > 0.8 AND A.cust_value > 90 AND A.cust_id IN (SELECT B.cust_id FROM call_center B WHERE B.call_date BETWEEN '01-Jan-2005' AND '30-Jun-2005' AND CONTAINS(B.notes, 'Checking Plus', 1) > 0);