跳转至

创建指标

接口描述

本接口适用于在指标管理系统中新建指标。

版本支持

本文接口契约适用于 CAN 发布版本:V1.62.10+V2.3.0+

接口URL

POST Http://{anymetrics_host:anymetrics_port}/anymetrics/api/v1/metrics/createV2

anymetrics_host:anymetrics_port 获取方式请参考:调用方式

请求参数

公共请求参数(HEADERS)

参数 类型 是否必选 描述
tenant-id String 租户ID,用于指标查询内容所在的租户
auth-type String 认证方式。支持 UIDTOKENACCOUNTAPIKEY
auth-value String auth-type 对应的认证值

公共参数获取方式

tenant-id 可在 Aloudata CAN 顶部导航栏选择指标应用,左边菜单栏选择 API 集成,在 API 集成界面获取;auth-value 请按 auth-type 填写对应认证值。

请求参数

请求参数说明

参数 类型 是否必选 说明
metricName String 指标英文标识,映射到代码中的 enDisplayName。发布时必填,长度不超过 120。代码校验正则为 ^[a-z0-9A-Z_(\\-)]{1,128}$
metricDisplayName String 指标展示名称,发布时必填,长度不超过 120
metricCode String 指标编码。若租户开启指标编码相关能力,建议始终传入;长度不超过 120
type String 指标类型。当前接口实际支持:ATOMICDERIVEDCOMPOSITE
owner String 技术负责人账号 account,接口内部会转换为用户 userId
businessOwner String 业务负责人账号 account,接口内部会转换为用户 userId
businessCaliber String 业务口径,长度不超过 5000
caliber Object 指标计算口径,按指标类型区分,见下文
unit String 指标单位,见“指标单位枚举”
metricCategoryId String 类目 ID。不传时默认 -1,表示“未分类”
isPublish Boolean 是否直接发布。true:发布;false:保存草稿。默认 true
isNewDimensionDefaultEnable Boolean 新增维度是否默认可用,作用于当前指标
availableDimensions Array[String] 当前指标显式启用的维度列表
disableDimensions Array[String] 当前指标显式禁用的维度列表
basicAttributes Map[String, Object] 基础属性
businessAttributes Map[String, Object] 业务属性
technicalAttributes Map[String, Object] 技术属性
managementAttributes Map[String, Object] 管理属性

指标计算口径

1. 原子指标 ATOMIC

参数 类型 是否必选 说明
datasetName String 数据集名称
expr String 聚合表达式
filters Array[Object] 业务限定列表,建议参考:业务限定
metricTime String 指标时间字段名。字段必须存在于 datasetName 中,且字段类型必须为 DATEDATE_TIMEDATETIMETIMESTAMP
enableNonAdditiveDimensions Boolean 是否开启半累加维度
nonAdditiveDimensions Array[Object] 半累加维度配置

nonAdditiveDimensions 参数说明

参数 类型 是否必选 说明
dimensions Array[String] 半累加维度列表
windowChoice String 窗口聚合方式。代码模型为 AggType,半累加场景通常使用 MAXMIN
windowGroupings Array[String] 窗口分组字段列表

2. 派生指标 DERIVED

参数 类型 是否必选 说明
refMetricCode String 引用的上游指标系统 code
period Object 统计周期。具体语法建议参考:API-时间限定语法说明
filters Array[Object] 业务限定列表
preAggs Array[Object] 预聚合方式
indirection Object 衍生方式

发布创建时,periodfiltersindirection 不能同时为空。

indirection 公共说明

indirection.type 支持以下 4 种取值:

  • SAME_PERIOD
  • RANK
  • PROPORTION
  • CUSTOM_AGG

同环比 SAME_PERIOD

参数 类型 是否必选 说明
type String 固定为 SAME_PERIOD
samePeriodType String 支持 VALUEGROWTH_VALUEGROWTH
granularity String 兼容字段,可不传
offset Object 偏移配置。当前代码实际依赖该字段做粒度与偏移判断

offset 参数说明:

参数 类型 是否必选 说明
granularity String 粒度,例如 DAYWEEKMONTHQUARTERYEAR
offset Integer 偏移值,例如 -1
dateTag String 日期标识
specifyDateInPeriod String 周期内指定日期

排名 RANK

参数 类型 是否必选 说明
type String 固定为 RANK
rankRanges Array[String] 排名范围
rankDimensions Array[String] 排名维度
rankType String 支持 RANKRANK_DENSEROW_NUMBER
asc Boolean 是否升序

占比 PROPORTION

参数 类型 是否必选 说明
type String 固定为 PROPORTION
proportionRanges Array[String] 占比范围
proportionDimensions Array[String] 占比维度

自定义聚合 CUSTOM_AGG

参数 类型 是否必选 说明
type String 固定为 CUSTOM_AGG
customDimensionGroups Array[Object] 自定义聚合维度组,不能为空

customDimensionGroups 参数说明:

参数 类型 是否必选 说明
calculateType String 支持 MAXMINAVGSUM
dimensions Array[Object] 维度组合,不能为空

dimensions 参数说明:

参数 类型 是否必选 说明
name String 维度名
granularity String 仅时间维度需要,例如 DAY

3. 复合指标 COMPOSITE

参数 类型 是否必选 说明
expr String 复合指标表达式。表达式中的指标引用使用 [xxx]
metricDefinitions Map[String, Object] 临时派生指标定义

metricDefinitions 的 key 是临时指标名,value 结构如下:

参数 类型 是否必选 说明
refMetricCode String 引用的上游指标系统 code
period Object 统计周期
filters Array[Object] 业务限定
preAggs Array[Object] 预聚合
indirection Object 衍生方式,结构与派生指标一致
displayName String 临时指标展示名
dimensionConfig Object 临时指标可用维度配置

复合指标 dimensionConfig 正确结构

这里和旧文档不同,当前代码实际识别的是下面这套结构:

{
  "isNewDimensionDefaultEnable": true,
  "publicDimension": {
    "availableDimensionNames": [
      "province"
    ],
    "disableDimensionNames": [
      "city"
    ]
  },
  "factorDimensions": [
    "dt"
  ]
}

说明:

  • availableDimensionNames 仅在 isNewDimensionDefaultEnable=false 时使用
  • disableDimensionNames 仅在 isNewDimensionDefaultEnable=true 时使用
  • factorDimensions 用于声明因子维度

指标单位参数说明

类别 单位代码 描述
货币单位 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 其他

请求示例

示例 1:发布创建原子指标

{
  "type": "ATOMIC",
  "metricName": "order_amount_sum_api_v2",
  "metricDisplayName": "订单金额",
  "metricCode": "ORDER_AMOUNT_SUM_API_V2",
  "owner": "can1",
  "businessOwner": "can1",
  "businessCaliber": "统计订单金额总和",
  "metricCategoryId": "-1",
  "unit": "CNY_YUAN",
  "isPublish": true,
  "isNewDimensionDefaultEnable": true,
  "disableDimensions": [
    "city"
  ],
  "caliber": {
    "datasetName": "can_order",
    "expr": "SUM(['can_order'/'order_amount'])",
    "metricTime": "order_date",
    "filters": [
      {
        "type": "EXPR",
        "expr": "IN(['can_order'/'order_status'],\"paid\")"
      }
    ]
  },
  "basicAttributes": {},
  "businessAttributes": {},
  "technicalAttributes": {},
  "managementAttributes": {}
}

示例 2:复合指标中临时派生维度配置示例

{
  "type": "COMPOSITE",
  "metricName": "order_amount_ratio_api_v2",
  "metricDisplayName": "订单金额占比",
  "owner": "can1",
  "businessOwner": "can1",
  "unit": "PERCENTAGE",
  "isPublish": true,
  "caliber": {
    "expr": "[tmp_same_period]/[total_amount]",
    "metricDefinitions": {
      "tmp_same_period": {
        "refMetricCode": "total_amount",
        "indirection": {
          "type": "SAME_PERIOD",
          "samePeriodType": "VALUE",
          "offset": {
            "granularity": "YEAR",
            "offset": -1
          }
        },
        "dimensionConfig": {
          "isNewDimensionDefaultEnable": true,
          "publicDimension": {
            "disableDimensionNames": [
              "is_weekend"
            ]
          }
        }
      }
    }
  }
}

示例 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
}

示例 4:创建复合指标

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

响应参数

参数 类型 说明
data String 新建成功后返回的指标系统 code
success Boolean 是否成功
code String 响应码
errorMsg String 错误信息
detailErrorMsg String 详细错误信息
traceId String 请求追踪 ID

响应示例

{
  "data": "mcadb2046729c26c67c355bc4e32",
  "success": true,
  "code": "200",
  "errorMsg": null,
  "detailErrorMsg": null,
  "traceId": "9644bd804e2747088086bb04730e20ba.144.17194894357700043"
}