codegen_workflow
とデモ・データベーステーブルINSUR_CUST_LTV_SAMPLE
を使用するユースケースを援用しつつ説明します。 Oracle Data MinerにはSQLスクリプト生成機能が用意されており、この機能を使用して、ワークフロー内の1つまたはすべてのノード用にSQLスクリプトを生成できます。その後で、SQLスクリプトを別のアプリケーションに統合できます。
このように、Oracle Data Minerは、データ・マイニングを別のエンド・ユーザー・アプリケーションと統合するためのスコープを提供します。ユースケースを援用しつつ、この機能について詳しく説明します。
関連項目
SQLスクリプト生成機能について、サンプル・ワークフローcodegen_workflow
とデモ・データベーステーブルINSUR_CUST_LTV_SAMPLE
を使用するユースケースを援用しつつ説明します。
このユースケースは、次を行う方法を示します。
ワークフローcodegen_workflow
のインポート、実行およびデプロイ
ワークフローcodegen_workflow
からのSQLスクリプトの生成
次を使用する、データベース上でのSQLスクリプトの実行のスケジューリング
Oracle SQL Developer
Oracle Enterprise Manager
生成されたSQLスクリプトの、ターゲットまたは本番データベース上へのデプロイ
codegen_workflow,
はデータ・モデリングとデータ・スコアリングを示します。 関連項目
この項で説明するSQLスクリプト生成ユースケースは、次の前提に基づいています。
データ・アナリストが、モデル構築とスコアリングのワークフローを定義します。
データ・アナリストは、新しいスクリプト生成機能を使用して、SQLスクリプト一式をデプロイメントのためにアプリケーション開発者に渡します。
アプリケーション開発者は、スクリプトをターゲットまたは本番データベースにデプロイし、そこで、定期的なスクリプトの実行をスケジュールすることができます。これにより、スクリプト実行のたびに、新しい顧客データを使用してモデルを作成できます。
デモ・データベース: このユースケースは、ユーザー・アカウントにインストールできるデモ・データベース表INSUR_CUST_LTV_SAMPLE
を使用します。
事前定義済ワークフロー: このユースケースでは、事前定義済ワークフローcodegen_workflow
を援用して手順を説明します。
codegen_workflow.xml
は、SQL Developerのインストール場所(sqldeveloper_home\dataminer\demos\workflows
)から利用できます。サンプル・ワークフローcodegen_workflow,
は、データ・モデリングとデータ・スコアリングを示します。
このユースケースcodegen_workflow
のサンプル・ワークフローは、単一の系統に含まれる2つの異なったプロセス(図7-1に示すモデリング(上)とスコアリング(下))から構成されます。どちらの処理も、入力データ・ソースとしてデモ・データINSUR_CUST_LTV_SAMPLE
を使用します。
モデリング: モデリング・プロセスにより、分類サポート・ベクター・マシン(SVM)モデルが構築されます。顧客が保険を買うかどうかを予測します。モデル係数は、表示のためにデータベース表に永続化されます。この表がアプリケーション統合の基盤になる場合があります。
スコアリング: スコアリング・プロセスは、モデリング系統によって作成されたサポート・ベクター・マシン(SVM)モデルを使用して顧客データを予測します。予測結果は、表示のためにデータベース・ビューに永続化されます。このビューは、次のものを提供します。
現在の入力データの予測。たとえば、入力表が新しいデータでリフレッシュされた場合、このビューは新しいデータの予測を自動的に取得します。
アプリケーション統合の基礎。
SQLスクリプトを生成する前に、ワークフローを実行する必要があります。
ワークフローからSQLスクリプト・ファイルを生成する手順:
ステップ5で定義したスクリプト・ディレクトリで、生成されたスクリプトのリストを確認できます。
codegen_workflow,
から生成されたStructured Query Language (SQL)スクリプト・ファイルは、関連オブジェクトのクリーンアップおよびその他のノード固有の操作であるジョブを実行します。workflow name_Run.sql
が実行されているとき、制御表名変数で指定された名前を使用して、制御表が先に作成されます。 codegen_workflow,
から生成されたStructured Query Language (SQL)スクリプト・ファイルは、関連オブジェクトのクリーンアップおよびその他のノード固有の操作であるジョブを実行します。
表7-1に、codegen_workflow
から生成されたSQLスクリプト・ファイルとその説明をリストします。
表7-1 生成されたスクリプト・ファイルとその説明
スクリプト・ファイルのタイプ | スクリプト・ファイル名 | codegen_workflowから生成されたスクリプト・ファイルの例 | 説明 |
---|---|---|---|
マスター・スクリプト |
|
|
必要なすべてのノード・レベル・スクリプトを正しい順序で起動します。それは次のタスクを実行します:
|
クリーンアップ・スクリプト |
|
|
マスター・スクリプトによって作成されたすべてのオブジェクトを削除します。次を削除します。
|
ワークフローのイメージ |
|
|
これは、スクリプト生成時におけるワークフローのイメージです。 |
ノード・スクリプト |
|
|
構築ノードのモデル作成など、ノード固有の操作を実行します。スクリプト生成に参加する各ノードにつき、1つのノード・スクリプトが生成されます。 |
ノードのために生成されたSQLスクリプトには、スクリプトによって作成されたパブリック・オブジェクトにオブジェクト名を提供する変数定義があります。マスター・スクリプトは、基礎となるノード・レベル・スクリプトをすべて、適切な順序で起動します。そのため、すべての変数定義は、マスター・スクリプトで定義される必要があります。
次の変数がサポートされます。
表またはビューおよびモデルなど、ノード・レベル・スクリプトに入力されるオブジェクトの名前の変更を可能にする変数。デフォルトでは、これらの名前は、表またはビュー名、およびモデルの元の名前です。
制御表の名前の変更を可能にする変数。デフォルトで、制御表の名前は、ワークフロー名です。
名前付きオブジェクトを、スクリプトによって生成される前に、先に削除するべきかどうかを示す変数。
マスター・スクリプトworkflow name_Run.sql
が実行されているとき、制御表名変数で指定された名前を使用して、制御表が先に作成されます。
制御表は、次を実行します。
ビュー、モデル、テキスト仕様など、生成されたオブジェクトを登録します
ワークフロー内で入力オブジェクトが論理ノードによって参照されるのを可能にし、出力オブジェクトを登録します
クリーンアップ・スクリプトによって削除する必要があるオブジェクトを決定します
ワークフローを介してすぐにアクセスできないオブジェクトの内部名を提供します。たとえば、ユーザーは、制御表の表示によって、モデル・テスト結果表を見つけることができます。
異なる制御ファイル名と異なる出力変数名を使用すると、生成されたスクリプトを使用して、異なる結果を同時に生成、管理できます。これは、入力データ・ソースが、独立にマイニングするデータの異なるセットを継続する場合に、役に立つ場合があります。このユースケースでは、アプリケーションは、生成された結果の再実行または削除時に利用できるように、制御表の名前を保存する役割を果たします。
関連項目
マスター・スクリプトworkflow name_Run.sqlが実行されているときに、制御表名変数で指定された名前を使用して、制御表が先に作成されます
制御表の構造は、次のとおりです。
CREATE TABLE "&WORKFLOW_OUTPUT"
(
NODE_ID VARCHAR2(30) NOT NULL,
NODE_NAME VARCHAR2(128) NOT NULL,
NODE_TYPE VARCHAR2(30) NOT NULL,
MODEL_ID VARCHAR2(30),
MODEL_NAME VARCHAR2(128),
MODEL_TYPE VARCHAR2(35),
OUTPUT_NAME VARCHAR2(30) NOT NULL,
OUTPUT_TYPE VARCHAR2(30) NOT NULL,
ADDITIONAL_INFO VARCHAR2(65),
CREATION_TIME TIMESTAMP(6) NOT NULL
,
COMMENTS VARCHAR2(4000 CHAR)
)
制御表の列には、ノードとモデルに関連する情報が含まれます。
表7-2に、制御表の列と、その説明および例をリストします。
表7-2 制御表の列とその説明
列名 | 説明 | 例 |
---|---|---|
NODE_ID |
これは、ワークフローの一部を構成するノードのIDです。ノードを一意に識別します。 |
10001, 10002 |
NODE_NAME |
これは、ワークフローの一部を構成するノードの名前です。 |
分類構築、MINING_DATA_BUILD_V |
NODE_TYPE |
これは、ノードのカテゴリです。 |
データソース・ノード、分類構築ノードなど。 |
MODEL_ID |
これは、ワークフロー・モデルのIDです。ワークフロー内で参照される各モデルを一意に識別します。 |
10101, 10102 |
MODEL_NAME |
これは、モデルの名前です。 |
CLAS_GLM_1_6 |
MODEL_TYPE |
モデル・タイプは、モデルが使用するアルゴリズム・タイプです。 |
一般化線形モデル、Support Vector Machineなど |
OUTPUT_NAME |
これは、出力の名前です。名前がユーザーの管理下にあるのでない限り、これは内部的に生成された名前です。 |
表/ビュー名、モデル名、テキスト・オブジェクト名。例: ODMR$15_37_21_839599RMAFRXI - 表名 "DMUSER"."CLAS_GLM_1_6" - 完全修飾モデル名 |
OUTPUT_TYPE |
出力オブジェクトのタイプを制限します。 |
表、ビュー、モデル |
ADDITIONAL_INFO |
これは、スクリプト実行に関するオブジェクトの目的を修飾する情報です。 |
テスト・リフト結果のためのターゲット・クラス |
CREATION_TIME |
これは、オブジェクト作成時刻です。 |
11-DEC-12 03.37.25.935193000 PM (形式はロケールにより決定) |
COMMENTS |
スクリプト実行に関するオブジェクトのロールを修飾するコメント。 |
出力データ(データソースのようなノードに表示される) データの使用方法(モデル構築に渡されるビューに表示される) 重みの設定(モデル構築に渡される重みの表に表示される) 構築設定(モデル構築に渡される構築設定表に表示される) モデル(モデル・オブジェクトに表示される) |
生成されたすべてのSQLスクリプト・ファイルは、データベース・インスタンスがアクセスできるターゲットまたは本番データベースにデプロイする必要があります。SQLスクリプト・ファイルは、同じディレクトリに一緒に格納する必要があります。
この項では、SQL DeveloperとOracle Enterprise Managerを使用して、マスター・スクリプトの実行をスケジュールする方法を説明します。
ワークフロー・スクリプト・ファイルをスケジューリングする前に、Oracle Database、SQLスクリプト・ファイル、Oracle Data MinerリポジトリおよびOracle Data Minerユーザー・アカウントに関連する特定のタスクを実行する必要があります。
SQLスクリプト・ファイルをスケジュールする前提条件は、次のとおりです。
Oracle Database: 生成されたSQLスクリプト・ファイルをスケジュールするには、Oracle Databaseのインスタンスが必須です。
SQLスクリプト・ファイル: 生成されたすべてのSQLスクリプト・ファイルは、データベース・インスタンスがアクセスできるターゲットまたは本番データベース・ホストにデプロイする必要があります。すべてのスクリプト・ファイルを、同じディレクトリに一緒に格納する必要があります。
Oracle Data Minerリポジトリ: リポジトリが提供するサービスを一部のノード・スクリプトが実行時に使用するため、スクリプトを実行するにはData Minerリポジトリが必須です。リポジトリが提供するサービスの例には、Explorerノードのための統計計算、テキストの構築ノードのためのテキスト処理などがあります。
Oracle Data Minerユーザー・アカウント: リポジトリが提供するサービスに必要な権限をユーザー・アカウントが持っているため、スクリプト・ファイルの実行には必須です。
マスター・スクリプト・ファイル内の完全なディレクトリ・パス: マスター・スクリプト内の各ノード・スクリプトの起動への完全なディレクトリ・パスを追加します。これは、実行時にマスター・スクリプトが個々のノード・スクリプト・ファイルをコールするために必須です。
codegen_workflow_Run.sql
に完全なディレクトリ・パスを追加できます。マスター・スクリプト・ファイルを編集して、マスター・スクリプトcodegen_workflow_Run.sql
に完全なディレクトリ・パスを追加できます。
マスター・スクリプトに完全なディレクトリ・パスを追加する手順:
資格証明はOracle Schedulerオブジェクトで、専用のデータベース・オブジェクトに格納されるユーザー名とパスワードのペアです。
次のように、2つの資格証明を作成する必要があります。
ホスト資格証明: SQLPlusスクリプト・ジョブは、ホスト資格証明を使用して、SQLPlus実行可能ファイルを実行できるように、データベース・インスタンスまたはオペレーティング・システムに対して自己自身を認証します。
接続資格証明: この資格証明には、スクリプトを実行する前にSQLPlusをデータベースに接続するデータベース資格証明が含まれます。
資格証明を作成する手順:
「接続」タブで、ユーザー・アカウントが作成される接続を展開します。
その接続の下の「スケジューラ」を展開します。
「スケジューラ」の下で、「資格証明」を右クリックし、「新規資格証明」をクリックします。「資格証明の作成」ダイアログ・ボックスが開きます。
まず、ジョブが実行されているホストにログインするためのホスト資格証明を作成します。次の情報を指定します。
名前
「有効」を選択します。
説明
ユーザー名
パスワード
「適用」をクリックします。
これで、データベース・ホストと接続のための資格証明を作成するタスクは完了です。
Oracle SQL Developerには、Schedulerジョブを定義するためのグラフィカル・ユーザー・インタフェースがあります。
SQL Developerを使用したStructured Query Language (SQL)スクリプトのスケジューリングには、次が含まれます。
資格証明はOracle Schedulerオブジェクトで、専用のデータベース・オブジェクトに格納されるユーザー名とパスワードのペアです。
次のように、2つの資格証明を作成する必要があります。
ホスト資格証明: SQLPlusスクリプト・ジョブは、ホスト資格証明を使用して、SQLPlus実行可能ファイルを実行できるように、データベース・インスタンスまたはオペレーティング・システムに対して自己自身を認証します。
接続資格証明: この資格証明には、スクリプトを実行する前にSQLPlusをデータベースに接続するデータベース資格証明が含まれます。
資格証明を作成する手順:
「接続」タブで、ユーザー・アカウントが作成される接続を展開します。
その接続の下の「スケジューラ」を展開します。
「スケジューラ」の下で、「資格証明」を右クリックし、「新規資格証明」をクリックします。「資格証明の作成」ダイアログ・ボックスが開きます。
まず、ジョブが実行されているホストにログインするためのホスト資格証明を作成します。次の情報を指定します。
名前
「有効」を選択します。
説明
ユーザー名
パスワード
「適用」をクリックします。
これで、データベース・ホストと接続のための資格証明を作成するタスクは完了です。
ジョブ・ウィザードでジョブ・スケジュールを作成し、それを使用してワークフロー・ジョブを定義できます
ジョブ・スケジュールを定義する手順:
SQL Developerの「接続」タブで、ユーザー・アカウントが作成される接続を展開します。
その接続の下の「スケジューラ」を展開します。
「スケジューラ」の下で、「ジョブ」を右クリックし、「新規ジョブ」(ウィザード)をクリックします。「ジョブの作成」ダイアログ・ボックスが開きます。
「ジョブ・ウィザードの作成 — ステップ1/6」ダイアログ・ボックスの「ジョブ詳細」に、次の情報を入力します。
ジョブ名
「有効」を選択します。
説明
ジョブ・クラス
ジョブのタイプ。「スクリプト」を選択します。
スクリプト・タイプ: 「SQLPlus」を選択します。
ジョブの実行時期: 「繰返し間隔」を選択します。
「繰返し間隔」ダイアログ・ボックスで、繰り返し間隔、開始日、時刻を設定して、「OK」をクリックします。
「次へ」をクリックします。
「ジョブ・ウィザードの作成 — ステップ2/6」ダイアログ・ボックスで、次の項目を定義します。
ドロップダウン・リストからオプション「ローカル」を選択します。
資格証明の選択: ドロップダウン・リストから作成したホスト資格証明を選択します。
接続の資格証明名: ドロップダウン・リストから作成した接続資格証明を選択します。
「次へ」をクリックします。
「ジョブ・ウィザードの作成 — ステップ4/6」ダイアログ・ボックスで、ジョブ・ステータスに基づく電子メール通知を設定できます。
「イベントの選択」セクションで、電子メール通知を送信するジョブ・イベントを選択します。
「受信者」フィールドに、電子メール・アドレスを入力します。各メッセージについて、受信者の電子メール・アドレスと送信者(オプション)を指定できます。
「次へ」をクリックします。
「ジョブ・ウィザードの作成 — ステップ5/6」ダイアログ・ボックスで、「次」をクリックします。このユースケースでは、このステップはスキップされます。
「ジョブ・ウィザードの作成 — ステップ6/6」ダイアログ・ボックスで、「終了」をクリックします。これで、ジョブ・スケジュールの作成は完了です。
ジョブを作成したら、SQL Developerでそれを監視できます。
Oracle Enterprise Managerを使用すると、データベース管理者がジョブを定義できます。ジョブの定義は、完全なファイル・パスを使用して、スクリプト・ファイルとしてマスター・スクリプトの起動を定義します。
ジョブをスケジュールに従って実行するか、オンデマンドにするかを決定できます。アプリケーションでジョブの実行を監視することもできます。
Oracle Enterprise Managerでジョブをスケジュールする手順:
Oracle Databaseアカウントを使用してOracle Enterprise Managerにログインします。
「ジョブ・アクティビティ」セクションで、「ジョブ」をクリックします。ジョブ作成ページが開きます。
「ジョブの作成」ドロップダウン・リストで「SQLスクリプト」を選択し、「実行」をクリックします。新しいジョブを定義できる「ジョブの作成」ページが開きます。
「一般」タブで、次の詳細を入力します。
名前
説明
ターゲット・データベース: ジョブが実行されるターゲット・データベースを入力します。
「パラメータ」タブの「SQLスクリプト」セクションに、クリーンアップ・スクリプトとマスター・スクリプトのフル・パス名を入力します。
「資格証明」タブで、次の資格証明を指定します。
データベース・ホスト資格証明
データベース資格証明
「スケジュール」タブで、ジョブのスケジュールを定義します。
「アクセス」タブで、ジョブ・ステータスに基づく電子メール通知を設定できます。
「発行」をクリックしてジョブを作成します。
SQLスクリプトのデプロイには、ベース・ディレクトリからのマスター・スクリプト・ファイルの実行が必要です。
SQLスクリプトをデプロイするには、次のマスター・スクリプト・ファイルを実行します。
> @" C: base directory\workflow name_Run.sql"
> @" C: <base directory>\workflow name_Run.sql
"
たとえば、SQLPlusで、ベース・ディレクトリから次のマスター・スクリプトcodegen_workflow_Run.sql
を実行します。
>@" C:\code gen\codegen workflow\codegen_workflow_Run.sql"
引き続きマスター・スクリプト・ファイルを実行する必要がある場合は、先にクリーンアップ・スクリプトcodegen_workflow_Drop.sql
を実行して以前に生成されたオブジェクトを削除し、その後で、次のマスター・スクリプトを実行します。
>@" C:\code gen\codegen workflow\codegen_workflow_Drop.sql"
>@" C:\code gen\codegen workflow\codegen_workflow_Run.sql"
SQLスクリプトを実行した後で、生成されたオブジェクトを調べるために、制御表を問い合わせることができます。
制御表を問い合せるには、SQLPlusで次のコマンドを実行します。
>select * from workflow_name
たとえば、制御表でcodegen_workflowを問い合わせて、生成されたオブジェクトを次のように調べます。
>select * from "codegen_workflow"
この例では、表作成ノードMODEL_COEFFICIENTSにより、生成されたSVMモデルから抽出した係数データを永続化した出力表MODEL_COEFFCIENTSが作成されました。