Create Download Request


创建文件下载任务。

前提条件


已创建和启用数据读取通道,且该读取通道不是跨源通道。

请求格式


POST https://{apigw-address}/data-federation/v2.0/channels/read/{channelId}/download-request

请求参数(URI)


名称

位置(Path/Query)

必需/可选

数据类型

描述

channelId

Path

必需

String

文件下载任务使用的通道 ID。

orgId

Query

必需

String

应用所属的 OU ID。如何获取 orgId 信息 >>

请求参数(Body)


名称

必需/可选

数据类型

描述

taskName

必需

String

指定文件下载任务名称。

sourceName

必需

String

指定读取通道绑定的数据源。目前仅支持 Hive(EnOS)数据源,值为 hive_enos

querySql

必需

String

配置 SQL 查询语句,自定义需要下载的数据内容和格式等。

filePackageName

必需

String

指定下载文件的名称。

files

可选

List<JSON Object>

配置下载文件的相关信息,包括文件编码方式,是否启用分区下载文件等。File 结构体 >>

callbackURL

可选

String

指定接收回调消息的 URL。当下载任务完成后,通过 HTTP POST 请求的方式向指定的 URL 地址发送下载结果的通知。返回参数详见 CallBackURL 返回参数

File 结构体


名称

必需/可选

数据类型

描述

split

必需

Boolean

是否启用分区下载功能,true 表示启用分区,false 表示不启用分区。启用后,可通过其它参数(如 fileRename)来指定下载哪些分区的数据。

encoding

必需

String

指定所下载的文件的编码方式,支持 utf-8gbk

delimiter

String

Boolean

指定所下载的文件中字段的分隔符,支持 \t,;

fileHeader

必需

List<String>

指定所下载的文件的表头信息,表头的字段之间使用 , 分隔。

fileRename

可选

List<JSON Object>

当启用分区下载功能(split 参数值为 true)时,可以为每一分区的文件重命名,系统将根据这项配置,将每个分区的数据文件按照指定的名称进行下载。结构为 {"key": "value"},其中 key 是分区的编号(仅支持整数),value 是用户自定义的分区文件名称。例如 "fileRename": {"1": "group1","2": "group2"},表示分区 1 的数据文件下载后被命名为 group1,分区 2 的数据文件下载后被命名为 group2

响应参数


名称

数据类型

描述

taskId

String

所创建的文件下载任务 ID。

CallBackURL 返回参数


在 Hive 数据下载任务完成后,系统向 callbackURL 地址发送一个 HTTP POST 请求,请求体中包含以下返回字段。


名称

数据类型

描述

id

String

下载任务 ID。

returnCode

String

下载任务的执行结果状态码。

  • 0 表示下载成功,此时 download_url 字段会返回文件的下载路径。

  • 其它数值表示下载失败,此时 log_url 字段会返回错误日志的下载路径。

download_url

String

下载成功(returnCode 值为 0)时,返回文件的下载路径。

log_url

String

下载失败(returnCode 值不是 0)时,返回错误日志的下载路径。

dataSize

String

下载的数据文件大小,单位是 byte。

示例

请求示例


url: https://{apigw-address}/data-federation/v2.0/channels/read/yourchannelId/download-request?orgId=yourOrgId
method: POST
requestBody:
{
  "taskName": "Test_download_openapi",
  "sourceName": "hive_enos"
  "querySql": "select * from students",
  "filePackageName": "studentsOpenAPI",
  "callbackURL":"http://localhost:8080",
  "files": {
    "split": true,
    "encoding": "utf-8",
    "delimiter": ",",
    "fileHeader": [
      "c1",
      "c2",
      "c3",
      "c4",
      "c5",
      "c6"
    ],
    "fileRename": {
      "1": "group1",
      "2": "group2",
      "3": "group3",
      "4": "group4"
    }
  }
}

返回示例


{
  "msg": "OK",
  "code": 0,
  "data": {
    "taskId": "yourtaskId"
  }
}