資料の 英語版 に戻る
DataStage でのルーチン置換の例
DataStage® におけるルーチン置換の例
最終更新: 2025年3月12日
以下の例は、 dsjob
CLI または REST API を使用して BASIC ルーチンを再作成する方法を示しています。 ルーチンをラッパー関数として書き直して、後でスクリプトで呼び出すか、サンプル関数の本体を単独でコマンドとして使用することができます。
例
- プロジェクト ID の取得
CEL 式:
ctx.scope.id
- ジョブ ID の取得
CEL 式:
ctx.job.id
- ジョブ実行 ID の取得
CEL 式:
ctx.job_run.id
- DSAddEnvVar
- REST API:
#!/bin/sh # param1: 環境名 # param2: 新規変数名 # param3: 新しい変数値 DSAddEnvVar() { envs=`curl -k -s --request GET "${CPD_URL}/v2/environments?project_id=${proj_id}"--header "Authorization:ベアラ ${bearer_token}"` env_id=`echo $envs|jq -r ".resources[] | select(.metadata.name=="$1") | .metadata.asset_id"` existingvars=`echo $envs|jq -r ".resources[] | select(.metadata.name=="$env_name") | .entity.environment.environment_variables"` updatevars=`echo $existingvars |jq ".$2 = \"$3\""` data="{"/entity/environment/environment_variables}":${updatevars}}」" curl -k -s --request PATCH "${CPD_URL}/v2/environments/${env_id}?project_id=${proj_id}&environment_guid=${proj_id}"--header 'Content-Type: application/json' --header "Authorization:ベアラ ${bearer_token}"--data-raw "${data}" }
- DSAddProject
- REST API:
#!/bin/sh DSAddProject() { data="{\"name\": \"$1\", \"generator\": \"customer\", \"storage\": {\"type\": \"assetfiles\"}}" proj=`curl -k -s --request POST "${CPD_URL}/transactional/v2/projects"--header "Authorization:ベアラ ${bearer_token}"-d "$data" --header 'Content-Type: application/json'` echo $proj|jq -r ".location" |awk -F '/' '{print $4}' }
- DSDeleteEnvVar
- REST API:
#!/bin/sh # param1: 環境名 # param2: 変数名 DSDeleteEnvVar() { envs=`curl -k -s --request GET "${CPD_URL}/v2/environments?project_id=${proj_id}"--header "Authorization:ベアラ ${bearer_token}"` env_id=`echo $envs|jq -r ".resources[] | select(.metadata.name=="$1") | .metadata.asset_id"` existingvars=`echo $envs|jq -r ".resources[] | select(.metadata.name=="$env_name") | .entity.environment.environment_variables"` updatevars= ` echo $existingvars |jq "del (. $2)" ` data="{"/entity/environment/environment_variables}":${updatevars}}」" curl -k -s --request PATCH "${CPD_URL}/v2/environments/${env_id}?project_id=${proj_id}&environment_guid=${proj_id}"--header 'Content-Type: application/json' --header "Authorization:ベアラ ${bearer_token}"--data-raw "${data}" }
- DSDeleteProject
- REST API:
#!/bin/sh DSDeleteProject() { curl -k -s --request DELETE "${CPD_URL}/transactional/v2/projects/$1?project_id=$1"--header "Authorization:ベアラ ${bearer_token}" }
- DSE 実行
- ラッパー関数を定義します。
#!/bin/sh DS 実行 () { shelltype=$1 command=$2 output=$3 sh -c $command > $output 2>&1 }
関数を呼び出します。$ DSExecute "UNIX" "echo someinfo" "output.log" $ returnCode=$?
- DSGetIDForJob
- REST API:
DSGetIdForJob() { joblist=`curl --request GET "${CPD_URL}/v2/jobs?project_id=${proj_id}"--header "Authorization:ベアラ ${bearer_token}"-k -s` echo $joblist|jq -r ".results[].metadata|select(.name=="$1") |.asset_id " }
- DSGetJobInfo
- BASIC 関数 DSGetJobInfo を、以下の構文で REST API を使用するラッパー関数として書き換えることができます。 ジョブ情報を取得するには、job_id、run_id、および project_id が必要です。 一部の情報 ( DSJ.JOBSTARTTIMESTAMPはサポートされていません。
#!/bin/sh DSGetJobInfo() { # ジョブ実行メタデータを取得する 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}"` # 情報を解析して抽出する if [ "$1" = "DSJ.JOBSTATUS" ]; then echo $jobrun|jq -r '.entity.job_run.state' elif [ "$1" = "DSJ.JOBNAME" ]; then echo $jobrun|jq -r '.entity.job_run.job_name' elif [ "$1" = "DSJ.PARAMLIST" ]; then echo $jobrun|jq -r '.entity.job_run.configuration.job_parameters[]' elif [ "$1" = "DSJ.STAGELIST" ] || [$1 = "DSJ.FULLSTAGELIST"]; then echo $jobrun|jq -r '.entity.job_run.configuration.metrics.stage_metrics[].stage_name' elif [ "$1" = "DSJ.USERSTATUS" ]; then エコー $jobrun|jq -r '.entity.job_run.configuration.userStatus' elif [ "$1" = "DSJ.JOBDESC" ] || ["$1" = "DSJ.JOBFULLDESC"]; then echo $jobrun|jq -r '.metadata.description' elif [ "$1" = "DSJ.JOBELAPSED" ]; then echo $jobrun|jq -r '.entity.job_run.duration' fi }
- DSGetUserStatus
- Run Bash スクリプト・ノードのスクリプト内の DataStage ジョブのユーザー状況を取得するには、プロジェクト ID (
ctx.scope.id
) を取得します。 「 DataStage の実行」フローの名前がrun_datastage_flow
の場合、ジョブ ID はtasks.run_datastage_flow.results.job
で、実行 ID はtasks.run_datastage_flow.results.job_run
です。 以下の構文では、これらのパラメーターを使用してユーザー状況を取得します。エクスポート CPDCTL_ENABLE_DSJOB=1 DSGetUserStatus() { # 出力ストリングの最後の 36 文字を取得します。これは、DataStage フローのジョブ ID またはジョブ実行 ID を保持します。 flowid= ${ds_job_id:0-36:36} flowrunid= ${ds_job_run_id:0-36:36} # dsjob コマンドまたは REST API によって jobrun メタデータを取得する jobrun=`cpdctl dsjob get-jobrun --project-id $project_id --id $flowid --run-id $flowrunid --output json --with-metadata` # ジョブの実行から userStatus メッセージを抽出する エコー $jobrun | jq -r '.entity.job_run.configuration.userStatus' }
userstatus=`DSGetUserStatus`
- DSGetLinkInfo
- リンクの名前と、リンクに渡された行数を取得するには、プロジェクト ID、ジョブ ID、実行 ID、およびリンク名を取得します。 DSGetLinkInfoは、以下の構文を使ってラッパー関数に書き換えることができます。
- DSGetLogEntry, DSGetLogEntryFull, DSGetLogEventIds, DSGetLogSummary, DSGetNewestLogId
- ジョブ実行のログを取得するには、プロジェクト ID、ジョブ ID、および実行 ID を取得します。 以下の構文を使用して、ログ ID、イベント ID、項目、および要約を取得するラッパー関数を作成できます。
- DSGetParamInfo
- パラメーターの現行値を取得するには、プロジェクト ID、ジョブ ID、および実行 ID を取得します。 ジョブ実行メタデータを取得するラッパー関数を作成します。
- DSGetProjectInfo
- 現在のプロジェクトの名前と、プロジェクトのジョブのコンマ区切りリストを取得するには、プロジェクト ID が必要です。 これらのラッパー関数は、名前とリストを戻します。
- DSGetVersionInfo
- 以下の関数は、REST API を使用して製品バージョンを取得します。
- DSJobNameFromJobId
- ジョブ名を取得するには、プロジェクト ID とジョブ ID が必要です。 以下の関数は、ジョブ名を取得します。
- DSListEnvVars
- 環境変数をリストするには、プロジェクト ID が必要です。
- DSMakeJobReport
- ジョブ・レポートを作成するには、DSGetJobInfo, DSGetStageInfoとDSGetLinkInfoを定義します。 以下の関数は、ジョブ実行の状況を表示します。
- DSRunJob
- REST API:
#!/bin/sh DSRunJob() { if ["$1" = ""]; 環境 = '{}' それ以外の場合 envs=" {¥ "job_run¥": {¥ "config¥": {\"env_variables\": [\"$1\"]}}} " fi jobrun=`curl -k -s --request POST "${CPD_URL}/v2/jobs/${job_id}/runs?job_id=${job_id}&project_id=${proj_id}"--header 'Content-Type: application/json' --header "Authorization:ベアラ ${bearer_token}"-d "$envs"` run_id=`echo $jobrun | jq -r '.metadata.asset_id'` $run_id をエコー }
- DSSetEnvVar
- REST API:
#!/bin/sh # param1: 環境名 # param2: 変数名 # param3: 変数値 DSSetEnvVar() { envs=`curl -k -s --request GET "${CPD_URL}/v2/environments?project_id=${proj_id}"--header "Authorization:ベアラ ${bearer_token}"` env_id=`echo $envs|jq -r ".resources[] | select(.metadata.name=="$1") | .metadata.asset_id"` existingvars=`echo $envs|jq -r ".resources[] | select(.metadata.name=="$env_name") | .entity.environment.environment_variables"` updatevars=`echo $existingvars |jq ".$2 = \"$3\""` data="{"/entity/environment/environment_variables}":${updatevars}}」" curl -k -s --request PATCH "${CPD_URL}/v2/environments/${env_id}?project_id=${proj_id}&environment_guid=${proj_id}"--header 'Content-Type: application/json' --header "Authorization:ベアラ ${bearer_token}"--data-raw "${data}" }
- DSSetIdForJob
- REST API を使用して、ジョブのユーザー定義名を設定します。
- DSSetParam
- REST API を使用して、ジョブ・パラメーター値を指定します。
- DSStopJob
- REST API:
#!/bin/sh DSStopJob() { output=`curl -k -s --request POST "${CPD_URL}/v2/jobs/${job_id}/runs/${run_id}/cancel?job_id=${job_id}&project_id=${proj_id}&run_id=${run_id}"--header 'Content-Type: application/json' --header "Authorization:ベアラ ${bearer_token}"-d '{}'` $output をエコー }
- DSTranslateCode
- 変換機能を定義して、ジョブ制御状況またはエラー・コードをテキスト説明に変換します。
- DSWaitForJob
- REST API:
$ jobrun=`curl -k -s --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 ${bearer_token}"` $ status=`echo $jobrun | jq -r '.entity.job_run.state'` $ echo $status
- DSJobLinkInfo
- REST API を使用して、ジョブ実行メタデータからリンク情報を取得します。
トピックは役に立ちましたか?
0/1000