この章では、PL/SQL APIを使用してワークフローを管理する方法を説明します。この章の内容は、次のとおりです。
Oracle Data Miner 4.1には、アプリケーションが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プロジェクトとワークフローの管理
ワークフローのスケジュール
ワークフローの実行
プロジェクトおよびワークフロー情報の問合せ
ワークフロー実行ステータスのモニター
生成された結果の問合せ
PROJECT_CREATE: プロジェクトの作成
PROJECT_RENAME: プロジェクトの名前の変更
PROJECT_DELETE: 1つ以上のプロジェクトの削除
WF_RUN: ワークフローの実行
WF_STOP: 実行中のワークフローの停止
WF_RENAME: ワークフローの名前の変更
WF_DELETE: 1つ以上のワークフローの削除
WF_IMPORT: ワークフローのインポート
WF_EXPORT: ワークフローのエクスポート
ファンクションPROJECT_CREATE
は、入力したプロジェクト名を使用してプロジェクトを作成します。このファンクションは、プロジェクトIDを戻します。
プロジェクトがすでに存在すると、例外が発生します。
関数:
FUNCTION PROJECT_CREATE(p_project_name IN VARCHAR2,
p_comment IN VARCHAR2 DEFAULT NULL) RETURN NUMBER
表8-1に、PROJECT_CREATE
ファンクションで使用されるパラメータをリストします。
PROJECT_RENAME
プロシージャは、既存のプロジェクトの名前を変更します。新しい名前を持つプロジェクトがすでに存在する場合は、例外が発生します。
プロシージャ:
PROCEDURE PROJECT_RENAME(p_project_id IN NUMBER, p_project_name IN VARCHAR2)
表8-2に、PROJECT_RENAME
プロシージャで使用されるパラメータをリストします。
プロシージャ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
プロシージャで使用されるパラメータをリストします。
ワークフローを実行するファンクションWF_RUN
には、名前、プロジェクトID、ワークフローおよび実行する特定のノードを受け入れるシグネチャが含まれます。プロジェクトID、ワークフローIDおよびノードIDは、ODMR_USER_WORKFLOW_NODES
ビューを使用して問い合わせることができます。
異なるパラメータの組合せを使用してWF_RUN
ファンクションを実行できます。
RERUN_WORKFLOW
RUNモードは、ノードの接続方法に関係なく、ワークフロー内のすべてのノードを実行します。ワークフローに2系統以上の別々のノードが含まれる場合、すべての系統が実行されますが、系統実行の順序は決まっていません。つまり、ユーザーは系統の実行順序を設定できません。
表8-4に、WF_RUN
ファンクションで使用されるパラメータをリストします。
表8-4 WF_RUNファンクションのパラメータのリスト
パラメータ | 説明 |
---|---|
P_PROJECT_NAME |
ワークフローが作成されたプロジェクト名を指定します。 |
P_PROJECT_ID |
ワークフローが作成されたプロジェクトIDを指定します。 |
P_WORKFLOW_NAME |
実行するワークフロー名を指定します。 |
P_WORKFLOW_ID |
実行するワークフローIDを指定します。 |
P_NODE_NAMES |
実行するワークフローのノード名を指定します。 |
P_NODE_IDS |
実行するワークフローのノードIDを指定します。 |
P_RUN_MODE |
|
P_MAX_NUM_THREADS |
すべてのワークフロー全体のパラレル・モデル・ビルドの最大数を指定します。決定済システムにはNULLを指定します。システムに豊富なリソースがある場合のみこのパラメータを使用し、それ以外の場合は、この値をNULLに設定してデフォルト値を使用します。 |
P_SCHEDULE |
Schedulerで定義された既存のスケジュール・オブジェクトを指定します。P_SCHEDULEに値が指定されていない場合、ワークフローは可能な限り早く実行するようにスケジュールされます。 |
P_START_DATE |
このワークフローが初めて開始するようにスケジュールされている日付と時刻を指定します。P_START_DATEとP_REPEAT_INTERVALがNULLに設定されている場合、ワークフローは可能な限り早く実行するようにスケジュールされます。 |
P_REPEAT_INTERVAL |
ワークフローが繰返し間隔を指定します。反復間隔は、カレンダ式またはPL/SQL式を使用して指定できます。指定した式を評価して、ワークフローの次回実行時を決定します。P_REPEAT_INTERVALを指定しない場合、ワークフローは、指定した開始日に1回のみ実行されます。 |
P_END_DATE |
ワークフローが期限切れになり、実行できなくなる日付と時刻を指定します。P_END_DATEの値が指定されない場合、ジョブは無期限に繰り返されます。 |
P_JOB_CLASS |
ワークフローを実行する既存のジョブ・クラスを指定します。P_JOB_CLASSの値が指定されていない場合、デフォルトのジョブ・クラスが使用されます。 |
プロジェクト名、ワークフロー名およびノード名のパラメータを伴う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
プロジェクト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_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
プロシージャWF_STOP
を使用すると、実行するようにスケジュールされているワークフローを停止またはキャンセルできます。ワークフローがすでに実行中でないか、スケジュールされていない場合、例外が発生します。プロシージャは次のとおりです。
PROCEDURE WF_STOP(p_workflowId IN NUMBER)
表8-5に、WF_STOP
プロシージャで使用されるパラメータをリストします。
プロシージャ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
プロシージャで使用されるパラメータをリストします。
プロシージャWF_DELETE
は、ワークフローを、表、ビュー、モデル、テスト結果などの、生成されたすべてのオブジェクトごと削除します。ワークフローがすでに実行中か、Oracle Data Minerによって開かれている場合は、例外が発生します。
プロシージャ:
PROCEDURE WF_DELETE(p_workflowId IN NUMBER)
表8-7に、WF_DELETE
プロシージャで使用されるパラメータをリストします。
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プロシージャのファンクションのリスト
パラメータ | 説明 |
---|---|
p_project_id |
ワークフローをインポートするプロジェクトのIDを指定します。 |
p_workflow_name |
インポートするワークフローを指定します。 |
p_workflow_data |
ワークフロー・メタデータを指定します。このワークフローは、Oracle Data Minerによって事前にエクスポートされている必要があり、ワークフロー・バージョンはリポジトリがサポートするものより新しくない必要があります。 |
p_comment |
ワークフローに適用されるコメントを指定します。 |
p_force |
ワークフローに、リポジトリ内の既存のワークフローとのオブジェクト名競合がある場合に、強制的にインポートするかどうかを決定します。適用できる値は次のとおりです。
|
WF_EXPORT
ファンクションは、指定したワークフローをエクスポートします。ワークフローがすでに実行中か、Oracle Data Minerによって開かれている場合は、例外が発生します。別の方法として、ワークフローがエクスポートするODMR_USER_PROJECT_WORKFLOWを問い合わせることができます。
関数:
FUNCTION WF_EXPORT(p_workflow_id IN NUMBER) RETURN XMLType;
表8-9に、WF_EXPORT
ファンクションで使用されるパラメータをリストします。
ワークフローとプロジェクトの情報を問い合せます
ワークフロー実行ステータスのモニター
生成された結果の問合せ
次のリポジトリAPIまたはビューが利用できます。
特定のプロジェクトまたはすべてのプロジェクトに属するすべてのワークフローを問い合わせるには、ODMR_USER_PROJECT_WORKFLOW
リポジトリ・ビューを使用します。このビューは、ワークフローに関する情報、たとえばステータス、作成時刻、更新時刻などを提供します。表8-10に、このビューの詳細を示します。
表8-10 ODMR_USER_PROJECT_WORKFLOWリポジトリ・ビュー
列 | データ型 | 説明 |
---|---|---|
PROJECT_ID |
NUMBER |
これは、ワークフローが作成されたプロジェクトのIDです。 |
PROJECT_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフローが作成されたプロジェクトの名前です。 |
PJ_CREATION_TIME |
TIMESTAMP (6) |
これは、プロジェクト作成時刻です。 |
PJ_LAST_UPDATED_TIME |
TIMESTAMP(6) |
プロジェクトの最終更新日タイム・スタンプ。 |
PJ_COMMENTS |
VARCHAR2(4000 CHAR) |
これらは、プロジェクトに関連したコメントです(存在する場合)。 |
WORKFLOW_ID |
NUMBER |
これは、ワークフローIDです。 |
WORKFLOW_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフローの名前です。 |
WORKFLOW_DATA |
XMLTYPE |
これは、XML形式のワークフロー・メタデータです。 |
CHAIN_NAME |
VARCHAR(30 CHAR) |
これは内部使用専用です。 |
STATUS |
VARCHAR(30 CHAR) |
INACTIVE: ワークフローがアイドル状態にあることを示します。 |
ACTIVE: ワークフローが実行中であることを示します。 |
||
QUEUED: ワークフローが実行キュー内にあることを示します。 |
||
STOPPING: ワークフローが停止されていることを示します。 |
||
STOPPED: 実行中ワークフローが停止していることを示します。 |
||
SCHEDULED: ワークフローが実行されるようにスケジュールされていることを示します。 |
||
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) |
RUNNING: ノードが実行中であることを示します。 |
SUCCEEDED: ノード実行が正常に完了したことを示します。 |
||
FAILED: ノードが失敗し、未完了であることを示します。 |
||
NOT_STARTED: ノードが実行の待機中であることを示します。 |
||
SCHEDULED: ノードが実行されるようにスケジュールされていることを示します。 |
||
PAUSED: ノードが一時停止されていることを示します。これは、例外です。 |
||
STOPPED: ノード実行が停止していることを示します。 |
||
STALLED: ノードが停止したことを示します。これは、例外です。 |
||
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(30 CHAR) |
これは、ワークフローを実行するSchedulerジョブです。 |
PROJ_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフローが作成されたプロジェクトです。 |
PRO_ID |
NUMBER |
これは、ワークフローが作成されたプロジェクトIDです。 |
WF_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフロー名です。 |
WF_ID |
NUMBER |
これは、ワークフローIDです。 |
NODE_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフロー内のノードの名前です。 |
NODE_ID |
VARCHAR2(30) |
これは、ノードIDです。 |
SUBNODE_NAME |
VARCHAR2(30 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) |
WARN: 警告を示します。 |
ERR: エラーを示します。 |
||
INFO: 情報内容を示します。 |
||
LOG_SUBTYPE |
VARCHAR2(30 CHAR) |
START: タスクの開始を示します。 |
END: タスクの終了を示します。 |
||
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(30 CHAR) |
これは、ワークフローが作成されたプロジェクトの名前です。 |
WORKFLOW_ID |
NUMBER |
これは、ワークフローのIDです。 |
WORKFLOW_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフローの名前です。 |
NODE_TYPE |
VARCHAR2(30 CHAR) |
これは、ノード・タイプです。 |
NODE_NAME |
VARCHAR2(30 CHAR) |
これは、ノードの名前です。 |
NODE_ID |
NUMBER |
これは、ノードのIDです。 |
NODE_STATUS |
VARCHAR2(10 CHAR) |
INVALID: ノードが有効でなく、実行できないことを示します。 |
WARNING: ノードは実行されたが警告があったことを示します。 |
||
READY: ノードがいつでも実行できることを示します。 |
||
FAILURE: ノード実行が失敗したことを示します。 |
||
COMPLETE: ノード実行が正常に完了したことを示します。 |
ワークフローの特定の構築またはモデル・ノードに属するマイニング・モデルを問い合わせるには、ODMR_USER_WORKFLOW_MODELS
リポジトリ・ビューを使用します。8-14に、このビューの詳細を示します。
表8-14 ODMR_USER_WORKFLOW_MODELSリポジトリ・ビュー
列 | データ型 | 説明 |
---|---|---|
PROJECT_ID |
NUMBER |
これは、ワークフローが作成されたプロジェクトIDです。 |
PROJECT_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフローが作成されたプロジェクトの名前です。 |
WORKFLOW_ID |
NUMBER |
これは、ワークフローのIDです。 |
WORKFLOW_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフローの名前です。 |
NODE_TYPE |
VARCHAR2(30 CHAR) |
これは、ノード・タイプです。 |
NODE_ID |
NUMBER |
これは、ワークフロー・ノードIDです。 |
NODE_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフロー・ノードの名前です。 |
NODE_STATUS |
VARCHAR2(30 CHAR) |
INVALID: ノードが有効でなく、実行できないことを示します。 |
WARNING: ノードは実行されたが警告があったことを示します。 |
||
READY: ノードがいつでも実行できることを示します。 |
||
FAILURE: ノード実行が失敗したことを示します。 |
||
COMPLETE: ノード実行が正常に完了したことを示します。 |
||
MODEL_TYPE |
VARCHAR2(30 CHAR) |
これは、モデル・タイプです。たとえば、Naive Bayesモデル。 |
MODEL_ID |
NUMBER |
これは、モデルのIDです。 |
MODEL_NAME |
VARCHAR2(30 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(30 CHAR) |
これは、ワークフローが作成されたプロジェクトの名前です。 |
WORKFLOW_ID |
NUMBER |
これは、ワークフローのIDです。 |
WORKFLOW_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフローの名前です。 |
NODE_TYPE |
VARCHAR2(30 CHAR) |
これは、ノード・タイプです。 |
NODE_ID |
NUMBER |
これは、ノードのIDです。 |
NODE_NAME |
VARCHAR2(30 CHAR) |
これは、ノードの名前です。 |
NODE_STATUS |
VARCHAR2(10 CHAR) |
INVALID: ノードの実行準備ができていないことを示します。 |
WARNING: ノードは完全に実行されたが警告があったことを示します。 |
||
READY: ノードがいつでも実行できることを示します。 |
||
FAILURE: ノード実行が失敗したことを示します。 |
||
COMPLETE: ノードが正常に実行されたことを示します。 |
||
MODEL_ID |
NUMBER |
これは、モデルのIDです。 |
MODEL_NAME |
VARCHAR2(30 CHAR) |
これは、モデルの名前です。 |
MODEL_STATUS |
VARCHAR2(10 CHAR) |
WARNING: モデルは実行されたが警告があったことを示します。 |
READY: モデルがいつでも実行できることを示します。 |
||
FAILURE: モデル実行が失敗したことを示します。 |
||
COMPLETE: モデル実行が正常に完了したことを示します。 |
||
MODEL_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(30 CHAR) |
これは、ワークフローが作成されるプロジェクトの名前です。 |
WORKFLOW_ID |
NUMBER |
これは、ワークフローIDです。 |
WORKFLOW_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフローの名前です。 |
NODE_TYPE |
VARCHAR2(30 CHAR) |
これは、ノードのタイプです。たとえば、構築ノード、モデル・ノードなど。 |
NODE_ID |
NUMBER |
これは、ノードのIDです。 |
NODE_NAME |
VARCHAR2(30 CHAR) |
これは、ノードの名前です。 |
NODE_STATUS |
VARCHAR2(10 CHAR) |
INVALID: ノードの実行準備ができていないことを示します。 |
WARNING: ノードは完全に実行されたが警告があったことを示します。 |
||
READY: ノードがいつでも実行できることを示します。 |
||
FAILURE: ノード実行が失敗したことを示します。 |
||
COMPLETE: ノードが正常に実行されたことを示します。 |
||
MODEL_ID |
NUMBER |
これは、モデルのIDです。 |
MODEL_NAME |
VARCHAR2(30 CHAR) |
これは、モデルの名前です。 |
MODEL_STATUS |
VARCHAR2(10 CHAR) |
WARNING: モデルは実行されたが警告があったことを示します。 |
READY: モデルがいつでも実行できることを示します。 |
||
FAILURE: モデル実行が失敗したことを示します。 |
||
COMPLETE: モデル実行が正常に完了したことを示します。 |
||
MODEL_CREATION_DATE |
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(30 CHAR) |
ワークフローが作成されるプロジェクトの名前。 |
WORKFLOW_ID |
NUMBER |
これは、ワークフローIDです。 |
WORKFLOW_NAME |
VARCHAR2(30 CHAR) |
これは、ワークフローの名前です。 |
NODE_TYPE |
VARCHAR2(30 CHAR) |
これは、ノードのタイプです。たとえば、構築ノード、モデル・ノードなど。 |
NODE_ID |
NUMBER |
これは、ノードのIDです。 |
NODE_NAME |
VARCHAR2(30 CHAR) |
これは、ノードの名前です。 |
NODE_STATUS |
VARCHAR2(10 CHAR) |
INVALID: ノードの実行準備ができていないことを示します。 |
WARNING: ノードは完全に実行されたが警告があったことを示します。 |
||
READY: ノードがいつでも実行できることを示します。 |
||
FAILURE: ノード実行が失敗したことを示します。 |
||
COMPLETE: ノードが正常に実行されたことを示します。 |
||
MODEL_ID |
NUMBER |
これは、モデルのIDです。 |
MODEL_NAME |
VARCHAR2(30 CHAR) |
これは、モデルの名前です。 |
MODEL_STATUS |
VARCHAR2(10 CHAR) |
WARNING: モデルは実行されたが警告があったことを示します。 |
READY: モデルがいつでも実行できることを示します。 |
||
FAILURE: モデル実行が失敗したことを示します。 |
||
COMPLETE: モデル実行が正常に完了したことを示します。 |
||
MODEL_CREATION_DATE |
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) |
これは、テスト残差プロット表です。 |
この説では、次の使用例について説明します。
構築ワークフローをスケジュールおよび実行するユースケース: 構築ワークフローを各月の最終日に実行されるようにスケジュールする方法を示します。
APPLYワークフローをスケジュールおよび実行するユースケース: APPLYワークフローを毎日実行するようスケジュールする方法を示します。
ユースケースは2つの事前定義済ワークフロー上に作成され、SQL Developerのインストール場所から利用できます。2つの事前定義済ワークフロー・ファイルは、次のとおりです。
apply_workflow.xml
: build_workflowによって構築されたモデルを参照するモデル・ノードを使用します。続いて、それを使用してスコアリングします。
build_workflow.xml
: サーバー・ベクター・マシン分類モデルを構築し、続いてモデルの詳細または係数を表に格納します。
事前定義済ワークフローを含むワークフロー・ファイルapply_workflow.xml
とbuild_workflow.xml
は、SQL Developerインストールした場所、<sqldeveloper>\dataminer\demos\workflows
から利用できます。
このユースケースは、ワークフローの系統を実行する方法を示します。次のいずれかの方法を使用して、ワークフローを実行できます。どちらのメソッドでも結果は同じで、系統内の4つのノードすべてが実行されます。方法は次のとおりです。
系統内のすべてのノードを選択して、RERUN_NODE_ONLY
実行モードを使用します。
MODEL_COEFFICIENTS
ノードを選択して、RERUN_NODE_PARENTS
実行モードを使用します。
例8-1に示したように、ユースケースは次のことを行います。
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-1 ワークフロー、ポーリング状態および印刷ノードの障害のスケジュールと実行
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) := '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 => 'FREQ=MONTHLY;BYMONTHDAY=-1', p_end_date => '31-DEC-15 12.00.00 AM AMERICA/NEW_YORK'); 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', 'ACTIVE')) 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;
ワークフロー実行が正常に完了した後、表作成ノード内の表またはビュー、構築ノード内のモデルなど、ワークフローによって生成されたすべての名前付きオブジェクトを問い合わせることができます。
次の問合せは、モデルCLAS_SVM_MODEL_2の情報を戻します。
SELECT * FROM USER_MINING_MODELS WHERE MODEL_NAME = 'CLAS_SVM_MODEL_2
問合せ結果を図8-1に示します。
MODEL_COEFFICIENTS表からのデータを問い合わせるには、次の問合せを実行します。
SELECT * FROM MODEL_COEFFCIENTS
図8-2に示すように、この問合せの出力は表形式で表示されます。
次からテスト結果を問い合わせることができます。
ODMR_USER_WF_CLAS_TEST_RESULTSリポジトリ・ビュー
ODMR_USER_WF_REGR_TEST_RESULTSリポジトリ・ビュー
この項には、次を問い合わせる例が記載されています。
テスト・メトリックとコンフュージョン・マトリックスの結果の問合せ: 例8-2
テスト・メトリックの問合せ: 例8-3
コンフュージョン・マトリックスの問合せ: 例8-4
リフト表結果の問合せ: 例8-5
例8-2 テスト・メトリックとコンフュージョン・マトリックスの結果の問合せ
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からテスト・メトリックとコンフュージョン・マトリックスをフェッチします。
この問合せの出力を次のスクリーンショットに示します。テスト・メトリックODMR$18_51_18_106346IFHRNMFを問い合わせます。メトリック名、メトリックVARCHAR値およびメトリックNUM値をフェッチします。
この問合せの出力を次のスクリーンショットに示します。コンフュージョン・マトリックスODMR$18_51_17_954530VMUXPWLを問い合わせます。実際のターゲット名と予測されたターゲット値をフェッチします。
例8-5 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からリフト結果表を問い合わせています。
このユースケースは、APPLYワークフローの系統を実行する方法を示します。系統を実行するには、INSUR_CUST_LTV_SAMPLE APPLYノードを指定して、RERUN_NODE_CHILDREN実行モードを使用します。
例8-6に示したように、ユースケースは次のことを行います。
ESTゾーンの2014/12/31の零時から2015/12/31まで、毎日実行するようにAPPLYワークフローをスケジュールします。
WF_RUN APIを実行します
ODMR_USER_PROJECT_WORKFLOWビューからワークフローのステータスをポーリングします
失敗したノードを出力します
例8-6 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 => 'FREQ= DAILY', p_end_date => '31-DEC-15 12.00.00 AM AMERICA/NEW_YORK')); 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', 'ACTIVE')) 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;
ワークフロー実行が正常に完了したら、スコアリング結果を直接問い合わせることができます。
スコアリング結果を問い合わせる手順:
SELECT * FROM SCORED_CUSTOMERS_TBL
図8-3に示すように、問合せの出力は表形式で表示されます。