0 / 0
資料の 英語版 に戻る

DataStageのBASICルーチンを置き換える

最終更新: 2025年3月12日
DataStage での BASIC ルーチンの置換

BASIC ルーチンを置き換えるには、 dsjob CLI または REST API 呼び出しを使用するスクリプトにルーチン・コードを書き直します。 これを「Bash の実行」スクリプト・ノードとしてパイプライン・フローに追加します。

認証トークン

REST または CLI で API サーバーの使用を開始するには、サーバーの認証トークンを取得します。

詳しくは、 CPD ベアラー・トークンの作成を参照してください。

CPD UI URL が https://cpd-ds.apps.yourcompany.com というフォーマットであると仮定すると、以下のコードで認証トークンを取得します。

IAM トークン:
export CPD_URL=https://cpd-ds.apps.yourcompany.com
export USERNAME=<your login user>
export PASSWORD=<your login password>
iamtoken=`curl -k -s -X POST -H "Content-Type: application/x-www-form-urlencoded;charset=UTF-8" -d "grant_type=password&username=${USERNAME}&password=${PASSWORD}&scope=openid" ${CPD_URL}/idprovider/v1/auth/identitytoken | jq .access_token | cut -d\" -f2`
ZenApiキー認証トークン:
curl -k -X POST -H "cache-control: no-cache" -H "Content-Type: application/json" -d "{\"username\":\"{username}\",\"api_key\": \"{api_key}\"}" "https://{cpd_cluster_host}/icp4d-api/v1/authorize"

ルーチンの置換

以下の BASIC ルーチンは、ジョブの名前を取得します。
# ** Jobname = DSGetJobInfo (DSJ.ME,DSJ.JOBNAME)
REST API を使用するスクリプトを作成し、それを「Bash スクリプトの実行」ノードに追加することで、同じ情報を取得できます。
  1. プロジェクト ID、プロジェクト名、ジョブ ID、およびジョブ実行 ID などのパラメーターを取得します。 これらの値は、CEL 式を使用して取得できます。 ctx.scope.idctx.scope.namectx.job.idctx.job_run.id、または以下のコマンドで例示されているように REST API を使用して取得できます。 この例では、プロジェクトの名前を project1と想定しています。

    プロジェクト ID

    $ project=`curl --request GET "${CPD_URL}/v2/projects?name=project1"-H "Authorization:ベアラ ${bearer_token}"-k -s`
    $ proj_id=`echo $project | jq -r '.resources|.[0].metadata.guid'`

    ジョブ ID

    $ joblist=`curl --request GET "${CPD_URL}/v2/jobs?project_id=${proj_id}" "--header "Authorization:ベアラ ${bearer_token}"-k -s`
    job_id= `echo $joblist | jq -r '.results[].metadata|select(.name=="testjob"?) |.asset_id'`

    実行 ID

    $ runlist=`curl --request GET "${CPD_URL}/v2/jobs/${job_id}/runs?project_id=${proj_id}"--header "Authorization:ベアラ ${bearer_token}"-k -s`
    $ run_id= `echo $runlist|jq -r '.results[]|select(.metadata.description=="Initial run"?) |.metadata.asset_id'`
  2. 指定されたプロジェクト内のジョブ実行のメタデータを取得します。 前のコマンドで定義したパラメーター proj_idjob_id、および run_id を使用します。
    jobrun=`curl --request GET "${CPD_URL}/v2/jobs/${job_id}/runs/${run_id}?job_id=${job_id}&run_id=${run_id}&project_id=${proj_id}"--header "Authorization:ベアラ ${bearer_token}"`
  3. 情報を抽出します。
    $ echo $jobrun|jq -r '.entity.job_run.job_name'

この例では REST API コマンドを使用しますが、 dsjob も使用できます。 ルーチンをラッパー関数として再作成して、スクリプト全体で再利用できるようにすると便利な場合があります。 詳細および例については、 を参照してください。