Volver a la versión inglesa de la documentación
Ejemplos de sustitución de rutina en DataStage
Ejemplos de sustitución de rutinas en DataStage®
Última actualización: 12 mar 2025
Los ejemplos siguientes muestran cómo reescribir rutinas BASIC utilizando la CLI o la API REST de dsjob
. Puede volver a escribir las rutinas como funciones de derivador y llamarlas más tarde en los scripts, o utilizar el cuerpo de la función de ejemplo como un mandato por sí mismo.
Ejemplos
- Obtener ID de proyecto
Expresión de CIE:
ctx.scope.id
- Obtener ID de trabajo
Expresión de CIE:
ctx.job.id
- Obtener ID de ejecución de trabajo
Expresión de CIE:
ctx.job_run.id
- DSAddEnvVar
- API REST:
#!/bin/sh # param1: # param2: nuevo nombre de variable # param3: nuevo valor de variable DSAddEnvVar() { envs=`curl -k -s --request GET "${CPD_URL}/v2/environments?project_id=${proj_id}" --header "Authorization: Bearer ${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="{\"/entidad/entorno/entorno_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 ${bearer_token}" --data-raw "${data}" }
- DSAddProject
- API REST:
#!/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 ${bearer_token}" -d "$data" --header 'Content-Type: application/json'` echo $proj|jq -r ".location" |awk -F '/' '{print $4}>' }
- DSDeleteEnvVar
- API REST:
#!/bin/sh # param1: # param2: nombre de variable DSDeleteEnvVar() { envs=`curl -k -s --request GET "${CPD_URL}/v2/environments?project_id=${proj_id}" --header "Authorization: Bearer ${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="{\"/entidad/entorno/entorno_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 ${bearer_token}" --data-raw "${data}" }
- DSDeleteProject
- API REST:
#!/bin/sh DSDeleteProject() { curl -k -s --request DELETE "${CPD_URL}/transactional/v2/projects/$1?project_id=$1" --header "Authorization: Bearer ${bearer_token}" }
- DSExecute
- Defina una función de derivador.
#!/bin/sh DSExecute () { shelltype=$1 command=$2 output=$3 sh -c $command > $output 2>&1 }
Llame a la función.$ DSExecute "UNIX" "echo someinfo" "output.log" $ returnCode=$?
- DSGetIDForJob
- API REST:
DSGetIdForJob() { joblist=`curl --request GET "${CPD_URL}/v2/jobs?project_id=${proj_id}" --header "Authorization: Bearer ${bearer_token}" -k -s` echo $joblist|jq -r ".results[].metadata|select(.name=="$1\") |.asset_id" }
- DSGetJobInfo
- Puede reescribir la función BASIC DSGetJobInfo como una función envolvente que utilice la API REST con la siguiente sintaxis. Job_id, run_id y project_id son necesarios para recuperar la información de trabajo. Información como, por ejemplo, DSJ.JOBSTARTTIMESTAMP, no está soportado.
#!/bin/sh DSGetJobInfo() { # Obtener los metadatos de ejecución del trabajo 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 ${bearer_token}"` # Analizar y extraer la información 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 echo $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
- Para obtener el estado de usuario de un trabajo de DataStage en el script de un nodo de script Ejecutar Bash, obtenga el ID de proyecto (
ctx.scope.id
). Si el flujo Ejecutar DataStage se denominarun_datastage_flow
, el ID de trabajo estasks.run_datastage_flow.results.job
y el ID de ejecución estasks.run_datastage_flow.results.job_run
. La sintaxis siguiente utiliza estos parámetros para recuperar el estado del usuario.export CPDCTL_ENABLE_DSJOB=1 DSGetUserStatus() { # obtener los últimos 36 caracteres de la serie de salida, que contiene el ID de trabajo o el ID de ejecución de trabajo del flujo de datastage flowid= ${ds_job_id:0-36:36} flowrunid= ${ds_job_run_id:0-36:36} # obtener metadatos jobrun mediante el mandato dsjob o la API REST jobrun=`cpdctl dsjob get-jobrun --project-id $project_id --id $flowid --run-id $flowrunid --output json --with-metadata` # extrae el mensaje userStatus de la ejecución del trabajo echo $jobrun | jq -r '.entity.job_run.configuration.userStatus' }
userstatus=`DSGetUserStatus`
- DSGetLinkInfo
- Para recuperar el nombre de un enlace y el número de filas que han pasado un enlace, obtenga el ID de proyecto, el ID de trabajo, el ID de ejecución y el nombre de enlace. Puede reescribir DSGetLinkInfo en una función envolvente utilizando la siguiente sintaxis.
- DSGetLogEntry, DSGetLogEntryFull, DSGetLogEventIds, DSGetLogSummary, DSGetNewestLogId
- Para obtener los registros de una ejecución de trabajo, obtenga el ID de proyecto, el ID de trabajo y el ID de ejecución. Puede escribir funciones de derivador para recuperar ID de registro, ID de suceso, entradas y resúmenes con la sintaxis siguiente.
- DSGetParamInfo
- Para obtener el valor actual de un parámetro, obtenga el ID de proyecto, el ID de trabajo y el ID de ejecución. Escriba una función de derivador para recuperar los metadatos de ejecución del trabajo.
- DSGetProjectInfo
- Para obtener el nombre del proyecto actual y una lista separada por comas de los trabajos del proyecto, necesita el ID de proyecto. Estas funciones de derivador devuelven el nombre y la lista.
- DSGetVersionInfo
- La siguiente función utiliza la API REST para obtener la versión del producto.
- DSJobNameFromJobId
- Para obtener un nombre de trabajo, necesita el ID de proyecto y el ID de trabajo. Las funciones siguientes recuperan un nombre de trabajo.
- DSListEnvVars
- Para listar variables de entorno, necesita el ID de proyecto.
- DSMakeJobReport
- Para realizar un informe de trabajo, defina DSGetJobInfo, DSGetStageInfo y DSGetLinkInfo. La función siguiente muestra el estado de una ejecución de trabajo.
- DSRunJob
- API REST:
#!/bin/sh DSRunJob() { si ["$1" = ""]; entonces envs = '{}' else envs=" {\" job_run \": {\" configuration \": {\"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 ${bearer_token}" -d "$envs"` run_id=`echo $jobrun | jq -r '.metadata.asset_id'` echo $run_id }
- DSSetEnvVar
- API REST:
#!/bin/sh # param1: # param2: nombre de variable # param3: valor de variable DSSetEnvVar() { envs=`curl -k -s --request GET "${CPD_URL}/v2/environments?project_id=${proj_id}" --header "Authorization: Bearer ${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="{\"/entidad/entorno/entorno_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 ${bearer_token}" --data-raw "${data}" }
- DSSetIdForJob
- Utilice la API REST para establecer un nombre definido por el usuario para un trabajo.
- DSSetParam
- Utilice la API REST para especificar valores de parámetro de trabajo.
- DSStopJob
- API REST:
#!/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 ${bearer_token}" -d '{}'` echo $output }
- DSTranslateCode
- Defina una función de conversión para convertir un estado de control de trabajo o un código de error en una explicación de texto.
- DSWaitForJob
- API REST:
$ 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
- Utilice la API REST para obtener información de enlace de metadatos de ejecución de trabajo.
¿Fue útil el tema?
0/1000