Oracle Data Miner には、アプリケーションがOracle Data Minerプロジェクトとワークフローを直接管理できるようにする、リポジトリPL/SQL API一式が含まれます。
プロジェクトPL/SQL APIはODMR_PROJECTパッケージにあり、ワークフローPL/SQL APIはODMR_WORKFLOWパッケージにあります。どちらのパッケージも、Oracle Data Minerリポジトリ内のODMRSYSスキーマで定義されます。
PL/SQL APIを使用すると、次のことができます。
Data Minerプロジェクトとワークフローの管理
ワークフローのスケジュール
ワークフローの実行
プロジェクトおよびワークフロー情報の問合せ
ワークフロー実行ステータスのモニター
生成された結果の問合せ
PL/SQL APIを使用してプロジェクトとワークフローを管理できます。
PL/SQL APIを使用して、次のタスクを実行します。
PROJECT_CREATEは、入力したプロジェクト名を使用してプロジェクトを作成します。このファンクションは、プロジェクトIDを戻します。プロジェクトがすでに存在すると、例外が発生します。PROJECT_RENAMEプロシージャは、既存のプロジェクトの名前を変更します。新しい名前を持つプロジェクトがすでに存在する場合は、例外が発生します。PROJECT_DELETEを使用すると、1つ以上のプロジェクトと、それに含まれるワークフローを削除できます。Oracle Data Minerでワークフローが実行中か開かれている場合は、例外が発生します。WF_RUNには、名前、プロジェクトID、ワークフローおよび実行する特定のノードを受け入れるシグネチャが含まれます。 WF_STOPを使用すると、実行するようにスケジュールされているワークフローを停止またはキャンセルできます。ワークフローがすでに実行中でないか、スケジュールされていない場合、例外が発生します。 WF_RENAMEは、既存のワークフローの名前を変更します。WF_DELETEは、ワークフローを、表、ビュー、モデル、テスト結果などの、生成されたすべてのオブジェクトごと削除します。ワークフローがすでに実行中か、Oracle Data Minerによって開かれている場合は、例外が発生します。WF_IMPORTファンクションは、(Oracle Data Minerによってエクスポートされた)ワークフローを、指定したプロジェクトにインポートします。ワークフローは後方互換なので、古いバージョンのワークフローを新しいOracle Data Minerリポジトリにインポートできます。WF_EXPORTファンクションは、指定したワークフローをエクスポートします。ワークフローがすでに実行中か、Oracle Data Minerによって開かれている場合は、例外が発生します。別の方法として、ワークフローがエクスポートするODMR_USER_PROJECT_WORKFLOWを問い合わせることができます。ファンクションPROJECT_CREATEは、入力したプロジェクト名を使用してプロジェクトを作成します。このファンクションは、プロジェクトIDを戻します。プロジェクトがすでに存在すると、例外が発生します。
ファンクション:
FUNCTION PROJECT_CREATE(p_project_name IN VARCHAR2, p_comment IN VARCHAR2 DEFAULT NULL) RETURN NUMBER
表8-1に、PROJECT_CREATEファンクションで使用されるパラメータをリストします。
表8-1 PROJECT_CREATEファンクションのパラメータのリスト
| パラメータ: | 説明 | 
|---|---|
  | 
作成されたプロジェクトに名前を割り当てます。  | 
  | 
プロジェクトに適用するコメントを指定します。  | 
PROJECT_RENAMEプロシージャは、既存のプロジェクトの名前を変更します。新しい名前を持つプロジェクトがすでに存在する場合は、例外が発生します。
プロシージャ:
PROCEDURE PROJECT_RENAME(p_project_id IN NUMBER, p_project_name IN VARCHAR2)
表8-2に、PROJECT_RENAMEプロシージャで使用されるパラメータをリストします。
表8-2 PROJECT_RENAMEプロシージャのパラメータのリスト
| パラメータ: | 説明 | 
|---|---|
  | 
名前を変更するプロジェクトのプロジェクトIDを指定します。  | 
  | 
プロジェクトの新しい名前を指定します。  | 
プロシージャPROJECT_DELETEを使用すると、1つ以上のプロジェクトと、それに含まれるワークフローを削除できます。Oracle Data Minerでワークフローが実行中か開かれている場合は、例外が発生します。
単一のプロジェクトを削除するプロシージャ:
PROCEDURE PROJECT_DELETE(p_project_id IN NUMBER)
複数のプロジェクトを削除するプロシージャ:
PROCEDURE PROJECT_DELETE(p_project_ids IN ODMR_OBJECT_IDS)
表8-3に、PROJECT_DELETEプロシージャで使用されるパラメータをリストします。
表8-3 PROJECT_DELETEプロシージャのパラメータのリスト
| パラメータ: | 説明 | 
|---|---|
  | 
削除するプロジェクトのプロジェクトIDを指定します。  | 
  | 
削除するプロジェクトのプロジェクトIDを指定します。  | 
ワークフローを実行するファンクションWF_RUNには、名前、プロジェクトID、ワークフローおよび実行する特定のノードを受け入れるシグネチャが含まれます。 
プロジェクトID、ワークフローIDおよびノードIDは、ODMR_USER_WORKFLOW_NODESビューを使用して問い合わせることができます。
WF_RUN:WF_RUN:WF_RUN:WF_RUN:異なるパラメータの組合せを使用してWF_RUNファンクションを実行できます。
プロジェクト名、ワークフロー名およびノード名を伴うWF_RUN 
プロジェクトID、ワークフローIDおよびノードIDを伴うWF_RUN
プロジェクト名、ワークフロー名、ノード名および時間間隔を伴うWF_RUN
プロジェクトID、ワークフローID、ノードIDおよび時間間隔を伴うWF_RUN
RERUN_WORKFLOW RUNモードは、ノードの接続方法に関係なく、ワークフロー内のすべてのノードを実行します。ワークフローに2系統以上の別々のノードが含まれる場合、すべての系統が実行されますが、系統実行の順序は決まっていません。つまり、ユーザーは系統の実行順序を設定できません。
表8-4に、WF_RUNファンクションで使用されるパラメータをリストします。
表8-4 WF_RUNファンクションのパラメータのリスト
| パラメータ: | 説明 | 
|---|---|
  | 
ワークフローが作成されたプロジェクト名を指定します。  | 
  | 
ワークフローが作成されたプロジェクトIDを指定します。  | 
  | 
実行するワークフロー名を指定します。  | 
  | 
実行するワークフローIDを指定します。  | 
  | 
実行するワークフローのノード名を指定します。  | 
  | 
実行するワークフローのノードIDを指定します。  | 
  | 
  | 
  | 
すべてのワークフロー全体のパラレル・モデル・ビルドの最大数を指定します。決定済システムにはNULLを指定します。システムに豊富なリソースがある場合のみこのパラメータを使用し、それ以外の場合は、この値をNULLに設定してデフォルト値を使用します。  | 
  | 
Schedulerで定義された既存のスケジュール・オブジェクトを指定します。  | 
  | 
このワークフローが初めて開始するようにスケジュールされている日付と時刻を指定します。  | 
  | 
ワークフローが繰返し間隔を指定します。反復間隔は、カレンダ式またはPL/SQL式を使用して指定できます。指定した式を評価して、ワークフローの次回実行時を決定します。  | 
  | 
ワークフローが期限切れになり、実行できなくなる日付と時刻を指定します。  | 
  | 
ワークフローを実行する既存のジョブ・クラスを指定します。  | 
プロジェクト名、ワークフロー名およびノード名のパラメータを伴うWF_RUN:
FUNCTION WF_RUN(P_PROJECT_NAME IN VARCHAR2,
                                P_WORKFLOW_NAME IN VARCHAR2,
                                P_NODE_NAMES IN ODMR_OBJECT_NAMES,
                                P_RUN_MODE IN VARCHAR2 DEFAULT 'RUN_NODE_ONLY',
                                P_MAX_NUM_THREADS IN NUMBER DEFAULT NULL,
                                P_SCHEDULE IN VARCHAR2 DEFAULT NULL,
                                P_JOB_CLASS IN VARCHAR2 DEFAULT NULL
RETURN VARCHAR2
名前のパラメータと開始および終了日付を伴うWF_RUNファンクション:
FUNCTION WF_RUN(P_PROJECT_NAME IN VARCHAR2,
                   P_WORKFLOW_NAME IN VARCHAR2,
                   P_NODE_NAMES IN ODMR_OBJECT_NAMES,
                   P_RUN_MODE IN VARCHAR2 DEFAULT 'RUN_NODE_ONLY',
                   P_MAX_NUM_THREADS IN NUMBER DEFAULT NULL,
                   P_START_DATE IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
                   P_REPEAT_INTERVAL IN VARCHAR2 DEFAULT NULL,
                   P_END_DATE IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
                   P_JOB_CLASS IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2
IDと開始および終了日付のパラメータを伴うWF_RUNファンクション:
FUNCTION WF_RUN(P_PROJECT_ID IN NUMBER,
                P_WORKFLOW_ID IN NUMBER,
                P_NODE_IDS IN ODMR_OBJECT_IDS,
                P_RUN_MODE IN VARCHAR2 DEFAULT 'RUN_NODE_ONLY',
                P_MAX_NUM_THREADS IN NUMBER DEFAULT NULL,
                P_START_DATE IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
                P_REPEAT_INTERVAL IN VARCHAR2 DEFAULT NULL,
                P_END_DATE IN TIMESTAMP WITH TIME ZONE DEFAULT NULL,
                P_JOB_CLASS IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2
プロジェクトID、ワークフローIDおよびノードIDのパラメータを伴うWF_RUNファンクション:
FUNCTION WF_RUN(P_PROJECT_ID IN NUMBER,
                                 P_WORKFLOW_ID IN NUMBER,
                                 P_NODE_IDS IN ODMR_OBJECT_IDS,
                                 P_RUN_MODE IN VARCHAR2 DEFAULT 'RUN_NODE_ONLY',
                                 P_MAX_NUM_THREADS IN NUMBER DEFAULT NULL,
                                 P_SCHEDULE IN VARCHAR2 DEFAULT NULL,
                                 P_JOB_CLASS IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR
プロシージャWF_STOPを使用すると、実行するようにスケジュールされているワークフローを停止またはキャンセルできます。ワークフローがすでに実行中でないか、スケジュールされていない場合、例外が発生します。 
表8-5 WF_STOPプロシージャのパラメータのリスト
| パラメータ: | 説明 | 
|---|---|
  | 
ワークフローを取り消すために、ワークフローIDを指定してください。  | 
プロシージャWF_RENAMEは、既存のワークフローの名前を変更します。
このプロシージャでは、次の条件下で例外が発生します。
新しい名前を持つワークフローがすでに存在する場合
ワークフローがすでに実行中か、Oracle Data Minerによって開かれている場合
ワークフローの名前を変更するプロシージャ:
PROCEDURE WF_RENAME(p_workflowId IN NUMBER,
                                  p_workflow_name IN VARCHAR2,
                                  p_mode IN CHAR DEFAULT 'R')
表8-6に、WF_RENAMEプロシージャで使用されるパラメータをリストします。
表8-6 WF_RENAMEプロシージャのパラメータのリスト
| パラメータ: | 説明 | 
|---|---|
  | 
名前を変更するワークフローIDを指定します。  | 
  | 
新しいワークフロー名を指定します。  | 
  | 
このパラメータは内部で使用します。  | 
プロシージャWF_DELETEは、ワークフローを、表、ビュー、モデル、テスト結果などの、生成されたすべてのオブジェクトごと削除します。ワークフローがすでに実行中か、Oracle Data Minerによって開かれている場合は、例外が発生します。
表8-7 WF_DELETEプロシージャのパラメータのリスト
| パラメータ: | 説明 | 
|---|---|
  | 
削除するワークフローのIDを指定します。  | 
WF_IMPORTファンクションは、(Oracle Data Minerによってエクスポートされた)ワークフローを、指定したプロジェクトにインポートします。ワークフローは後方互換なので、古いバージョンのワークフローを新しいOracle Data Minerリポジトリにインポートできます。
このファンクションは、インポート時に、ワークフローにリポジトリ内の既存のワークフローとのオブジェクト名競合があるかどうかを検出します。p_forceパラメータは、インポートを終了するかどうかを決定します。
例外は、次の条件下で発生します。
プロジェクトが存在しない場合
ワークフロー・メタデータが無効か、現在のリポジトリと互換性がない場合
同じ名前を持つワークフローがすでに存在する場合
ファンクション:
FUNCTION WF_IMPORT(p_project_id IN NUMBER,
                       p_workflow_name IN VARCHAR2,
                       p_workflow_data IN XMLType,
                       p_comment IN VARCHAR2,
                       p_force IN BOOLEAN DEFAULT FALSE) RETURN NUMBER;
表8-8に、WF_IMPORTファンクションで使用されるパラメータをリストします。
表8-8 WF_IMPORTプロシージャのファンクションのリスト
| パラメータ: | 説明 | 
|---|---|
  | 
ワークフローをインポートするプロジェクトのIDを指定します。  | 
  | 
インポートするワークフローを指定します。  | 
  | 
ワークフロー・メタデータを指定します。このワークフローは、Oracle Data Minerによって事前にエクスポートされている必要があり、ワークフロー・バージョンはリポジトリがサポートするものより新しくない必要があります。  | 
  | 
ワークフローに適用されるコメントを指定します。  | 
  | 
ワークフローに、リポジトリ内の既存のワークフローとのオブジェクト名競合がある場合に、強制的にインポートするかどうかを決定します。適用できる値は次のとおりです。 
  | 
WF_EXPORTファンクションは、指定したワークフローをエクスポートします。ワークフローがすでに実行中か、Oracle Data Minerによって開かれている場合は、例外が発生します。別の方法として、ワークフローがエクスポートするODMR_USER_PROJECT_WORKFLOWを問い合わせることができます。
ファンクション:
FUNCTION WF_EXPORT(p_workflow_id IN NUMBER) RETURN XMLType;
表8-9に、WF_EXPORTファンクションで使用されるパラメータをリストします。
表8-9 WF_EXPORTプロシージャのファンクションのリスト
| パラメータ: | 説明 | 
|---|---|
  | 
エクスポートするワークフローのIDを指定します。  | 
リポジトリ・ビューでは、ワークフローやプロジェクトに関連する情報の問合せ、およびステータスの監視を行うことができます。
リポジトリ・ビューを使用すると、次のことが可能です。
ワークフローとプロジェクトの情報を問い合せます
ワークフロー実行ステータスのモニター
生成された結果の問合せ
次のリポジトリAPIまたはビューが利用できます。
ODMR_USER_PROJECT_WORKFLOWリポジトリ・ビューを使用します。このビューは、ワークフローに関する情報、たとえばステータス、作成時刻、更新時刻などを提供します。ODMR_USER_WORKFLOW_ALLリポジトリ・ビューを使用します。ODMR_USER_WORKFLOW_LOGリポジトリ・ビューを使用します。ODMR_USER_WORKFLOW_NODESリポジトリ・ビューを使用します。ODMR_USER_WORKFLOW_MODELSリポジトリ・ビューを使用します。ODMR_USER_WF_CLAS_TEST_RESULTSリポジトリ・ビューを使用します。ODMR_USER_WF_REGR_TEST_RESULTSリポジトリ・ビューを使用します。ODMR_USER_WF_CLAS_TEST_RESULTSとODMR_USER_WF_REGR_TEST_RESULTSの結合結果を問い合せるには、ODMR_USER_WF_TEST_RESULTSリポジトリ・ビューを使用します。ODMR_USER_WORKFLOW_ALL_POLLビューを使用してOracle Data Minerワークフローのステータスをポーリングすることで、Oracle Schedulerビューの使用を最小限に抑えることができます。特定のプロジェクトまたはすべてのプロジェクトに属するすべてのワークフローを問い合わせるには、ODMR_USER_PROJECT_WORKFLOWリポジトリ・ビューを使用します。このビューは、ワークフローに関する情報、たとえばステータス、作成時刻、更新時刻などを提供します。
8-10に、このビューの詳細を示します。
表8-10 ODMR_USER_PROJECT_WORKFLOWリポジトリ・ビュー
| 列 | データ型 | 説明 | 
|---|---|---|
PROJECT_ID  | 
NUMBER  | 
これは、ワークフローが作成されたプロジェクトのIDです。  | 
PROJECT_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローが作成されたプロジェクトの名前です。  | 
PJ_CREATION_TIME  | 
TIMESTAMP (6)  | 
これは、プロジェクト作成時刻です。  | 
PJ_LAST_UPDATED_TIME  | 
TIMESTAMP (6)  | 
プロジェクトの最終更新日タイム・スタンプ。  | 
PJ_COMMENTS  | 
VARCHAR2 (4000 CHAR)  | 
これらは、プロジェクトに関連したコメントです(存在する場合)。  | 
WORKFLOW_ID  | 
NUMBER  | 
これは、ワークフローIDです。  | 
WORKFLOW_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローの名前です。  | 
WORKFLOW_DATA  | 
XMLTYPE  | 
これは、XML形式のワークフロー・メタデータです。  | 
CHAIN_NAME  | 
VARCHAR (128 CHAR)  | 
これは内部使用専用です。  | 
STATUS  | 
VARCHAR (30 CHAR)  | 
  | 
WF_CREATION_TIME  | 
TIMESTAMP (6)  | 
これは、ワークフロー作成のタイム・スタンプです。 | 
WF_LAST_UPDATED_TIME  | 
TIMESTAMP (6)  | 
これは、ワークフロー最終更新日のタイム・スタンプです。 | 
WF_COMMENTS  | 
VARCHAR2 (4000 CHAR)  | 
これらは、ワークフローに関連したコメントです(存在する場合)。 | 
個々のワークフローの完了後にワークフロー・ノードのステータスを問い合わせるには、ODMR_USER_WORKFLOW_ALLリポジトリ・ビューを使用します。
たとえば、最後のワークフロー実行で失敗したノードと、それに関連するエラー詳細を問い合わせることができます。8-11に、このビューの詳細を示します。
表8-11 ODMR_USER-WORKFLOW_ALLリポジトリ・ビュー
| 列 | データ型 | 説明 | 
|---|---|---|
WORKFLOW_ID  | 
NUMBER  | 
これは、ワークフローのIDです。  | 
WF_JOB_NAME  | 
VARCHAR2 (261)  | 
これは、ワークフローを実行するSchedulerジョブです。  | 
LOG_DATE  | 
TIMESTAMP (6)WITH TIME ZONE  | 
これは、ログ・エントリのタイム・スタンプです。  | 
LOG_ID  | 
NUMBER  | 
これは、ログ・エントリIDです。  | 
NODE_ID  | 
VARCHAR2 (261)  | 
これは、ワークフロー・ノードIDです。  | 
SUBNODE_ID  | 
VARCHAR2 (261)  | 
これは、ワークフロー・サブ・ノードです。たとえば、構築ノード内のモデル・ノード。  | 
NODE_STATUS  | 
VARCHAR2 (11)  | 
  | 
SUBNODE_STATUS  | 
VARCHAR2 (30)  | 
NODE_STATUSと同じ  | 
NODE_START_TIME  | 
TIMESTAMP (6)WITH TIME ZONE  | 
これは、ノード開始のタイム・スタンプです。  | 
NODE_RUN_TIME  | 
INTERVAL DAY (9) TO SECOND (6)  | 
これは、ノード実行時刻です。  | 
ERROR_CODE  | 
NUMBER  | 
これは、ノードによって戻されるエラー・コードです。  | 
LOG_MESSAGE  | 
VARCHAR2 (4000 CHAR)  | 
これは、ノードによって生成されるログ・メッセージです。  | 
ワークフロー実行のログを問い合わせるには、ODMR_USER_WORKFLOW_LOGリポジトリ・ビューを使用します。
Oracle Data Minerは、このビューを使用してワークフロー・イベント・ログを抽出、表示します。8-12に、このビューの詳細を示します。
表8-12 ODMR_USER_WORKFLOW_LOGリポジトリ・ビュー
| 列 | データ型 | 説明 | 
|---|---|---|
LOG_ID  | 
NUMBER  | 
これは、ログ・エントリIDです。  | 
JOB_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローを実行するSchedulerジョブです。  | 
PROJ_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローが作成されたプロジェクトです。  | 
PRO_ID  | 
NUMBER  | 
これは、ワークフローが作成されたプロジェクトIDです。  | 
WF_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフロー名です。  | 
WF_ID  | 
NUMBER  | 
これは、ワークフローIDです。  | 
NODE_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフロー内のノードの名前です。  | 
NODE_ID  | 
VARCHAR2 (30)  | 
これは、ノードIDです。  | 
SUBNODE_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフロー・サブ・ノード名です。たとえば、構築ノードのモデル名。  | 
SUBNODE_ID  | 
VARCHAR2 (30)  | 
これはワークフロー・サブ・ノードのIDです。たとえば、構築ノードのモデルID。  | 
LOG_TIMESTAMP  | 
TIMESTAMP (6)WITH TIME ZONE  | 
これは、ログ・エントリのタイム・スタンプです。  | 
LOG_DURATION  | 
INTERVAL DAY (3) TO SECOND (0)  | 
これは、ログ・エントリ期間です(単位は日数と秒数)。  | 
LOG TYPE  | 
VARCHAR2 (30 CHAR) | 
  | 
LOG SUBTYPE  | 
VARCHAR2 (30 CHAR) | 
  | 
LOG_MESSAGE  | 
NVARCHAR2 (2000)  | 
これは、ノードによって生成されるログ・メッセージです。  | 
LOG_MESSAGE_DETAILS  | 
VARCHAR2 (4000 CHAR)  | 
これは、ノードによって生成されるログ・メッセージの詳細です。  | 
LOG_TASK  | 
VARCHAR2 (30 CHAR)  | 
ノードが実行中のとき、次のタスクのうち1つ以上を実行します。 
  | 
ノード名、ノード・ステータス、ノードIDなど、ワークフローの一部である個々のノードに関する情報を問い合わせるには、ODMR_USER_WORKFLOW_NODESリポジトリ・ビューを使用します。
8-13に、このビューの詳細を示します。
表8-13 ODMR_USER_WORKFLOW_NODESリポジトリ・ビュー
| 列 | データ型 | 説明 | 
|---|---|---|
PROJECT_ID  | 
NUMBER  | 
これは、ワークフローが作成されたプロジェクトのIDです。  | 
PROJECT_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローが作成されたプロジェクトの名前です。  | 
WORKFLOW_ID  | 
NUMBER  | 
これは、ワークフローのIDです。  | 
WORKFLOW_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローの名前です。  | 
NODE_TYPE  | 
VARCHAR2 (30 CHAR)  | 
これは、ノード・タイプです。  | 
NODE_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ノードの名前です。  | 
NODE_ID  | 
NUMBER  | 
これは、ノードのIDです。  | 
NODE_STATUS  | 
VARCHAR2 (10 CHAR)  | 
  | 
ワークフローの特定の構築またはモデル・ノードに属するマイニング・モデルを問い合わせるには、ODMR_USER_WORKFLOW_MODELSリポジトリ・ビューを使用します。
8-14に、このビューの詳細を示します。
表8-14 ODMR_USER_WORKFLOW_MODELSリポジトリ・ビュー
| 列 | データ型 | 説明 | 
|---|---|---|
PROJECT_ID  | 
NUMBER  | 
これは、ワークフローが作成されたプロジェクトIDです。  | 
PROJECT_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローが作成されたプロジェクトの名前です。  | 
WORKFLOW_ID  | 
NUMBER  | 
これは、ワークフローのIDです。  | 
WORKFLOW_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローの名前です。  | 
NODE_TYPE  | 
VARCHAR2 (30 CHAR)  | 
これは、ノード・タイプです。  | 
NODE_ID  | 
NUMBER  | 
これは、ワークフロー・ノードIDです。  | 
NODE_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフロー・ノードの名前です。  | 
NODE_STATUS  | 
VARCHAR2 (30 CHAR)  | 
  | 
MODEL_TYPE  | 
VARCHAR2 (30 CHAR)  | 
これは、モデル・タイプです。たとえば、Naive Bayesモデル。  | 
MODEL_ID  | 
NUMBER  | 
これは、モデルのIDです。  | 
MODEL_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、モデルの名前です。  | 
MODEL_STATUS  | 
VARCHAR2 (30 CHAR)  | 
ノード・ステータスと同じ。  | 
MODEL_CREATIONDATE  | 
VARCHAR2 (30 CHAR)  | 
これは、モデルが作成された日付です。  | 
最後のワークフロー実行で特定のマイニング・モデルのために生成された分類結果を問い合せるには、ODMR_USER_WF_CLAS_TEST_RESULTSリポジトリ・ビューを使用します。
8-15に、このビューの詳細を示します。
表8-15 ODMR_USER_WF_CLAS_TEST_RESULTS
| 列 | データ型 | 説明 | 
|---|---|---|
PROJECT_ID  | 
NUMBER  | 
これは、ワークフローが作成されたプロジェクトのIDです。  | 
PROJECT_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローが作成されたプロジェクトの名前です。  | 
WORKFLOW_ID  | 
NUMBER  | 
これは、ワークフローのIDです。  | 
WORKFLOW_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローの名前です。  | 
NODE_TYPE  | 
VARCHAR2 (30 CHAR)  | 
これは、ノード・タイプです。  | 
NODE_ID  | 
NUMBER  | 
これは、ノードのIDです。  | 
NODE_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ノードの名前です。  | 
NODE_STATUS  | 
VARCHAR2 (10 CHAR)  | 
  | 
MODEL_ID  | 
NUMBER  | 
これは、モデルのIDです。  | 
MODEL_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、モデルの名前です。  | 
MODEL_STATUS  | 
VARCHAR2 (10 CHAR)  | 
  | 
RESULT_CREATIONDATE  | 
VARCHAR2 (30 CHAR)  | 
これは、結果の作成日付です。  | 
TEST_METRICS  | 
VARCHAR2 (128 CHAR)  | 
予測信頼度、精度などを含むテスト・メトリック結果表。  | 
CONFUSION_MATRIX  | 
VARCHAR2 (128 CHAR)  | 
コンフュージョン・マトリックス結果表。  | 
LIFTS  | 
DM_NESTED_CATEGORICALS  | 
DM_NESTED_CATEGORICALの表。ここで、 
  | 
ROCS  | 
DM_NESTED_CATEGORICALS  | 
DM_NESTED_CATEGORICALの表。ここで、 
  | 
ROC_AREA  | 
DM_NESTED_NUMERICALS  | 
DM_NESTED_NUMERICALの表。ここで、 
  | 
最後のワークフロー実行で特定のマイニング・モデルのために生成された回帰結果を問い合わせるには、ODMR_USER_WF_REGR_TEST_RESULTSリポジトリ・ビューを使用します。
8-16に、このビューの詳細を示します。
表8-16 ODMR_USER_WF_REGR_TEST_RESULTSリポジトリ・ビュー
| 列 | データ型 | 説明 | 
|---|---|---|
PROJECT_ID  | 
NUMBER  | 
これは、ワークフローが作成されるプロジェクトのIDです。  | 
PROJECT_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローが作成されるプロジェクトの名前です。  | 
WORKFLOW_ID  | 
NUMBER  | 
これは、ワークフローIDです。  | 
WORKFLOW_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローの名前です。  | 
NODE_TYPE  | 
VARCHAR2 (30 CHAR)  | 
これは、ノードのタイプです。たとえば、構築ノード、モデル・ノードなど。  | 
NODE_ID  | 
NUMBER  | 
これは、ノードのIDです。  | 
NODE_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ノードの名前です。  | 
NODE_STATUS  | 
VARCHAR2 (10 CHAR)  | 
  | 
MODEL_ID  | 
NUMBER  | 
これは、モデルのIDです。  | 
MODEL_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、モデルの名前です。  | 
MODEL_STATUS  | 
VARCHAR2 (10 CHAR)  | 
  | 
RESULT_CREATIONDATE  | 
VARCHAR2 (30 CHAR)  | 
これは、結果の作成日付です。  | 
TEST_METRICS  | 
VARCHAR2 (128 CHAR)  | 
これは、予測信頼度、2乗平均平方根誤差などを含むテスト・メトリック結果表です。  | 
RESIDUAL_PLOT  | 
VARCHAR2 (128 CHAR)  | 
これは、テスト残差プロット表です。  | 
ODMR_USER_WF_CLAS_TEST_RESULTSとODMR_USER_WF_REGR_TEST_RESULTSの結合結果を問い合わせるには、ODMR_USER_WF_TEST_RESULTSリポジトリ・ビューを使用します。
8-17に、このビューの詳細を示します。
表8-17 ODMR_USER_WF_TEST_RESULTSリポジトリ・ビュー
| 列 | データ型 | 説明 | 
|---|---|---|
PROJECT_ID  | 
NUMBER  | 
ワークフローが作成されるプロジェクトのプロジェクトID。  | 
PROJECT_NAME  | 
VARCHAR2 (128 CHAR)  | 
ワークフローが作成されるプロジェクトの名前。  | 
WORKFLOW_ID  | 
NUMBER  | 
これは、ワークフローIDです。  | 
WORKFLOW_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ワークフローの名前です。  | 
NODE_TYPE  | 
VARCHAR2 (30 CHAR)  | 
これは、ノードのタイプです。たとえば、構築ノード、モデル・ノードなど。  | 
NODE_ID  | 
NUMBER  | 
これは、ノードのIDです。  | 
NODE_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、ノードの名前です。  | 
NODE_STATUS  | 
VARCHAR2 (10 CHAR)  | 
  | 
MODEL_ID  | 
NUMBER  | 
これは、モデルのIDです。  | 
MODEL_NAME  | 
VARCHAR2 (128 CHAR)  | 
これは、モデルの名前です。  | 
MODEL_STATUS  | 
VARCHAR2 (10 CHAR)  | 
  | 
RESULT_CREATIONDATE  | 
VARCHAR2 (30 CHAR)  | 
これは、結果の作成日付です。  | 
TEST_METRICS  | 
VARCHAR2 (128 CHAR)  | 
これは、予測信頼度、2乗平均平方根誤差などを含むテスト・メトリック結果表です。  | 
CONFUSION_MATRIX  | 
VARCHAR2 (128 CHAR)  | 
これは、テスト・コンフュージョン・マトリックス結果表です。  | 
LIFTS  | 
DM_NESTED_CATEGORICALS  | 
DM_NESTED_CATEGORICALの表。ここで、 
  | 
ROCS  | 
DM_NESTED_CATEGORICALS  | 
DM_NESTED_CATEGORICALの表。ここで、 
  | 
ROC_AREA  | 
DM_NESTED_NUMERICALS  | 
DM_NESTED_NUMERICALの表。ここで、 
  | 
RESIDUAL_PLOT  | 
VARCHAR2 (128 CHAR)  | 
これは、テスト残差プロット表です。  | 
ODMR_USER_WORKFLOW_ALL_POLLビューを使用してOracle Data Minerワークフローのステータスをポーリングすることで、Oracle Schedulerビューの使用を最小限に抑えることができます。
ただし、ワークフロー・ジョブのステータスを特定するにはOracle Schedulerビューを使用する必要があります。ODMR_USER_WORKFLOW_ALL_POLLリポジトリ・ビューでは、失敗したワークフローのステータスに関する完全な情報を提供できます。ワークフロー・ステータスをポーリングするためのリポジトリ・ビューODMR_USER_WORKFLOW_ALL_POLLには、次のリポジトリ・プロパティが含まれます。
POLLING_IDLE_RATE: 実行中と検出されるワークフローが存在しない場合に、クライアントがデータベースをポーリングする比率を決定します。
POLLING_ACTIVE_RATE: 実行中と検出されるワークフローが存在する場合に、クライアントがデータベースをポーリングする比率を決定します。
POLLING_IDLE_ENABLED: スケジュールされたワークフロー・ジョブへの自動更新を決定します。
POLLING_COMPLETED_WINDOW: 完了したワークフローをポーリング問合せの結果に含めるために必要な時間を指定します。
PURGE_WORKFLOW_SCHEDULER_JOBS: Data Minerワークフローの実行によって生成された古いOracle Schedulerオブジェクトをパージします。
PURGE_WORKFLOW_EVENT_LOG: 各ワークフローのワークフロー実行をイベント・ログにいくつ保持するかを制御します。この制限内に収まるように、古いワークフローのイベントはパージされます。
PL/SQL APIユースケースでは、PL/SQL APIを実行して構築ワークフローとAPPLYワークフローをスケジュールおよび実行する方法を示します。
PL/SQL APIユースケースは2つの事前定義済ワークフロー上に作成され、SQL Developerのインストール場所から利用できます。
事前定義済ワークフロー
apply_workflow.xml: build_workflowによって構築されたモデルを参照するモデル・ノードを使用します。続いて、それを使用してスコアリングします。
build_workflow.xml: サーバー・ベクター・マシン分類モデルを構築し、続いてモデルの詳細または係数を表に格納します。
デモ・ファイルの場所
事前定義済ワークフローを含むワークフロー・ファイルapply_workflow.xmlとbuild_workflow.xmlは、SQL Developerインストールした場所、sqldeveloper home\dataminer\demos\workflowsから利用できます。
このユースケースでは、WF_RUN_APIを実行するようにスケジュールされたAPPLYワークフローの系統を実行する方法を示します。
系統を実行するには、INSUR_CUST_LTV_SAMPLE APPLYノードを指定して、RERUN_NODE_CHILDREN実行モードを使用します。例に示したように、ユースケースは次のことを行います。
ESTゾーンの2014/12/31の零時から2015/12/31まで、毎日実行するようにAPPLYワークフローをスケジュールします。
WF_RUN APIを実行します
ODMR_USER_PROJECT_WORKFLOWビューからワークフローのステータスをポーリングします
失敗したノードを出力します
例8-1 APPLYワークフロー、ポーリング状態および印刷ノードの障害のスケジュールと実行
CONNECT DMUSER/DMUSER
SET SERVEROUTPUT ON 
DECLARE
    v_jobId VARCHAR2(30) := NULL;
    v_status VARCHAR2(30) := NULL;
    v_projectName VARCHAR2(30) := 'Project';
    v_workflow_name VARCHAR2(30) := 'apply_workflow';
    v_node VARCHAR2(30) := 'INSUR_CUST_LTV_SAMPLE APPLY';
    v_run_mode VARCHAR2(30) := ODMRSYS.ODMR_WORKFLOW.RERUN_NODE_CHILDREN;
    v_failure NUMBER := 0;
    v_nodes ODMRSYS.ODMR_OBJECT_NAMES := ODMRSYS.ODMR_OBJECT_NAMES();
BEGIN
    v_nodes.extend();
    v_nodes(v_nodes.count) := v_node;
    v_jobId := ODMRSYS.ODMR_WORKFLOW.WF_RUN(p_project_name => v_projectName,
                       p_workflow_name => v_workflow_name,
                       p_node_names => v_nodes,
                       p_run_mode => v_run_mode,
                       p_start_date => '31-DEC-14 12.00.00 AM AMERICA/NEW_YORK',
                       p_repeat_interval => NULL,
                       p_end_date => NULL));
    DBMS_OUTPUT.PUT_LINE('Job: '||v_jobId);
    -- wait for workflow to run to completion
    LOOP
      SELECT STATUS INTO v_status FROM ODMR_USER_PROJECT_WORKFLOW
      WHERE WORKFLOW_NAME = v_workflow_name;
      IF (v_status IN ('SCHEDULED', 'RUNNING')) THEN
         DBMS_LOCK.SLEEP(10); -- wait for 10 secs
      ELSE
        EXIT; -- workflow run completes
      END IF;
    END LOOP;
    -- print all failed nodes (see example above)
  EXCEPTION WHEN OTHERS THEN
     DBMS_OUTPUT.PUT_LINE('Error: '||SUBSTR(DBMS_UTILITY.FORMAT_ERROR_STACK(), 1, 4000));
END;
関連項目
ワークフロー実行が正常に完了したら、スコアリング結果を問い合せることができます。
このユースケースでは、ワークフローの系統でWF_RUN_APIを実行し、ステータスをポーリングして、イベント・ログからノード障害を出力する方法を示します。
実行モードRERUN_NODE_ONLYまたはRERUN_NODE_PARENTSを使用して、ワークフローの系統でWF_RUN_APIを実行できます。
2つの実行モードを使用してWF_RUN_APIを実行する方法では同じ結果が生成され、系統内の4つのノードすべてが実行されます。方法は次のとおりです。
系統内のすべてのノードを選択して、RERUN_NODE_ONLY実行モードを使用します。
MODEL_COEFFICIENTSノードを選択して、RERUN_NODE_PARENTS実行モードを使用します。
例8-2に示したように、ユースケースは次のことを行います。
ESTゾーンの2014/12/31の零時から2015/12/31まで、毎月、月の最終日(BYMONTHDAY=-1)に実行するワークフローをスケジュールします。
WF_RUN APIを実行します。このユースケースでは、API WF_RUN with Project Name、Workflow Name Node Name and Time Intervalが、ワークフローの実行をスケジュールします。
ODMR_USER_PROJECT_WORKFLOWビューからワークフローのステータスをポーリングして、ワークフロー実行が完了したかどうかを判定します。 
イベント・ログから、すべてのノード障害を、エラー・メッセージとともに出力します。
例8-2 ワークフロー、ポーリング状態および印刷ノードの障害のスケジュールと実行
CONNECT DMUSER/DMUSER
SET SERVEROUTPUT ON 
DECLARE
   v_jobId VARCHAR2(30) := NULL;
   v_status VARCHAR2(30) := NULL;
   v_projectName VARCHAR2(128) := 'Project';
   v_workflow_name VARCHAR2(128) := 'build_workflow';
   v_node VARCHAR2(30) := 'MODEL_COEFFCIENTS';
   v_run_mode VARCHAR2(30) := ODMRSYS.ODMR_WORKFLOW.RERUN_NODE_PARENTS;
   v_failure NUMBER := 0;
   v_nodes ODMRSYS.ODMR_OBJECT_NAMES := ODMRSYS.ODMR_OBJECT_NAMES();
BEGIN
   v_nodes.extend();
   v_nodes(v_nodes.count) := v_node;
   v_jobId := ODMRSYS.ODMR_WORKFLOW.WF_RUN(p_project_name => v_projectName,
           p_workflow_name => v_workflow_name,
           p_node_names => v_nodes,
           p_run_mode => v_run_mode,
           p_start_date => '31-DEC-14 12.00.00 AM AMERICA/NEW_YORK',
           p_repeat_interval => NULL,
           p_end_date => NULL);
   DBMS_OUTPUT.PUT_LINE('Job: '||v_jobId);
   -- wait for workflow to run to completion
LOOP
   SELECT STATUS INTO v_status FROM ODMR_USER_PROJECT_WORKFLOW
   WHERE WORKFLOW_NAME = v_workflow_name;
   IF (v_status IN ('SCHEDULED', 'RUNNING')) THEN
      DBMS_LOCK.SLEEP(10); -- wait for 10 secs
   ELSE
      EXIT; -- workflow run completes
   END IF;
END LOOP;
-- print all failed nodes from the event log
FOR wf_log IN (
   SELECT node_id, node_name, subnode_id, subnode_name, log_message, log_message_ details
   FROM ODMR_USER_WORKFLOW_LOG
   WHERE job_name=v_jobId and log_type='ERR' and log_message IS NOT NULL)
LOOP
   DBMS_OUTPUT.PUT_LINE('Node Id: '||wf_log.node_id||', '||'Node Name: '||wf_log.node_name);
   IF (wf_log.subnode_id IS NOT NULL) THEN
      DBMS_OUTPUT.PUT_LINE( 
         'Subnode Id: '||wf_log.subnode_id||', '||'Subnode Name: '||wf_log.subnode_name);
   END IF;
   DBMS_OUTPUT.PUT_LINE('Message: '||wf_log.log_message);
   v_failure := v_failure + 1;
 END LOOP;
IF (v_failure = 0) THEN
   DBMS_OUTPUT.PUT_LINE('Workflow Status: SUCCEEDED');
 ELSE
   DBMS_OUTPUT.PUT_LINE('Workflow Status: FAILURE');
 END IF;
EXCEPTION WHEN OTHERS THEN
   DBMS_OUTPUT.PUT_LINE('Error: '||SUBSTR(DBMS_UTILITY.FORMAT_ERROR_STACK(), 1, 4000));
END;
ODMR_USER_WF_CLAS_TEST_RESULTSおよびODMR_USER_WF_REGR_TEST_RESULTSリポジトリ・ビューからコンフュージョン・マトリックスとテスト・メトリックのテスト結果を問い合せることができます。 問合せを実行して、MODEL_COEFFICIENT表からデータを取得できます。
MODEL_COEFFICIENTS表からのデータを問い合わせるには、次の問合せを実行します。
SELECT * FROM MODEL_COEFFCIENTS
図8-2に示すように、この問合せの出力は表形式で表示されます。
ワークフロー実行が正常に完了した後、表作成ノード内の表またはビュー、構築ノード内のモデルなど、ワークフローによって生成されたすべての名前付きオブジェクトを問い合わせることができます。
次の問合せは、モデルCLAS_SVM_MODEL_2の情報を戻します。
SELECT * FROM USER_MINING_MODELS WHERE MODEL_NAME = 'CLAS_SVM_MODEL_2
問合せ結果を図8-3に示します。
ODMR_USER_WF_CLAS_TEST_RESULTSおよびODMR_USER_WF_REGR_TEST_RESULTSリポジトリ・ビューからコンフュージョン・マトリックスとテスト・メトリックのテスト結果を問い合せることができます。 
次からテスト結果を問い合わせることができます。
ODMR_USER_WF_CLAS_TEST_RESULTSリポジトリ・ビュー
ODMR_USER_WF_REGR_TEST_RESULTSリポジトリ・ビュー
この項には、次を問い合わせる例が記載されています。
例8-3 テスト・メトリックとコンフュージョン・マトリックスの結果の問合せ
SELECT TEST_METRICS, CONFUSION_MATRIX FROM ODMR_USER_WF_CLAS_TEST_RESULTS WHERE WORKFLOW_NAME = 'build_workflow' AND NODE_NAME = 'Class Build'
この問合せの出力を次の図に示します。この問合せは、ODMR_USER_WF_CLAS_TEST_RESULTSからテスト・メトリックとコンフュージョン・マトリックスを取得します。
例8-4 TEST_METRICSの問合せ
SELECT * FROM ODMR$18_51_18_106346IFHRNMF
この問合せの出力を次のスクリーンショットに示します。テスト・メトリックODMR$18_51_18_106346IFHRNMFを問い合わせます。メトリック名、メトリックVARCHAR値およびメトリックNUM値をフェッチします。
例8-5 CONFUSION_MATRIXの問合せ
SELECT * FROM ODMR$18_51_17_954530VMUXPWL
この問合せの出力を次のスクリーンショットに示します。コンフュージョン・マトリックスODMR$18_51_17_954530VMUXPWLを問い合わせます。実際のターゲット名と予測されたターゲット値をフェッチします。
例8-6 CLAS_SVM_MODEL_2からのリフト表の問合せ
SELECT MODEL_NAME, a.ATTRIBUTE_NAME "target value", a.VALUE "lift result table" FROM ODMR_USER_WF_CLAS_TEST_RESULTS, TABLE(LIFTS) a WHERE WORKFLOW_NAME = 'build_workflow' AND NODE_NAME = 'Class Build' AND ATTRIBUTE_NAME='Yes'
この問合せの出力を次のスクリーンショットに示します。CLAS_SVM_MODEL_2からリフト結果表を問い合わせています。
関連項目