
# 查询作业执行进度信息 - ShowSqlJobProgress
#### 功能介绍
该API用于获取作业执行进度信息，如果作业正在执行，可以获取到子作业的信息，如果作业刚开始或者已经结束，则无法获取到子作业信息。
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=DLI&api=ShowSqlJobProgress)中调试该接口。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限及授权项说明](https://support.huaweicloud.com/api-dli/dli_02_0375.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项 Action | 访问级别 Access Level | 资源类型（\*为必须） Resource Type (\*: required) | 条件键 Condition Key                                                                                                                                                  | 别名 Alias | 依赖的授权项 Dependencies |
  |:---|:---|:---|:---|:---|:---|
  | dli:jobs:get                            | read                                            | jobs \*                                                                | - [g:ResourceTag/\<tag-key\>](https://support.huaweicloud.com/usermanual-iam5/iam_01_1287.html)   | -                                      | -                                                 |
     
  
 
#### URI
- URI格式： GET /v1/{project_id}/jobs/{job_id}/progress
  
- 参数说明
  表1URI 参数 
  | 参数名称       | 是否必选 | 参数类型   | 说明                                                                                     |
  |:---|:---|:---|:---|
  | project_id | 是    | String | 项目编号，用于资源隔离。获取方式请参考[获取项目ID](https://support.huaweicloud.com/api-dli/dli_02_0183.html)。 |
  | job_id     | 是    | String | 作业ID。                                                                                  |
     
  
 
#### 请求消息
无请求参数。
#### 响应消息
表2响应参数 
| 参数名称       | 是否必选 | 参数类型            | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| is_success | 是    | Boolean         | 请求发送是否成功。"true"表示请求发送成功。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| message    | 是    | String          | 系统提示信息，执行成功时，信息可能为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| job_id     | 否    | String          | 提交请求成功时，生成并提交一个新的作业，返回作业ID。用户可以使用作业ID来查询作业状态和获取作业结果。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| status     | 是    | String          | 作业状态。 - RUNNING：运行中  - SCALING：规格变更中  - LAUNCHING：提交中  - FINISHED：已完成  - FAILED：已失败  - CANCELLED：已取消   |
| sub_job_id | 否    | Integer         | 正在运行的子作业ID，如果作业还没开始运行或者运行结束，则子作业ID可能为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| progress   | 否    | Double          | 正在运行的子作业的进度或者整个作业进度，该值只能粗略的估算子作业进度，不表示作业的详细进度。 - 如果整个作业刚开始运行或者在提交中，则进度展示为0；如果作业运行结束，则进度展示为1。此时progress表示整个作业的运行进度，因为没有子作业在运行，sub_job_id不展示。  - 如果有子作业在运行中，则展示该子作业的运行进度，progress的计算方法为：子作业已经完成的task数除以子作业总的task数。此时progress表示子作业的运行进度，sub_job_id展示。                                                                                                          |
| sub_jobs   | 否    | Array of Object | 正在运行作业的子作业的详细信息，一个作业可能包含多个子作业。具体请参考[表3]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   
 表3sub_jobs参数说明 
| 参数名称                  | 是否必选 | 参数类型                  | 说明                                                            |
|:---|:---|:---|:---|
| id                    | 否    | Integer               | 子作业ID，对应开源spark JobData的jobId。                                |
| name                  | 否    | String                | 子作业name，对应开源spark JobData的name。                               |
| description           | 否    | String                | 子作业description，对应开源spark JobData的description。                 |
| submission_time       | 否    | String                | 子作业submission_time，对应开源spark JobData的submissionTime。          |
| completion_time       | 否    | String                | 子作业completion_time，对应开源spark JobData的completionTime。          |
| stage_ids             | 否    | Array of Integer      | 子作业stage_ids，对应开源spark JobData的stageIds。                      |
| job_group             | 否    | String                | 对应DLI的作业ID，对应开源spark JobData的jobGroup。                        |
| status                | 否    | String                | 子作业状态，对应开源spark JobData的status。                               |
| num_tasks             | 否    | Integer               | 子作业task的个数，对应开源spark JobData的numTasks。                        |
| num_active_tasks      | 否    | Integer               | 子作业正在运行的task个数，对应开源spark JobData的numActiveTasks。              |
| num_completed_tasks   | 否    | Integer               | 子作业已经完成的task个数，对应开源spark JobData的numCompletedTasks。           |
| num_skipped_tasks     | 否    | Integer               | 子作业跳过的task个数，对应开源spark JobData的numSkippedTasks。               |
| num_failed_tasks      | 否    | Integer               | 子作业跳失败的task个数，对应开源spark JobData的numFailedTasks。               |
| num_killed_tasks      | 否    | Integer               | 子作业kill掉的task个数，对应开源spark JobData的numKilledTasks。             |
| num_completed_indices | 否    | Integer               | 子作业完成指数，对应开源spark JobData的numCompletedIndices。                |
| num_active_stages     | 否    | Integer               | 子作业正在运行的stage个数，对应开源spark JobData的numActiveStages。            |
| num_completed_stages  | 否    | Integer               | 子作业已经完成的stage个数，对应开源spark JobData的numCompletedStages。         |
| num_skipped_stages    | 否    | Integer               | 子作业跳过的stage个数，对应开源spark JobData的numSkippedStages。             |
| num_failed_stages     | 否    | Integer               | 子作业失败的stage个数，对应开源spark JobData的numFailedStages。              |
| killed_tasks_summary  | 否    | Map\<string,integer\> | 子作业killed_tasks_summary，对应开源spark JobData的killedTasksSummary。 |
   
#### 请求示例
无
#### 响应示例
```
{
    "is_success": true,
    "message": "",
    "job_id": "85798b38-ae44-48eb-bb90-7cf0dcdafe7b",
    "status": "RUNNING",
    "sub_job_id": 0,
    "progress": 0,
    "sub_jobs": [
        {
            "id": 0,
            "name": "runJob at FileFormatWriter.scala:266",
            "submission_time": "2020-06-15T15:45:16.940GMT",
            "stage_ids": [
                0
            ],
            "job_group": "85798b38-ae44-48eb-bb90-7cf0dcdafe7b",
            "status": "RUNNING",
            "num_tasks": 1,
            "num_active_tasks": 1,
            "num_completed_tasks": 0,
            "num_skipped_tasks": 0,
            "num_failed_tasks": 0,
            "num_killed_tasks": 0,
            "num_completed_indices": 0,
            "num_active_stages": 1,
            "num_completed_stages": 0,
            "num_skipped_stages": 0,
            "num_failed_stages": 0
        }
    ]
}
```
#### 状态码
状态码如[表4]所示。
 表4状态码 
| 状态码 | 描述    |
|:---|:---|
| 200 | 查询成功。 |
| 400 | 请求错误。 |
   
#### 错误码
调用接口出错后，将不会返回上述结果，而是返回错误码和错误信息，更多介绍请参见[错误码](https://support.huaweicloud.com/api-dli/dli_02_0056.html)。
表5错误码 
| 错误码      | 错误信息                                                       |
|:---|:---|
| DLI.0999 | The queue backend version is too old or the queue is busy. |
   
