1. 从表数据集
1.1. 从表数据集说明
1.1.1. 从表数据集定义
需要用某个数据集 b 扩充数据集 a 的字段时,需要创建一个从表数据集 c ,从表数据集 c 的主表是 a,基础表是 b。从表数据集是对一个数据集的引用,只存在于主表的关系中,不可独立使用。
从表数据集结构说明
从表数据集结构和数据集的结构基本相同,详情见数据集结构说明。下表列出从表数据集的特殊结构。 | 字段 | 类型 | 描述 | |---------------------------------------|------------|--------------------------| | options.extendOptions | OBJECT | 从表数据集的引用定义 | | options.extendOptions.baseId | INTEGER | 从表数据集的基础数据集 | | options.extendOptions.upstreamId | INTEGER | 从表数据集的上游数据集,可以是主表或者其它从表数据集 | | options.extendOptions.joinType | STRING | 上游数据集与从表数据集的多表联合关系,见多表联合类型 | | options.extendOptions.joinExpr | HE | 多表联合的关联表达式 | | options.extendOptions.cardinality | OBJECT | 上游数据集对当前数据集的基数关系,见关联关系基数说明 |
多表联合类型说明
状态值 | 意义 |
---|---|
LEFT_JOIN | 左联接 |
RIGHT_JOIN | 右联接 |
INNER_JOIN | 内联接 |
FULL_JOIN | 全联接 |
CROSS_JOIN | 交叉联接 |
LEFT_LOOP_JOIN | 左嵌套循环联接,sql server 数据集特有的 |
关联关系基数说明
状态值 | 意义 |
---|---|
ONE_TO_ONE | 1 对 1 |
ONE_TO_MANY | 1 对 多 |
MANY_TO_ONE | 多 对 1 |
MANY_TO_MANY | 多 对 多 |
1.2. 接口说明
1.2.1. 创建从表数据集
请求URL
POST /api/apps/{appId}/extend-datasets
需要认证:是
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
appId | INTEGER | 是 | 指定在appId对应的应用中创建数据集 |
Request Body 参数
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 见从表数据集结构说明 |
接口示例: 创建从表数据集
POST /api/v1/apps/1/extend-datasets
{
"options":{
"extendOptions":{
"baseId":2,
"upstreamId":1,
"joinType":"LEFT_JOIN",
"joinExpr":{"kind":"function","op":"=","args":[{"kind":"field","op":"id","dataset":1},{"kind":"field","op":"id"}]}
}
},
"mainDataset":1
}
返回
{
"version": "3.2-SNAPSHOT@@git.commit.id.abbrev@#null",
"data": {
"id": 3,
"createdBy": 1,
"createdAt": "2020-05-21 11:22:58",
"updatedBy": 1,
"updatedAt": "2020-05-21 11:22:58",
"appId": 1,
"options": {
"extendOptions": {
"baseId": 2,
"upstreamId": 1,
"joinType": "LEFT_JOIN",
"joinExpr": {
"kind": "function",
"op": "=",
"args": [
{
"kind": "field",
"op": "id",
"dataset": 1
},
{
"kind": "field",
"op": "id"
}
]
}
}
},
"datasetAcl": {
"level": "FULLACCESS",
"dataFilters": []
},
"mainDataset": 1
}
}
1.2.2. 查询主表数据集的从表数据集列表
请求URL
GET /api/apps/{appId}/extend-datasets/{datasetId}
需要认证:是
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
appId | INTEGER | 是 | 指定在appId对应的应用中创建数据集 |
datasetId | INTEGER | 是 | 指定主表数据集ID |
joinExcept | STRING | 否 | 是否需要从表数据集的schema信息,默认是需要,不需要就传 schema |
needMainDataset | BOOL | 否 | 是否需要主表信息,默认是否, 需要就传true |
needHideField | BOOL | 否 | 是否需要隐藏字段,默认是是, 不需要隐藏字段就传否 |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 见从表数据集结构说明 |
接口示例: 查询主表数据集的从表数据集列表
GET /api/v1/apps/1/extend-datasets/1?joinExcept=schema&needMainDataset=true
返回
{
"version": "3.2-SNAPSHOT@@git.commit.id.abbrev@#null",
"data": [
{
"id": 3,
"title": "2",
"appId": 2613,
"options": {
"cache": false,
"totalSize": 0,
"rowCount": 0,
"refreshHours": [],
"refreshMinute": 0,
"transpose": false,
"header": 0,
"padHeader": false,
"extendOptions": {
"baseId": 2,
"upstreamId": 1,
"joinType": "LEFT_JOIN",
"joinExpr": {
"kind": "function",
"op": "=",
"args": [
{
"op": "id",
"kind": "field",
"dataset": 1
},
{
"op": "id",
"kind": "field"
}
]
}
},
"metrics": [],
"schema": []
},
"datasetAcl": {
"level": "FULLACCESS",
"dataFilters": []
},
"hsVersion": 0,
"mainDataset": 1,
"importSwitchable": false,
"refreshSchema": true,
"emptyDataset": false
},
{
"id": 1,
"title": "A_IVT_MOVIE",
"createdBy": 1,
"createdAt": "2020-05-21 11:02:56",
"updatedBy": 1,
"updatedAt": "2020-05-21 11:02:57",
"visible": true,
"appId": 2613,
"options": {
"cache": false,
"type": "connection",
"totalSize": 57404,
"rowCount": 250,
"rowCountValid": true,
"connectionTitle": "250-pg",
"refreshHours": [],
"refreshMinute": 0,
"connectionId": 261,
"connectionCategory": "Database",
"origin": "postgresql",
"table": "A_IVT_MOVIE",
"path": [
"public"
],
"transpose": false,
"header": 0,
"padHeader": false,
"storageType": "postgresql",
"dialectOptions": {
"dialectName": "PostgresqlDialect",
"majorVersion": 10,
"minorVersion": 4
},
"storageConnectionId": 261,
"storageConnectionTitle": "250-pg",
"metrics": []
},
"importType": 0,
"importStatus": 0,
"importOptions": {},
"status": 3,
"refreshStats": {
"refreshAt": "2020-05-21 11:02:57",
"executeRefreshAt": "2020-05-21 11:02:57",
"executeRefreshRowCountAt": 1590030177503
},
"datasetAcl": {
"level": "FULLACCESS",
"dataFilters": []
},
"hsVersion": 5,
"creator": {
"id": 1,
"name": "trial",
"email": "trial@hengshi.io"
},
"updater": {
"id": 1,
"name": "trial",
"email": "trial@hengshi.io"
},
"importSwitchable": false,
"type": "connection",
"refreshSchema": false,
"origin": "postgresql",
"public": true,
"emptyDataset": false
}
]
}
1.2.3. 编辑从表数据集
请求URL
PUT /api/apps/{appId}/extend-datasets/{datasetId}
需要认证:是
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
appId | INTEGER | 是 | 指定从表数据集所在的 appId |
datasetId | INTEGER | 是 | 指定从表数据集的 id |
Request Body 参数
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 从表数据集的id |
接口示例: 编辑从表数据集
PUT /api/v1/apps/1/extend-datasets/3
{
"options":{
"extendOptions":{
"baseId":2,
"upstreamId":1,
"joinType":"LEFT_JOIN",
"joinExpr":{"kind":"function","op":"=","args":[{"kind":"field","op":"id","dataset":1},{"kind":"field","op":"id"}]}
}
},
"mainDataset":1,
"title":"电影1"
}
返回
{
"version": "3.2-SNAPSHOT@@git.commit.id.abbrev@#null",
"data": 3
}
1.2.4. 删除从表数据集
请求URL
DELETE /api/apps/{appId}/extend-datasets/{datasetId}
需要认证:是
请求参数
URL 参数
字段 | 类型 | 是否必须 | 说明 |
---|---|---|---|
appId | INTEGER | 是 | 指定从表数据集所在的 appId |
datasetId | INTEGER | 是 | 指定从表数据集的 id |
返回对象的格式说明
字段 | 类型 | 说明 |
---|---|---|
version | STRING | 当前系统版本哈希值 |
data | OBJECT | 成功 或者 失败 |
接口示例: 删除从表数据集
DELETE /api/v1/apps/1/extend-datasets/{datasetId}
返回
{
"version": "3.2-SNAPSHOT@@git.commit.id.abbrev@#null",
"code": 0,
"msg": "success"
}