1. 数据上传
通过API将数据上传到观远数据分析平台。
home_url:要上传数据的观远数据分析平台主地址
1.1. 用户名密码方式登录获取合法Token
URL
$home_url/public-api/sign-in
method
POST
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
---|---|---|---|---|---|
Content-Type | Header | String | 内容类型 | 是 | |
domain | Body | String | 域名 | 是 | 在观远系统中的域名,非网址的域名 |
Body | String | 登录的邮箱 | 是 | 如果开启了账号登录模式则该参数不传,传loginId和对应的内容 | |
password | Body | String | 密码 | 是 | 原始密码经过Base64编码后的字符串 |
Header 示例
{ "Content-Type": "application/json; charset=utf-8" }
POST Body 示例
{ "domain":"demo", "email":"123@456.com", "password":"my_password_base64_encoded" }
注意:参数中password需要base64 encode。
Response
{ "result":"ok", "response": { "token":"guanyuan token", /* 该token在后面调用其他接口时使用 */ "expireAt":"2018-02-06 00:11:12.13" } }
1.2. 上传数据
URL
$home_url/public-api/upload-dataset
method
POST
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
---|---|---|---|---|---|
Content-Type | Header | String | 内容类型 | 是 | |
X-Auth-Token | Header | String | 登录用的Token | 是 | 调用登录API获取 |
tableName | Body | String | 数据集名称 | 是 | |
dsId | Body | String | 数据集ID | 否 | 若tableName有重名可以指定dsId |
overwriteExistingData | Body | Boolean | 是否覆盖原始数据 | 默认为false,即追加数据 | |
columns | Body | JSON | 设置上传数据集各列属性 | name:列名 type:字段类型 isPrimaryKey:是否是主键 | |
allColumnsSpecified | Body | Boolean | 是否选择所有列 | ||
data | Body | JSON | 待上传的数据 | 是 | |
displayType | Body | String | 标识的格式 | ||
batchFinish | Body | Boolean | 是否最后一批 | batchFinish 设为true会更新该数据集,注意不要频繁更新数据集。 |
Header 示例
{ "Content-Type": "application/json" "X-Auth-Token": "guanyuan token" }
POST Body 示例
{ "tableName": "my_table_name", /* 必选,如果需要向已存在数据集追加数据,设置相同的tableName即可。*/ "overwriteExistingData": false, /* 可选,默认为false,设置为true时,先删除原来的数据,再上传。*/ "columns": [ /* 可选,设置各字段 */ { "name": "column1", "type": "string", /* 可选, 如果没有设置, 则系统会自动读取前1000行来推测其列的数据类型, string, integer, double, timestamp, long, short, float, date */ "isPrimaryKey": true /* 可选,默认为false,设置主键,设置了primaryKey后,多次上传时会更新原有数据,否则,会追加到原有数据后 */ } ], "allColumnsSpecified": false, /* 可选,默认false。为false时,会自动检查data中的字段并推测类型上传到观数,为true时,表示columns中指定了所有字段,那么,data中的多余字段会过滤掉。 */ "data": [ { "column1": "data1_1", "column2": "data1_2" }, { "column1": "data2_1", "column2": "data2_2" } ], "displayType": "CSV", /* 可选,标示在观数的显示格式,包括 CSV, EXCEL, DATAFUSION, DATAFLOW, MYSQL, KR3000, PUBLIC, WEIXIN, POSTGRESQL, GREENPLUM, CARD*/ "batchFinish": false /* 可选,默认为false,分批上传时,表示是否是最后一批。设置为false时,不更新行数,也不刷新card缓存 */ }
Response
{ "result": "ok", "response": { "status": "finish", "dsId": "c5bf77bf02ef54b848164c1a" } }
2. 数据下载(接口返回数据上限5w行)
2.1 获取数据集下载授权
$home_url/api/data-source/{dsId}/data-fetch-token?action={action}
method
GET
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
---|---|---|---|---|---|
dsId | Path | String | 数据集ID | 是 | 授权的目标数据集ID,在Web端打开对应的数据集,可以在地址栏里获取,为长度为24的字符串 |
action | Path | Sting | 授权动作 | 否 | 缺省:如果数据集已经被授权则返回已有token,否则创建新token; reset:更新数据集已有授权token,返回新token; disable:授权被清除 |
Content-Type | Header | String | 内容类型 | 是 | |
token | Header | String | 登录用的Token | 是 | 调用登录API获取 |
您可以使用以上接口调用的方式获得数据集授权token。由于该token是长期有效的,很多时候你可能并不需要在程序里反复获取,因此也可以在浏览器端登录系统后,输入以上接口地址获得授权token,并将token固化在您获取数据的程序内。 鉴于授权token是长期有效的,请注意数据安全,妥善保管。若发生token泄露,可调用以上接口,将action设置为reset进行重置。
Response样例
{ "dataFetchToken":"guanyuan_data_fetch_token" }
2.2 数据下载
$home_url/public-api/data-source/{dsId}/token/{token}
method
Post
Parameters
Name | Location | 类型 | 含义 | 是否必填 | 备注 |
---|---|---|---|---|---|
dsId | Path | String | 数据集ID | 是 | 目标数据集ID |
token | Path | String | 授权token | 是 | 用于数据获取的token,即为以上2.1中获得的token |
cols | Body | Array | 需获取的列 | 否 | 指定欲获取的列 |
filters | Body | JSON | 过滤条件 | 否 | 指定过滤条件,包括name,filterType,filterValue name:过滤的列名; filterType:过滤类型;filterValue:过滤值 |
说明:
该api一次最多返回5万行数据,若数据集较大,请指定过滤条件
如果cols和filters都没有指定,则请求返回数据集所有列和行。注意,即使两个参数都没有指定,请求体也不能省略,即{}
其中,filterType支持以下形式: GT (>), GE (>=), LT (<), LE(<=), EQ (==), NE (!=), IN (IN LIST), NI (NOT IN LIST), STARTSWITH, NOT_STARTSWITH, ENDSWITH, NOT_ENDSWITH, CONTAINS, NOT_CONTAINS,
IS_NULL, NOT_NULL
POST Body示例
{ "cols": ["Category", "Item", "Price"], "filters": [ { "name": "Price", "filterType" : "GT", "filterValue" : ["100"] } ] }
Response
{ "result": "ok", "response": { "columns": [ "Category", "Item", "Price" ], "data": [ [ "Electronics", "Apple TV", "200" ], [ "Books", "Red and Black", "128" ], [ "Electronics", "Iphone X", "800" ], [ "Books", "The story of the stone", "256" ], ] } }