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"
}