
# 创建对比任务 - CreateCompareTask
#### 功能介绍
创建对比任务。
#### 调试
您可以在[API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=DRS&api=CreateCompareTask)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 接口约束
当前版本仅支持任务在INCRE_TRANSFER_STARTED状态时创建对比任务，父任务不支持调用。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-drs/drs_api_0035.html)。
#### URI
POST /v3/{project_id}/jobs/create-compare-task
表1路径参数 
| **参数**     | **是否必选** | **参数类型** | **描述**                                                                                                                                            |
|:---|:---|:---|:---|
| project_id | 是        | String   | 租户在某一Region下的Project ID。 获取方法请参见[获取项目ID](https://support.huaweicloud.com/api-drs/drs_api_0106.html)。 |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| Content-Type | 是    | String | 指定类型为application/json。 缺省值：**application/json**                                                                                                                                                                                                                                                                                                                                                     |
| X-Auth-Token | 是    | String | 从IAM服务获取的用户Token。                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| X-Language   | 否    | String | 请求语言类型。 缺省值：**en-us** 取值： - **en-us**  - **zh-cn**   |
   
表3请求Body参数 
| 参数                        | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| job_id                    | 是    | String | 任务ID。                                                                                                                                                                                                 |
| object_level_compare_type | 否    | String | 对象级对比类型，取值为空代表不创建对象级对比。object_level_compare_type和data_level_compare_info都为空时，只查询已创建的对比任务列表。 取值：**objects**                                            |
| data_level_compare_info   | 否    | Object | 数据级对比信息，不创建数据级对比时可以不传。object_level_compare_type和data_level_compare_info都为空时，只查询已创建的对比任务列表。 详情请参见[表4]。 |
   
 表4data_level_compare_info字段数据结构说明 
| 参数                              | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| conflict_policy                 | 是    | String           | 一个任务只允许有一个未完成的数据级对比任务，该字段决定对未完成数据级对比任务的处理方式。cancel：取消后重新创建。keep：保持未完成的不再创建。 取值： - **cancel**  - **keep**                                |
| compare_type                    | 是    | String           | 数据级对比类型，lines：行对比，contents：内容对比。 取值： - **lines**  - **contents** 说明： 不能同时进行对象级对比和内容对比。    |
| compare_mode                    | 否    | String           | 数据级对比模式，取值为空时需要在compare_object_infos或者compare_object_infos_with_token传对象信息，quick_comparison-快速对比，需要加入该功能的白名单才能使用。 缺省值：**quick_comparison** 取值：**quick_comparison**                                                                                                                                                                                                                         |
| start_time                      | 否    | String           | 对比任务启动时间，取值为空代表立即启动。                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| compare_object_infos            | 否    | Array of objects | 数据级对比的对象。非"快速对比"模式时，compare_object_infos和compare_object_infos_with_token根据链路二选一传值，不允许都为空。 详情请参见[表5]。                                                                                                                                                                                                                                                                                  |
| compare_object_infos_with_token | 否    | Array of objects | 数据级对比的对象（Cassandra灾备专用，带token信息）。非"快速对比"模式时，compare_object_infos和compare_object_infos_with_token根据链路二选一传值，不允许都为空。 详情请参见[表6]。                                                                                                                                                                                                                                                         |
   
 表5compare_object_infos字段数据结构说明 
| 参数         | 是否必选 | 参数类型             | 描述        |
|:---|:---|:---|:---|
| db_name    | 是    | String           | 库名。       |
| table_name | 否    | Array of strings | 该库下的表名列表。 |
   
 表6compare_object_infos_with_token字段数据结构说明 
| 参数                    | 是否必选 | 参数类型             | 描述                                                                                                                            |
|:---|:---|:---|:---|
| db_name               | 是    | String           | 库名。                                                                                                                           |
| table_name_with_token | 否    | Array of objects | 该库下的表信息列表（带token）。 详情请参见[表7]。 |
   
 表7table_name_with_token字段数据结构说明 
| 参数         | 是否必选 | 参数类型   | 描述            |
|:---|:---|:---|:---|
| table_name | 是    | String | 表名。           |
| min_token  | 否    | String | 该表的min token。 |
| max_token  | 否    | String | 该表的max token。 |
   
#### 响应参数
**状态码：200**
表8响应Body参数 
| 参数                                 | 参数类型   | 描述                                                                                                                        |
|:---|:---|:---|
| job_id                             | String | 任务id。                                                                                                                     |
| object_level_compare_create_result | Object | 创建对象级对比的结果。 详情请参见[表9]。 |
| data_level_compare_create_result   | Object | 创建数据级对比的结果。 详情请参见[表9]。 |
| error_code                         | String | 错误码。                                                                                                                      |
| error_msg                          | String | 错误信息。                                                                                                                     |
   
 表9object_level_compare_create_result和data_level_compare_create_result字段数据结构说明 
| 参数              | 参数类型   | 描述                                |
|:---|:---|:---|
| compare_task_id | String | 对比任务创建成功后，返回对比任务的id，用于查询该对比任务的结果。 |
| error_code      | String | 错误码。                              |
| error_msg       | String | 错误信息。                             |
   
#### 请求示例
创建对象级对比和数据级行对比任务：
```
https://{endpoint}/v3/054ba152d480d55b2f5dc0069e7ddef0/jobs/create-compare-task
{
  "job_id" : "94800607-3cd8-4f7d-a340-63a10f8jb502",
  "object_level_compare_type" : "objects",
  "data_level_compare_info" : {
    "conflict_policy" : "keep",
    "compare_type" : "lines",
    "compare_mode" : null,
    "start_time" : null,
    "compare_object_infos" : [ {
      "db_name" : "may_5",
      "table_name" : [ "table_name_0", "table_name_1" ]
    } ]
  }
}
```
#### 响应示例
**状态码：200**
OK
```
{
  "job_id" : "94800607-3cd8-4f7d-a340-63a10f8jb502",
  "object_level_compare_create_result" : {
    "compare_task_id" : "dc1683d9-bdf2-4be9-967f-6ef0953369bc"
  },
  "data_level_compare_create_result" : {
    "compare_task_id" : "08cad1f8-9de2-42fa-b8ce-6c36daf730f6"
  }
}
```
#### 状态码
| **状态码** | **描述**      |
|:---|:---|
| 200     | OK          |
| 400     | Bad Request |
   
其他状态请参见[状态码](https://support.huaweicloud.com/api-drs/drs_api_0108.html)。
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-drs/drs_05_0004.html)。
