适用场景
- 每次更新数据体量较大,使用传统的JDBC抽取方式效率低,速度慢,不能满足需求
- 客户自己有一定的开发能力,有能力将数仓(一般为Hive)中的数据批量导出转成符合观远要求的数据格式文件parquet格式,并把这些文件按观远指定的路径放至到BI服务器端。
接口文档说明
1.路径及文件
(1)上传至如下目录下:
/home/guandata/data/guandata-store/upload_dataset (非 minio 环境)
/home/guandata/data/minio/guandata-store/upload_dataset (minio 环境)
minio要注意, 看minio在那台机器上,不要传错机器了
(2)每一个数据集在此目录下存储成一个目录,目录名以数据集的 id 命名,即dsId。
/home/guandata/data/guandata-store/upload_dataset/{dsid} (非 minio 环境)
/home/guandata/data/minio/guandata-store/upload_dataset/{dsid} (minio 环境)
2. 文件格式
(1)存为parquet 文件格式, snappy压缩,写成文件组,不要写单个较大的文件。
(2)需对字段名中的如下特殊字符做转义处理:
' ', ',' , ';', '{', '}', '(', ')', '\n', '\t', '=', '.'
选用的转义字符为 '%' 故对'%' 也需要做转义。
3.数据更新接口
老:
将数据文件拷贝到指定路径下后,调用以下接口通知 BI 服务进行数据集更新。
URL
$home_url/public-api/data-source/{dsId}/refresh-with-file
METHOD
GET
Header
添加x-auth-token 该Token为用户登录系统后的Token,登录接口可参考sign-in接口。
PARAMETERS
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
dsId | Path | String | 数据集 id | 是 |
|
overwrite | Query | Boolean | 是否全量更新 | 是 | true:全量,false:增量 |
fileType | Query | String | 文件类型 | 否 | PARQUET, DELTA_LAKE 备注:6.0版本开始支持DELTA_LAKE
|
RESPONSE
{
"result": "ok",
"response": {
"taskId": "6462ab30-9aff-11ee-8005-652e754fa01a",// 生成的数据集更新任务id
"status": "已提交",
"result": "处理中"
}
},
"error": // 失败时返回
{
"status": 500, // 错误码
"message": "提交失败", // 错误信息
"detail": {} // 错误的详细信息
}
}
新:
请求方式:GET
请求地址:/public-api/data-source/refresh-with-file
参数名 | 参数值说明 | Location | 类型 | 是否必填 | 备注 |
token | 应用Token | Header | String | 是 | 在观远平台中获得
|
dsId | 数据集ID | URL | String | 是 |
|
overwrite | 是否覆盖历史数据 | URL | Boolean | 是 | true 表示覆盖;false 表示新增 |
fileType | 数据文件类型 | URL | String | 否 | 文件类型:PARQUET、DELTA_LAKE 非必填,不填后端默认按PARQUET类型处理 |
RESPONSE
{
"result": "ok",
"response": {
"taskId": "87469210-9b1d-11ee-8005-652e754fa01a",
"status": "已提交",
"result": "处理中"
}
}
4.task轮询接口
4.1 接口简介
请求方式:GET
请求地址:/public-api/task/status
4.2 参数说明
参数名
| 参数值说明
| Location
| 类型
| 是否必填
| 备注
|
token
| 应用Token
| Header
| String
| 是
| 在观远平台中获得
|
taskId
| 任务ID
| URL
| String
| 是
| 其他前置API返回的任务ID
|
4.3 请求与响应示例
{
"result": "ok",
"response": {
"taskId": "6462ab30-9aff-11ee-8005-652e754fa01a",
"status": "FINISHED",
"result": {
"status": "FINISHED",
"rowCount": 13
},
"startTime": "2023-12-15T12:06:58.000+08:00",
"submitTime": "2023-12-15T12:06:58.000+08:00",
"finishedTime": "2023-12-15T12:07:05.000+08:00",
"endTime": "2023-12-15T12:07:06.000+08:00",
"runningDuration": 7,
"queueingDuration": 0
}
}
如果任务执行完成,则 response.status 为 FINISHED,如果更新成功,则 response.result.status 为 FINISHED。