数据模型
更新时间:2022-11-15
创建数据模型
接口简介
创建数据模型
接口详情
请求地址
/openapi/v1/group/{groupKey}/dataModel?__scp__={__scp__}
请求类型
POST
请求参数
注: menuId 的生成方法: 维度菜单 id(生成方式:'SG' + (+new Date()).toString(36) + Math.floor(Math.random() 10000000 (massive ? 10000 : 1)).toString(36).toUpperCase())
{
config: { // 数据模型详情配置
dbHashes: ["d_ada15-3ormpgf7-p284kv"], // 数据源hash
dimensionMenu: [ // 维度菜单详情
{
menuId: "SGKETQL7WVXW5XM59", // 维度菜单id(生成方式:'SG' + (+new Date()).toString(36) + Math.floor(Math.random() * 10000000 * (massive ? 10000 : 1)).toString(36).toUpperCase())
name: "car_sale", // 维度名称
nodes: ["SG2BD8CC369D73BB81"], // 维度菜单下所有维度(具体配置在dimensions下,每个dimensions的key值对应nodes中的每个id)
type: "menu" // 维度菜单类型(现在只支持menu类型)
}
],
dimensions: { // 维度详情
SG2BD8CC369D73BB81: { // 单个维度节点详情
alias: "车型", // 维度别名
calculated: false, // 是否计算字段
convert: { // 数据类型转换
dataType: "", // 数据类型
label: "", // 标记为地理信息(geo地名/区域、lng经度、lat维度,默认为空)
original: "YYYY-MM-DD", // 日期或时间的源数据格式(YYYY-MM-DD)
type: "" // 转换后数据类型
},
dataType: "string", // 维度数据类型
dataTypeInDB: "varchar", // 数据库中类型
expression: "", // 计算维度表达式
field: "车型", // 维度字段名
hierarchyId: "SGKETWH2V0UEIBHT5", // 层级id
isHidden: false, // 是否隐藏字段
pathIds: [], // 层级下包含的维度id
renameHash: "", // 重命名hash
tableId: "SGKETQL7WR7A35", // 表id
type: "dimension" // 字段类型(dimension维度、measure度量)
}
},
filters: {}, // 数据模型的数据筛选
limits: {
method: "fixed", // 设置方式,fixed固定值、dynamic动态值
fixedLimits: [ // 固定值权限内容
{
contents: [ // 权限内容
{
dimId: "SG2BD8CC369D73BB81",// 所选字段id
list: ["车型1"], // 列表筛选
manual: ["车型1"], // 手动筛选
mode: "list" // 筛选方式
}
],
limitRoles: ["ro_ada15-1i6h64lc-g2vp2r"], // 授权的角色
limitUsers: ["test2@baidu.com"], // 授权的用户
name: "test", // 权限名称
rule: "AND" // 权限规则, AND、OR
}
],
dynamicLimits: [ // 动态值权限内容(固定权限内容二选一)
{
dimId: "SG2BD8CC369D73BB81", // 所选字段id
userAttr: "attr_ada15-8tzmu2jo-p284kv" // 用户属性
}
],
othersLimit: false // 未添加权限的用户默认拥有所有权限
},
measureMenu: [ // 度量菜单详情(可参考度量菜单配置)
{
menuId: "SGKETQL7WVIFNFASG",
name: "car_sale",
nodes: ["SG835BE68135BB6338"],
type: "menu"
}
],
measures: { // 度量详情(配置参考度量)
SG835BE68135BB6338: {
alias: "订单数量",
calculated: false,
convert: {
dataType: "",
label: "",
original: "",
type: ""
},
dataType: "int",
dataTypeInDB: "int",
defaultAggregator: "SUM" // COUNT(计数)、COUNTD(计数(去重))、SUM(求和)、AVG(均值)、MAX(最大值)、MIN(最小值)
expression: "",
field: "订单数量",
format: { // 数据格式化
accuracy: -1, // 小数位数(-1自动、1(1位)、2(2位)、3(3位)、4(4位)、5(5位)、6(6位))
dataFormat: "", // 数据格式化(percent百分比(*100 %)、numFunc数字转万/亿、timeFunc秒转时分秒、byteFunc字节转MB/GB、bpsFunc字节转Mbps(带宽))
unit: "" // 数据单位(%、千克、顿、元)
},
isHidden: false,
tableId: "SGKETQL7WR7A35",
type: "measure"
}
},
synTable: false, // 是否同步表结构(true是、false否)
tables: [ // 表连接相关配置
{
customTableHash: "", // 自定义表的hash
dbHash: "d_ada15-3ormpgf7-p284kv", // 数据源hash
join: { // 表关联关系
leftTableId: "", // 左表id
on: [ // 关联条件设置
{
leftField: "", // 左侧关联字段
rightField: "" // 右侧关联字段
}
],
type: "inner", // 表连接方式(inner内连接、left左连接、full(full join),默认为内连接)
},
level: 1, // 表在第几层
tableId: "SGKETQL7WR7A35", // 表ID
tableName: "car_sale" // 表名
}
]
},
databaseHash: "d_ada15-3ormpgf7-p284kv" // 数据源hash
name: "层级测试3", // 数据模型名称
remark: "", // 描述
source_hash: "", // 资源的hash
type: 1 // 数据模型是多层文件夹模式时,1表示数据模型,0表示文件夹
}
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
name | String | 是 | 数据模型名称 | - | - |
databaseHashes | String | 是 | 数据源 hash | - | - |
source_hash | String | 是 | 资源的 hash | - | - |
remark | String | 否 | 数据模型描述 | - | - |
type | Number | 是 | 数据模型是多层文件夹模式时,1 表示数据模型,0 表示文件夹 | 1 | 1 |
config | Object | 是 | 数据模型详情配置(详细描述见下方) | - | - |
config 配置描述
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
dbHashes | Array | 是 | 数据源 hash | - | ["d_ada15-3ormpgf7-p284kv"] |
dimensionMenu | Array | 是 | 维度数据(详细描述见下方) | - | - |
dimensions | Object | 否 | 维度详情(详细描述见下方) | - | - |
measureMenu | Array | 是 | 维度数据(详细描述见下方) | - | - |
measures | Object | 是 | 维度详情(详细描述见下方) | - | - |
tables | Array | 是 | 表结构详情(详细描述见下方) | - | - |
synTable | Boolean | 是 | 是否同步表结构(true 同步,false 不同步) | false | false/true |
filters | Object | 否 | 数据模型数据筛选器配置(详细描述见数据筛选) | - | - |
limits | Array | 否 | 数据行权限设置(详细描述见下方) | - | - |
dimensionMenu/measureMenu 配置描述
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
type | String | 是 | 菜单类型(现在只支持 menu 类型) | menu | menu |
menuId | String | 是 | 菜单 id(生成方式:'SG' + (+new Date()).toString(36) + Math.floor(Math.random() 10000000 (massive ? 10000 : 1)).toString(36).toUpperCase()) | - | SGKETQL7WVXW5XM59 |
name | String | 是 | 名称 | - | car_sale |
nodes | Array | 是 | 维度菜单下所有维度 | - | ["SG2BD8CC369D73BB81"] |
dimension/measure 配置描述
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
alias | String | 是 | 维度别名 | - | 车型 |
calculated | Boolean | 是 | 是否计算字段(false 否、true 是) | false | false |
convert | Object | 是 | 数据类似转换(详细描述见下方) | - | - |
format | Object | 是 | 维度数据格式化(详细描述见下方) | - | - |
dataType | String | 是 | 维度数据类型(string 字符类型、int 整数类型、float 小数类型、timestamp 时间戳类型、date 日期类型、dateTime 日期时间类型) | string | string |
dataTypeInDB | String | 是 | 数据库中类型 | - | varchar |
expression | String | 是 | 计算维度表达式 | - | varchar |
field | String | 是 | 维度字段名 | - | 车型 |
hierarchyId | String | 是 | 层级 id | - | SGKETWH2V0UEIBHT5 |
isHidden | Boolean | 是 | 是否隐藏字段 | false | false |
pathIds | Array | 是 | 层级下包含的维度 id | - | ["SG2BD8CC369D73BB81"] |
renameHash | String | 是 | 重命名 hash | - | SGKETWH2V0UEIBHT5 |
tableId | String | 是 | 表 id | - | SGKETQL7WR7A35 |
type | String | 是 | 字段类型(dimension 维度、measure 度量) | - | dimension |
convert 数据类型转换配置描述
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
dataType | String | 是 | 数据类型 | - | string |
label | String | 是 | 标记为地理信息(geo 地名/区域、lng 经度、lat 维度,默认为空) | - | geo |
original | String | 是 | 日期或时间的源数据格式(日期:YYYY-MM-DD、YYYY/MM/DD、YYYYMMDD、MM-DD-YYYY、MM/DD/YYYY 时间:YYYY-MM-DD HH:mm:ss、YYYY/MM/DD HH:mm:ss、YYYYMMDD HH:mm:ss、MM-DD-YYYY HH:mm:ss、MM/DD/YYYY HH:mm:ss) |
- | YYYY-MM-DD |
type | String | 是 | 转换后数据类型 | - | string |
format 维度数据格式化配置描述
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
accuracy | String | 是 | 小数位数(-1 自动、1(1 位)、2(2 位)、3(3 位)、4(4 位)、5(5 位)、6(6 位)) | -1 | -1 |
dataFormat | String | 是 | 数据格式化(percent 百分比(*100 %)、numFunc 数字转万/亿、timeFunc 秒转时分秒、byteFunc 字节转 MB/GB、bpsFunc 字节转 Mbps(带宽)) | - | percent |
unit | String | 是 | 数据单位(%、千克、顿、元) | - | % |
limits 数据行权限配置描述
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
method | String | 是 | 设置方式,fixed 固定值、dynamic 动态值 | fixed | fixed |
fixedLimits | Array | 否 | 固定值权限内容,与动态值权限内容二选一(详细描述见下方) | - | - |
dynamicLimits | Array | 否 | 动态值权限内容,与固定值权限内容二选一(详细描述见下方) | - | - |
othersLimit | Boolean | 否 | 未添加权限的用户默认拥有所有权限 | false | false |
fixedLimits 固定值权限配置描述
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
name | String | 是 | 权限名称 | - | - |
rule | String | 是 | 权限规则, AND、OR | AND | AND |
contents | Array | 否 | 权限内容(详细描述见下方) | - | - |
limitUsers | Array | 否 | 授权的用户 | - | ["test2@baidu.com"] |
limitRoles | Array | 否 | 授权的角色 | - | ["ro_ada15-1i6h64lc-g2vp2r"] |
contents 固定值权限内容配置描述
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
dimId | String | 是 | 所选字段 id | - | - |
list | Array | 否 | 列表筛选 | - | ["车型 1"] |
manual | Array | 否 | 手动筛选 | - | ["车型 1"] |
mode | String | 否 | 筛选方式,list 列表筛选、manual 手动筛选 | - | - |
dynamicLimits 动态值权限内容配置描述
参数名 | 类型 | 必填 | 描述 | 默认值 | 参考值 |
---|---|---|---|---|---|
dimId | String | 是 | 所选字段 id | - | SG2BD8CC369D73BB81 |
userAttr | String | 是 | 用户属性 | - | attr_ada15-8tzmu2jo-p284kv |
返回正确 JSON 示例
{
data: {
config: {
dbHashes: ['d_ada15-3ormpgf7-p284kv'] // 数据源hash
},
databaseHashes: "d_ada15-3ormpgf7-p284kv" // 数据源hash
hash: "mld_ada15-2squl3ny-b1yqnx", // 数据模型的hash
hierarchy_level: 1, // 层级level
name: "层级测试3", // 数据模型名称
order_index: 85, // 同级的顺序编号
parent_id: 0, // 父元素id
remark: "", // 描述
source_hash: "", // 资源的hash
type: 1 // 数据模型是多层文件夹模式时,1表示数据模型,0表示文件夹
},
msg: '',
status: 0
}
返回错误 JSON 示例
{
msg: '错误详情',
status: 499,
requestId: '',
code: 'NoSuchKey'
}
编辑数据模型
接口简介
编辑数据模型
接口详情
请求地址
/openapi/v1/group/{groupKey}/dataModel/{dataModelHash}?__scp__={__scp__}
请求类型
PUT
请求参数
同创建数据模型,参考创建数据模型
返回正确 JSON 示例
{
data: {
config: {
dbHashes: ['d_ada15-3ormpgf7-p284kv'] // 数据源hash
},
databaseHashes: "d_ada15-3ormpgf7-p284kv" // 数据源hash
hash: "mld_ada15-2squl3ny-b1yqnx", // 数据模型的hash
hierarchy_level: 1, // 层级level
name: "层级测试3", // 数据模型名称
order_index: 85, // 同级的顺序编号
parent_id: 0, // 父元素id
remark: "", // 描述
source_hash: "", // 资源的hash
type: 1 // 数据模型是多层文件夹模式时,1表示数据模型,0表示文件夹
},
msg: '',
status: 0
}
返回错误 JSON 示例
{
msg: '错误详情',
status: 499,
requestId: '',
code: 'NoSuchKey'
}
删除数据模型
接口简介
删除数据模型
接口详情
请求地址
/openapi/v1/group/{groupKey}/dataModel/{dataModelHash}?__scp__={__scp__}
请求类型
DELETE
请求参数
无
返回正确 JSON 示例
{
data: {},
msg: '',
status: 0
}
返回错误 JSON 示例
{
msg: '错误详情',
status: 499,
requestId: '',
code: 'NoSuchKey'
}
获取数据模型列表
接口简介
获取数据模型列表
接口详情
请求地址
/openapi/v1/group/{groupKey}/dataModel/treeList?__scp__={__scp__}
请求类型
GET
请求参数
无
返回正确 JSON 示例
{
data: [
{
database: "sugar_internal_demo--MySQL 5.X", // 数据源名称
databaseHashes: "d_ada15-bs5raut1-9kqzkx", // 数据源hash
hash: "mld_ada15-9c2ccod1-46jxow4", // 数据模型hash
name: "BI", // 数据模型名称
type: 1, // 数据库类型
user: "test" // 用户名
}
],
msg: '',
status: 0
}
返回错误 JSON 示例
{
msg: '错误详情',
status: 499,
requestId: '',
code: 'NoSuchKey'
}