创建指标
接口描述
本接口适用于在指标管理系统中新建指标。
接口URL
POST Http://{anymetrics_host:anymetrics_port}/anymetrics/api/v1/metrics/create
anymetrics_host:anymetrics_port 获取方式请参考:调用方式
请求参数
|
|
|
|
|
| 参数 |
类型 |
是否必选 |
最大长度 |
描述 |
| tenant-id |
String |
是 |
32 |
租户ID,用于指标查询内容所在的租户 |
| auth-type |
String |
是 |
32 |
认证方式,用于设置身份认证方式 UID:使用 UID 进行身份认证TOKEN:使用 TOKEN 进行身份认证 |
| auth-value |
String |
是 |
32 |
UID或者TOKEN值,与auth-type 类型选择一致 |
公共参数获取方式
tenant-id 与 auth-value:在 Aloudata CAN 顶部导航栏选择指标应用,左边菜单栏选择 API 集成。在 API 集成界面获取取到tenant-id 与auth-value。

请求参数
请求参数说明
|
|
|
|
|
| 参数 |
类型 |
最大长度 |
是否必选 |
描述 |
| metricName |
String |
128 |
是 |
指标英文名唯一标识,不可修改,仅支持英文、下划线、数字和空格 |
| metricDisplayName |
String |
128 |
否 |
指标中文名,支持任意字符 |
| businessCaliber |
String |
300 |
否 |
业务口径 |
| type |
String |
|
是 |
指标类型是一个枚举类型ATOMIC:原子指标DERIVED:派生指标COMPOSITE:复合指标 |
| owner |
String |
|
是 |
负责人的用户id |
| businessOwner |
String |
|
是 |
业务负责人的用户id |
| caliber |
object |
|
是 |
指标计算口径,每种指标的计算口径见: 指标计算口径说明 |
| unit |
String |
|
否 |
指标展示的单位,枚举类型,枚举值说明参见: 指标单位参数说明 |
| metricCategoryId |
String |
|
否 |
类目 ID。“未分类”类目为系统内置的,categoryId为"-1"。如果不传,默认是“未分类”。 |
| basicAttributes |
Map |
|
否 |
基础属性 |
| businessAttributes |
Map |
|
否 |
业务属性 |
| technicalAttributes |
Map |
|
否 |
技术属性 |
| managementAttributes |
Map |
|
否 |
管理属性 |
指标计算口径说明
原子指标计算口径说明
|
|
|
|
| 参数 |
类型 |
是否必选 |
描述 |
| datasetName |
String |
是 |
数据集名称 |
| expr |
String |
是 |
表达式 |
| filters |
Array[Object] |
否 |
过滤条件,详细方式见上述公共参数说明 |
| metricTime |
Date/DateTime |
是 |
指标时间 |
| enableNonAdditiveDimensions |
Bool |
否 |
是否开启半累加维度 |
| nonAdditiveDimensions |
Object |
否 |
半累加维度。具体参数说明请参见: nonAdditiveDimensions 参数说明 |
nonAdditiveDimensions 参数说明
|
|
|
|
| 参数 |
类型 |
是否必选 |
描述 |
| dimensions |
Array[String] |
是 |
不可累加维度 |
| windowChoice |
String |
是 |
窗口选择。最大值:max ,最小值:min |
| windowGroupings |
Array[String] |
否 |
窗口分组。计算指标聚合时,会预先将数据按照窗口分组的字段进行分组,在分组后的数据内根据窗口选择进行数据的过滤 |
派生指标计算口径说明
|
|
|
|
|
|
| 参数 |
类型 |
是否必选 |
最大长度 |
描述 |
示例值 |
| refMetricName |
String |
是 |
32 |
引用的原子指标名称 |
|
| period |
Array[Object] |
否 |
|
统计周期见:详情请参见 : 统计周期说明 |
|
| filters |
Array[Object] |
否 |
|
过滤条件,详细方式见上述公共参数说明 |
|
| preAggs |
Array[Object] |
否 |
|
预聚合方式,比如统计周期为近7天时,选择日均,那么在计算时会先算出每一天的指标值,然后计算7天的平均值 |
|
| indirection |
衍生方式 |
|
|
衍生方式,目前支持:同环比、占比、排名和自定义维度组合。具体每一种衍生方式的配置参见: 衍生方式配置 |
|
复合指标计算口径说明
"caliber": {
"expr": "[GeYpElmCMBtZehtg]/[metric2]", /*引用的原始指标名称,名称为临时派生中的指标名称。若没有临时派生指标则名称为原始指标的名称 */
"metricDefinitions": {/*临时派生 */
"GeYpElmCMBtZehtg": {/*/*临时派生指标名称建议使用16位uuid */ */
"refMetricCode": "sum_rmb",/*实际引用的原始指标名称 */
"period": { /*时间限定*/
"type": "RELATIVE_DATE",
"periodGrain": null,
"onlyContainsDateTag": null,
"typeParams": "0 day of 0 day",
"customDateTag": null,
"granularity": "DAY"
},
"filters": [ /*业务限定 */
{
"type": "EXPR",
"periodGrain": null,
"onlyContainsDateTag": null,
"expr": "NotNull(['is_weekend'])"
}
],
"preAggs": null, /*聚合方式 */
"indirection": { /*衍生计算 */
"type": "SAME_PERIOD",
"samePeriodType": "VALUE",
"granularity": null,
"offset": {
"granularity": "YEAR",
"offset": -1,
"dateTag": null,
"specifyDateInPeriod": null
}
},
"dimensionConfig": { /*因子指标可用维度设定 */
"isNewDimensionDefaultEnable": true,
"disableDimensions": [
"is_weekend"
],
"availableDimensions": null,
"factorDimensions": null
},
"displayName": null /*展示名称 */
}
}
}
|
|
|
|
|
|
| 参数 |
子参数 |
类型 |
是否必选 |
描述 |
示例值 |
| expr |
|
String |
是 |
复合指标计算逻辑 |
"[GeYpElmCMBtZehtg]/[sum_PZJERMB]+1" |
| metricDefinitions |
|
Map |
否 |
|
|
|
refMetricCode |
String |
是 |
引用的指标名称 |
|
|
period |
Array[Object] |
否 |
统计周期见:详情请参见 统计周期说明 |
|
|
filters |
Array[Object] |
否 |
过滤条件,详细方式见上述公共参数说明 |
|
|
preAggs |
Array[Object] |
否 |
预聚合方式,比如统计周期为近7天时,选择日均,那么在计算时会先算出每一天的指标值,然后计算7天的平均值 |
|
|
indirection |
衍生方式 |
否 |
衍生方式,目前支持:同环比、占比、排名和自定义维度组合。具体每一种衍生方式的配置参见: 衍生方式配置 |
|
|
displayName |
String |
否 |
临时定义指标的展示名 |
|
|
dimensionConfig |
Object |
是 |
临时定义指标的可分析维度设置 |
见下面“临时定义维度设置” |
临时定义维度设置
|
|
|
|
|
|
| 参数 |
类型 |
是否必选 |
最大长度 |
描述 |
示例值 |
| isNewDimensionDefaultEnable |
boolean |
是 |
|
新增维度是否默认可用,默认为true |
true/false |
| publicDimension |
Object |
否 |
|
公共维度配置 |
见下面“公共维度配置” |
公共维度配置
| 参数 |
类型 |
是否必选 |
最大长度 |
描述 |
示例值 |
| availableDimensionNames |
List |
是 |
|
启用维度,仅isNewDimensionDefaultEnable设置为false时设置 |
["address","sex"] |
| disableDimensionNames |
List |
是 |
|
禁用维度,仅isNewDimensionDefaultEnable为true时设置 |
["product_unit_price_add_2"] |
统计周期说明:
见派生指标时间限定定义
衍生方式配置
| 参数 |
是否必选 |
最大长度 |
描述 |
示例值 |
| type |
是 |
|
衍生方式,枚举值,目前支持:SAMEPERIOD:同环比RANK:排名PROPORTION:占比CUSTOMAGG:自定义维度组合 |
|
同环比衍生方式配置
| 类型 |
是否必选 |
最大长度 |
描述 |
示例值 |
| samePeriodType |
是 |
|
同环比类型,枚举值,目前支持:VALUE:同比值GROWTHVALUE:同比增长值GROWTH:同比增长率 |
|
| granularity |
是 |
|
同环比粒度,枚举值,目前支持:DAY:天WEEK:周MONTH:月QUARTER:季度YEAR:年 |
|
占比衍生配置
| 类型 |
是否必选 |
最大长度 |
描述 |
示例值 |
| proportionRanges |
否 |
|
占比范围,表示计算占比的分母时所用的维度,如果在这里配置了这个参数,那么在分析时必须带上这个维度分析。如果是指标日期,用“metric_time”。例子:占比范围为“省”,指标为订单量,分析时的维度为省市区,那么这个指标算的是,每个区占全省订单量的比例 |
|
| proportionDimensions |
否 |
|
占比维度。如果配置了占比维度,则在查询时必须带上这个维度。表示的含义是:如果筛选中有这个维度的筛选,那么在算分母时忽略这个筛选。例子:江苏省有南京市和苏州市两个市的订单量,分别为10和40占比范围:省占比维度:市如果筛选中选择city=苏州,那么苏州占比为80%如果占比维度没有市,那么占比为100% |
|
排名衍生配置
| 类型 |
是否必选 |
最大长度 |
描述 |
示例值 |
| rankRanges |
否 |
|
排名范围。表示计算排名的窗口 |
|
| rankDimensions |
|
|
排名维度。与占比指标的占比维度类似,如果筛选中有这个维度的筛选,那么计算排名时会忽略这个筛选 |
|
| rankType |
|
|
排序类型,枚举RANK_DENSE:1、1、2、3RANK:1、1、3、4ROW_NUMBER:1、2、3、4 |
|
| asc |
|
|
是否升序true:在窗口内,升序排序false:在窗口内,降序排序 |
|
自定义维度组合配置
| 类型 |
是否必选 |
最大长度 |
描述 |
示例值 |
| dimensions |
是 |
|
维度组合包括维度名称和相应粒度(仅时间维度会有粒度) |
|
| calculateType |
是 |
|
计算方式,枚举MAX:最大值MIN:最小值AVG:平均值 |
|
示例
{
"indirection": {
"customDimensionGroups": [
{
"calculateType": "MAX",
"dimensions": [
{
"granularity": "DAY",
"name": "fl_order_order_date"
}
]
},
{
"calculateType": "AVG",
"dimensions": [
{
"name": "fl_order_province"
}
]
},
{
"calculateType": "MIN",
"dimensions": [
{
"name": "fl_order_city"
}
]
}
],
"type": "CUSTOM_AGG"
}
}
指标单位参数说明
|
|
|
| 类别 |
单位代码 |
描述 |
| 货币单位 |
CNY_FEN |
分 |
| CNY_YUAN |
元 |
|
| CNY_WAN |
万元 |
|
| CNY_BAI_WAN |
百万元 |
|
| CNY_YI_YUAN |
亿元 |
|
| USD_CENT |
美分 |
|
| USD_DOLLAR |
美元 |
|
| EUR_EURO |
欧元 |
|
| HKD_DOLLAR |
港元 |
|
| 时间单位 |
DAY |
天 |
| MONTH |
月 |
|
| WEEK |
周 |
|
| YEAR |
年 |
|
| HOUR |
时 |
|
| MINUTE |
分 |
|
| SECOND |
秒 |
|
| QUARTER |
季度 |
|
| MILLISECOND |
毫秒 |
|
| 比例单位 |
DECIMAL |
小数 |
| PERCENTAGE |
百分位数 |
|
| PERMILLE |
千分位数 |
|
| 名词 |
RANK |
排名 |
| 对象量次 |
HOUSEHOLD |
户 |
| TRANSACTION |
笔 |
|
| ITEM |
件 |
|
| INDIVIDUAL |
个 |
|
| OCCURRENCE |
次 |
|
| PERSON_DAY |
人日 |
|
| FAMILY |
家 |
|
| HAND |
手 |
|
| SHEET |
张 |
|
| PACKAGE |
包 |
|
| 重量单位 |
TON |
吨 |
| KILOGRAM |
公斤 |
|
| 其他 |
OTHER |
其他 |
响应参数
|
|
|
|
|
| 参数 |
类型 |
是否必选 |
最大长度 |
描述 |
| code |
String |
是 |
32 |
接口响应码 |
| message |
String |
是 |
512 |
消息体 |
| traceId |
String |
是 |
128 |
traceId |
| data |
object |
是 |
|
响应结果集 |
| result |
Boolean |
是 |
|
新建是否成功 |
示例
示例 1:创建原子指标
{
"type": "ATOMIC",
"metricDisplayName": "订单量_自定义聚合函数5",
"metricName": "ordercount_3",
"owner": "correctness_test_qq",
"businessOwner": "correctness_test_qq",
"businessCaliber": "这是openAPI创建的指标1",
"metricCategoryId": "-1",
"unit": "OTHER",
"caliber": {
"datasetName": "can_order",
"expr": "count(['can_order'/'order_id'])",
"metricTime": "order_date",
"filters": [
{
"type": "EXPR",
"expr": "IN(['can_product'/'brand_name'],\"华为\")"
}
]
},
"basicAttributes": null,
"businessAttributes": null,
"technicalAttributes": null,
"managementAttributes": null
}
{
"data": true,
"success": true,
"code": "200",
"errorMsg": null,
"detailErrorMsg": null,
"traceId": "f6e656798ed241c789f7132823c46c6b.142.17194027744320363"
}
示例 2:创建半累加指标
{
"metricName": "sales_volume",
"metricDisplayName": "销售量",
"businessCaliber": "销售业务口径",
"type": "ATOMIC",
"owner": "correctness_test_qq",
"businessOwner": "correctness_test_qq",
"caliber": {
"datasetName": "can_order",
"expr": "sum(['can_order'/'order_amt'])",
"filters": [
{
"type": "EXPR",
"expr": "IN(['can_product'/'brand_name'],\"华为\")"
}
],
"metricTime": "order_date",
"enableNonAdditiveDimensions": true,
"nonAdditiveDimensions": {
"dimensions": [
"order_date"
],
"windowChoice": "MAX",
"windowGroupings": [],
"fingerPrint": "order_date|MAX||"
}
},
"unit": "OTHER",
"metricCategoryId": "-1",
"basicAttributes": {},
"businessAttributes": {},
"technicalAttributes": {},
"managementAttributes": {}
}
{
"data": true,
"success": true,
"code": "200",
"errorMsg": null,
"detailErrorMsg": null,
"traceId": "f6e656798ed241c789f7132823c46c6b.147.17194745548850787"
}
示例 3:创建派生指标(占比)
{
"type": "DERIVED",
"metricName": "cyl0year_ordercount_3",
"metricDisplayName": "派生指标占比",
"businessCaliber": "派生指标",
"owner": null,
"businessOwner": "correctness_test_qq",
"caliber": {
"refMetricCode": "ordercount_3",
"period": {
"type": "TO_DATE",
"typeParams": "-29 day of 0 day"
},
"preAggs": [
{
"granularity": "DAY",
"calculateType": "AVG"
}
],
"indirection": {
"type": "PROPORTION",
"proportionRanges": [
"can_order_region"
],
"proportionDimensions": [
"can_shop_city"
]
}
},
"unit": "OTHER",
"metricCategoryId": "-1",
"basicAttributes": null,
"businessAttributes": null,
"technicalAttributes": null,
"managementAttributes": null
}
- 响应
{
"data": true,
"success": true,
"code": "200",
"errorMsg": null,
"detailErrorMsg": null,
"traceId": "f6e656798ed241c789f7132823c46c6b.142.17194782690870941"
}
示例 3: 创建复合指标
{
"type": "COMPOSITE",
"metricName": "apitest",
"metricDisplayName": "apitest",
"owner": "can1",
"businessOwner": "can1",
"unit": "OTHER",
"businessCaliber": "这是一个文档实例复合指标",
"caliber": {
"expr": "[GeYpElmCMBtZehtg]/[sum_PZJERMB]", /*GeYpElmCMBtZehtg 指标引用至下方中的临时派生指标。sum_PZJERMB为原始指标名称 */
"metricDefinitions": {
"GeYpElmCMBtZehtg": { /*临时派生指标名称建议使用16位uuid */
"refMetricCode": "sum_rmb",
"period": {
"type": "RELATIVE_DATE",
"periodGrain": null,
"onlyContainsDateTag": n ull,
"typeParams": "0 day of 0 day",
"customDateTag": null,
"granularity": "DAY"
},
"filters": [
{
"type": "EXPR",
"periodGrain": null,
"onlyContainsDateTag": null,
"expr": "NotNull(['is_weekend'])"
}
],
"preAggs": null,
"indirection": {
"type": "SAME_PERIOD",
"samePeriodType": "VALUE",
"granularity": null,
"offset": {
"granularity": "YEAR",
"offset": -1,
"dateTag": null,
"specifyDateInPeriod": null
}
},
"dimensionConfig": {
"isNewDimensionDefaultEnable": true,
"disableDimensions": [
"is_weekend"
],
"availableDimensions": null,
"factorDimensions": null
},
"displayName": null
}
}
},
"metricCode": "api_up_radio2",
"basicAttributes": {
},
"businessAttributes": {
},
"technicalAttributes": {
},
"managementAttributes": {
}
}
{
"type": "COMPOSITE",
"metricName": "api_up_radio2",
"metricDisplayName": "api_up_radio2",
"owner": "can1",
"businessOwner": "can1",
"unit": "OTHER",
"businessCaliber": "jingmingdfa",
"caliber": {
"expr": "[totalCcount]/[idCount]" /*两个指标都为原始指标引用 */ },
"metricCode": "api_up_radio2",
"basicAttributes": {
},
"businessAttributes": {
},
"technicalAttributes": {
},
"managementAttributes": {
}
}
{
"data": true,
"success": true,
"code": "200",
"errorMsg": null,
"detailErrorMsg": null,
"traceId": "9644bd804e2747088086bb04730e20ba.144.17194894357700043"
}