1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SPSS CADSのジョブ履歴をModelerで分析する

Posted at

CADSのジョブ履歴はDeployment Managerで確認することができますが、ジョブ実行についての詳しい分析を行う場合はCADSレポジトリ内のジョブ履歴 SPSSPLAT_V_JOBHISTORYのVIEWを直接見る必要があります。

このSPSSPLAT_V_JOBHISTORYにSPSS Modelerで接続をしてジョブの分析を行う例を紹介します。

  • テスト環境
    • CADS 8.4 (レポジトリDb2)
    • Modeler 18.6
    • Windows 11
  • サンプルストリーム

ODBC DSNの設定

まず、ODBCのDSNの設定を行います。

ODBCデータソースを開きます。
image.png

システムDSNやユーザーDSNで「追加」をします。
image.png

Db2のODBCドライバーを選びます。
image.png

データソース名に任意の名前を付けます(ここではCADSDB)。「追加」をクリックします。
image.png

「TCP/IP」タブで以下を入力し、OKで閉じます。
データベース名:SPSSCDS
ホスト名: CADSのレポジトリDBのホスト名
ポート番号: CADSのレポジトリDBのポート番号。デフォルトは25000
image.png

出来上がったCADSDBをダブルクリックして開きます。
image.png

ユーザーとパスワードを入力して「接続」をクリックします。
image.png

テストがうまくいきました。すべてOKでODBCデーソースの設定を閉じておきます。
image.png

データソースへの接続

データベース接続ノードを選び、データソースから「新規データベース接続の追加」を選びます。

image.png

CADSのデータソースを選び、ユーザーとパスワードを入力して「接続」をクリックします。そして接続を選んでOKで閉じます。
image.png

SPSSPLAT_V_JOBHISTORYからのSELECT

SPSSPLAT_V_JOBHISTORYにはCLOB列があり、テーブルモードだとエラーになります。また、EXECUTIONIDなどはBINARYのため表示も化けてしまいます。
そのため「SQLクエリー」のモードでCLOB列はVARCHAR(255)にCASTし、バイナリデータはHEXで変換したSQLを書きます。

image.png

SELECT HEX(T0.EXECUTIONID) AS EXECUTIONID,
HEX(T0.JOBID) AS JOBID,
T0.JOBVERSION AS JOBVERSION,
T0.JOBNAME AS JOBNAME,
T0.JOBPATH AS JOBPATH,
T0.JOBMARKER AS JOBMARKER,
T0.JOBLABEL AS JOBLABEL,
HEX(T0.JOBSTEPID) AS JOBSTEPID,
T0.JOBSTEPNAME AS JOBSTEPNAME,
T0.JOBSTEPEXECUTIONSTATUS AS JOBSTEPEXECUTIONSTATUS,
T0.JOBSTEPEXECUTIONSTARTED AS JOBSTEPEXECUTIONSTARTED,
T0.JOBSTEPEXECUTIONENDED AS JOBSTEPEXECUTIONENDED,
T0.JOBSTEPEXECUTIONRUNTIME AS JOBSTEPEXECUTIONRUNTIME,
T0.JOBEXECUTIONSTATUS AS JOBEXECUTIONSTATUS,
T0.JOBEXECUTIONSTARTED AS JOBEXECUTIONSTARTED,
T0.JOBEXECUTIONENDED AS JOBEXECUTIONENDED,
T0.JOBEXECUTIONRUNTIME AS JOBEXECUTIONRUNTIME,
CAST(T0.JOBSTEPERRORLOG as VARCHAR(255)) AS JOBSTEPERRORLOG,
T0.JOBCLUSTERQUEUEDDATETIME AS JOBCLUSTERQUEUEDDATETIME,
T0.JOBCLUSTERCOMPLETIONCODE AS JOBCLUSTERCOMPLETIONCODE,
T0.JOBCLUSTERAPPLICATIONSTATUS AS JOBCLUSTERAPPLICATIONSTATUS,
T0.JOBPROCESSID AS JOBPROCESSID,
CAST(T0.JOBEXECUTEDPARAMETERS as VARCHAR(255)) AS JOBEXECUTEDPARAMETERS,
T0.JOBNOTIFICATIONENABLED AS JOBNOTIFICATIONENABLED 
FROM DB2ADMIN."SPSSPLAT_V_JOBHISTORY" T0

これでSELECTができるようになります。
image.png

各列の意味とサンプルデータは以下です。

列名 説明 サンプル
EXECUTIONID ジョブステップの実行ID。ジョブ実行のIDではない A82F5CD4E1CAE43200000195F9F5584067B8
JOBID ジョブのID。ジョブ実行のIDではない A82F5CD4E1CAE43200000195F9F5584036C8
JOBVERSION ジョブのバージョン 2
JOBNAME ジョブ名 250411_1min+1minexec
JOBPATH ジョブの存在するレポジトリ内のパス /開発用/test/XXXX/250411_1minexec/
JOBMARKER ジョブのバージョンと更新日 2:2025-04-22 01:17:52.735
JOBLABEL ジョブのラベル LATEST
JOBSTEPID ジョブステップのID。ジョブステップ実行のIDではない。 A82F5CD4E1CAE43200000195F9F5584036DF
JOBSTEPNAME ジョブステップの名前 wait
JOBSTEPEXECUTIONSTATUS ジョブステップの結果ステータス。1は成功。0が失敗 1
JOBSTEPEXECUTIONSTARTED ジョブステップの開始日時 2025/4/23 1:29
JOBSTEPEXECUTIONENDED ジョブステップの終了日時 2025/4/23 1:31
JOBSTEPEXECUTIONRUNTIME ジョブステップの実行時間。日-時-分-秒をコンカチした整数 200
JOBEXECUTIONSTATUS ジョブ全体の結果ステータス。1は成功。0が失敗 1
JOBEXECUTIONSTARTED ジョブ全体の開始日時。 2025/4/23 1:29
JOBEXECUTIONENDED ジョブ全体の終了日時 2025/4/23 1:32
JOBEXECUTIONRUNTIME ジョブの実行時間。日-時-分-秒をコンカチした整数 324
JOBSTEPERRORLOG ジョブステップのログ `--- PRMS ---
ping -n 121 localhost>nul
プロセスが強制終了されました。終了コードは 0 です。
--- STDOUT ---
--- STDERR ---
JOBCLUSTERQUEUEDDATETIME ジョブのキューされた日時 2025/4/23 1:29
JOBCLUSTERCOMPLETIONCODE ジョブの完了コード。0が成功 0
JOBCLUSTERAPPLICATIONSTATUS ジョブ・タイプ別の、ジョブ・ステータスに対応する文字列値。いつもNULLだった。
JOBPROCESSID ジョブ・タイプ別の、システム・プロセスに対応する ID。例えば、実行中の実行可能ファイルのオペレーティング・システム・プロセス ID。いつもNULLだった
JOBEXECUTEDPARAMETERS 使用されていないとのことだったがジョブ変数が入るようだった <?xml version="1.0" encoding="UTF-8" standalone="yes"?><jobVariableList xmlns="http://xml.spss.com/prms"><name>scheduled</name></jobVariableList>
JOBNOTIFICATIONENABLED ジョブに対して通知が有効かどうかを示します。 1

JOBSTEP毎に一行ありますが、ジョブ全体の情報もでています。
以下のようなwaitというジョブステップとmin1.str_stepというジョブステップがあった場合、waitで2分、min1.str_stepで1分30秒、ジョブ全体としては3分25秒かかっています。
image.png

SPSSPLAT_V_JOBHISTORYから取得した結果を並べると以下のようになります。
JOBEXECUTIONRUNTIMEがジョブ全体の実行時間で、JOBSTEPEXECUTIONRUNTIMEがジョブステップの実行時間です。
ちょっと特殊な数値データで日-時-分-秒をコンカチした整数になっています。325は3分25秒をあらわしています。
image.png

ちょっとこのJOBEXECUTIONRUNTIMEやJOBSTEPEXECUTIONRUNTIMEの数値が特殊で、演算をしにくいので以下のように秒に変換もしてみました。

image.png

秒変換のclem式
@FIELD rem 100 +
(@FIELD div 100 rem 100) *60 +
(@FIELD div 10000 rem 100) *60*60 +
(@FIELD div 1000000) *60*60*24

分析例

実行回数の多いジョブランキング

JOBNAMEをキーにRecord_Countをとって多い順に並べています。

image.png

{ACDE4BEA-2ACA-43B9-905E-99DDC72FBB15}.png

ジョブ実行回数の多い日ランキング

JOBEXECUTIONSTARTEDをto_dateで日付にして、それをキーにRecord_Countをとって多い順に並べています。

image.png

{7104B41E-7064-4E96-A85C-46A3D3C00B47}.png

平均実行時間の長いジョブランキング

JOBNAMEをキーにJOBEXECUTIONRUNTIME_SECの平均をとって、その大きい順に並べています。

image.png

{25B21536-8A37-42CE-9382-A46F2BC38524}.png

特定ジョブの実行時間の時系列グラフ

JOBNAMEで特定ジョブに絞り込み、フィルターノードでJOBレベルの主な項目を選んでいます。

image.png

ジョブステップが複数あるとジョブ実行だけで1レコードにならないので、重複レコードノードでJOBIDとJOBEXECUTIONSTARTEDをキーに重複を排除しています。
時系列ノードでJOBEXECUTIONRUNTIME_SECを縦軸に表示しています。
image.png
{4A080193-14A3-4544-A461-BB9AD8395B0D}.png

参考

SPSSPLAT_V_JOBHISTORY

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?