Server
include "../../../base.thrift"
include "common.thrift"
include "abase_service_idl.thrift"
namespace py data.dp.metric_service
namespace go data.dp.metric_service
namespace java com.bytedance.nuwa.data.dp.metric_service
// 取数时间区间 Fetching time interval
struct TimeRange {
1: required i64 startTime // 开始时间, 时间戳
2: required i64 endTime // 结束时间, 时间戳
3: optional common.DateType dateType // 日期类型
4: optional bool returnLatestDate // 返回最新有数分区数据,strartTime与endTime为0的情况生效
5: optional string timePeriodEn // 时间周期En,业务指标与应用指标取数需要,因为目前无法做到dateType统一,后续统一可以删除
6: optional i32 recentDays // 在底表就绪时间往前偏移N天,自动填充startTime 和 endTime。 strartTime与endTime为0的情况生效
7: optional string startTimeStr // 开始时间, 格式为"2006-01-02 15:04:05",startTime为空生效,主要for国际化场景
8: optional string endTimeStr // 结束时间,格式为"2006-01-02 15:04:05",endTime为空生效,主要for国际化场景
}
// 返回结构体算子结果定义 Return structure operator result definition
struct BasicOpValueParam {
1: required string opCode // 算子的Code
2: required string opName // 算子的名字
3: optional string value // 数值
4: required common.PreDataTypeEnum dataType // 数值类型, 具体参见文档:通用取数平台-枚举值
5: optional MetricUnit metricUnit // 指标单位
}
// 指标信息 Indicator information
struct MetricParam {
1: required string code // 指标code
2: optional common.MetricTypeEnum metricType = common.MetricTypeEnum.TECH_METRIC
50: optional list<string> operatorList
51: optional i64 modelId // 指定指标绑定的模型modelId, 该字段只对技术指标生效(metricType = 1)
52: optional i64 topicId // 专题ID,替换GetMetricDataRequest.topicIds
70: optional map<string, string> operator2AliasMap // 算子对应别名的映射,别名由用户定义
71: optional map<string, string> placeHolderValues // sql模型占位符的实际值
}
// 模型信息 model info
struct ModelInfo {
1: string modelId // 模型ID
2: string modelName // 模型名称
}
// 维度信息 Dimension information
struct DimensionParam {
1: required string dimensionCode // 维度code
// 50: optional list<MultiFilter> filter // 当前维度取值时需要的过滤条件
// 51: optional bool isAll // 暂时不支持、待讨论,字段解释:是否取整体数据(true: dimensionCode='整体', false: dimensionCode!='整体')【与dimensionValues二选一】
// 52: optional list<DimensionParam> drillDimensions // 暂时不支持、待讨论,字段解释:下钻的维度目前(仅在下钻表格接口/下钻表格下载接口中被用到,下钻维度可以有其单独的过滤条件)
}
// 指标服务过滤结构体
struct MultiFilter {
1: string fieldName // 过滤字段名(维度过滤传维度名称, 指标过滤传[指标名.算子名])
2: string value // 值, 会根据值类型解析出相应的数据类型, 只支持简单维度, 列表类型
3: common.FilterOpEnum op // 支持简单的操作符: =,>,<,>=,<=,!=,in
4: list<MultiFilter> multiFilterList // 嵌套过滤
5: common.LogicOperator logicOperator // 逻辑操作符
50: optional common.ValueTypeEnum valueType // 值类型,如果不传的话,默认是string、list<string> 服务内部根据维度的信息自动补全
// 50: optional common.FilterSearchType searchType = 0 // 暂时不支持,待讨论,字段解释:过滤类型, 默认参与取数(暂时不支持,待讨论)
}
struct NuwaExtraInfo {
1: optional list<abase_service_idl.AbaseServiceModelMeta> modelExtraInfos // 模型元信息
2: optional list<abase_service_idl.AbaseServiceMetricQueryCodeMeta> queryCodeExtraInfos // queryCode元信息
3: optional map<string, abase_service_idl.MetricModelBasicInfo> techCodeToModelInfos // 技术指标对应的基础模型信息
4: optional list<abase_service_idl.AbaseServiceAutoModelMeta> autoModelExtraInfos // 自动建模模型元信息
5: optional list<abase_service_idl.AbaseServiceThemeMeta> themeExtraInfos // 专题的元信息
}
struct AeolusExtraInfo {
1: optional map<i64, string> datasetId2ClusterMap // 数据集ID到集群的映射
}
struct ExtraInfo {
1: optional NuwaExtraInfo nuwaExtraInfo
2: optional AeolusExtraInfo aeolusExtraInfo
}
struct ExtraProp {
1: optional bool printSQL // 是否打印SQL, 默认值: true, 打印SQL
2: optional bool returnZeroIfNull // 默认值:false,如果数据字段为null,将数据设置为0或者空字符串,默认为false
3: optional bool skipCache // 默认值:false,如果为true的话,默认会跳过各类缓存
4: optional bool printModelInfo // 返回结果是否打印模型信息
5: optional bool enableDimReplace // 默认值:false 启用维度key-value 反查
6: optional bool returnDimValue // 默认值:false 维度最终结果是否转换为value
7: optional bool isMetaFromCtx // 是否是发布前的测试环境的请求,元信息从上下文获取 默认值false
10: optional bool returnTotalRows // 排除原始sql中limit offset等参数,返回sql拿到的数据总行数, 暂时只有调用GetMetricDataV2接口时支持,限制在单模型 value算子场景
11: optional bool useMetricDateDivision // 多指标场景下,指标使用自身底表的时间分区
50: optional LuopanBiz luopanBiz // 罗盘业务场景使用, 其他业务不需要填写参数
60: optional OSBiz osBiz // One Service业务场景使用, 其他业务不需要填写参数
}
struct LuopanBiz {
1: optional bool isIncreAbaseTable // 默认值false, 如果为ture, 则走罗盘Abase增量表查询优化特殊逻辑, 保留字段
2: optional bool isLuopanScene // 默认值false, 如果为true, 走罗盘场景的定制化逻辑
}
struct OSBiz {
1: optional string hintsForOS // 增加hint字段,用于支持OS在non-api取数场景下,能够区分sql pattern,暂时用于国际化电商doris取数
}
struct MetricDataExtraInfo {
1: optional string extra // 冗余信息
2: optional map<string, list<ModelInfo>> modelMap // 实际执行的SQL,所关联的模型信息, key: 算子,value: 返回取数相关的模型信息
}
struct MetricData {
1: required list<TableRow> rows // 表格的行数据
2: optional i64 total // 总行数, 有分页查询时返回
3: optional map<string, list<string>> sqlMap // 实际执行的SQL, key: 算子,value: sql列表。只在特殊情况下返回
5: optional map<string, ColumnInfo> columnInfoList // 新增字段:指标的基本信息,每一个Column的信息
10: optional i64 totalRows // 分页用 只支持单模型下 value算子数据的总行数
50: optional MetricDataExtraInfo extra
}
struct TableRow {
1: required string code // 行数据的唯一code
2: required string name // 行数据的展示名
50: optional string value // value值(比如维度值,用来做排序)
51: optional string dimCode // 维度字段code(多个维度以连字符串联)
52: optional map<string, BasicOpValueParam> values // 列数据列表,key生成规则:维度code、指标
// 53: optional list<TableRow> children // 暂时不支持,待讨论,字段解释:下钻的行数据
}
// 描述返回结构体的行信息 Row information describing the returned structure
struct ColumnInfo {
1: required string columnName
2: required common.ValueTypeEnum valueType
}
// 指标取数服务请求 Indicator fetch service request
struct GetMetricDataRequest {
1: required string businessId // Nuwa业务线ID
2: required TimeRange currentTime // 当前时间
3: required list<MetricParam> metricList // 指定指标列表(必须要是注册的指标列表子集, 不传返回所有注册的指标)
50: optional list<i64> topicIds // 禁用,存量迁移后会下线!!!!!Nuwa主题ID,下沉到指标粒度(MetricParam.topicId)
51: optional TimeRange compareTime // 对比时间
52: optional TimeRange chartTime // 指标卡中趋势图的时间范围
53: optional list<MultiFilter> filters // 过滤条件
54: optional list<DimensionParam> dimensionList // 维度配置列表
55: optional list<common.Sort> sort // 排序
56: optional common.Page page // 分页(需要分页再传)
57: optional list<MultiFilter> metricFilters // 指标过滤
58: optional ExtraProp extraProp // 额外属性
59: optional ExtraInfo extraInfo // 新增字段,用于存放通用取数的元信息
60: optional common.EventTrackInfo eventTrackInfo // 埋点信息
254: optional list<common.Option> options // 取数服务支持的各类参数
255: optional base.Base base
}
// 指标取数返回体 Index fetch return body
struct GetMetricDataResponse {
1: required i32 code
2: required string msg
3: optional string inner_msg
4: optional MetricData data
255: required base.BaseResp BaseResp
}
// 检测指标是否可路由的request
struct CheckMetricRoutableRequest {
1: required list<MetricParam> metricList // 目前此接口只支持应用支持
2: required string businessId // Nuwa业务线ID
50: optional list<DimensionParam> dimensionList // 维度配置列表
51: optional string timePeriodEn // 时间周期En,业务指标与应用指标取数需要,因为目前无法做到dateType统一,后续统一可以删除
}
struct CheckMetricRoutableData {
1: MetricParam metric
2: bool isRoutable
3: Model model
}
struct CheckMetricRoutableResponse {
1: required i32 code
2: required string msg
3: required list<CheckMetricRoutableData> data
255: required base.BaseResp BaseResp
}
struct TimeRangeForOS {
1: required string startTime // 开始时间, 可读时间,时区由数仓确定
2: required string endTime // 结束时间, 可读时间,时区由数仓确定
3: optional common.DateType dateType // 日期类型
4: optional bool returnLatestDate // 返回最新有数分区数据,strartTime与endTime为0的情况生效
5: optional string timePeriodEn // 时间周期En,业务指标与应用指标取数需要,因为目前无法做到dateType统一,后续统一可以删除
}
// 指标取数服务请求 One Service专用 Indicator fetch service request, one service use only
struct GetMetricDataRequestForOS {
1: required string businessId // Nuwa业务线ID
2: required TimeRangeForOS currentTime // 当前时间
3: required list<MetricParam> metricList // 指定指标列表(必须要是注册的指标列表子集, 不传返回所有注册的指标)
50: optional list<i64> topicIds // Nuwa主题ID
53: optional list<MultiFilter> filters // 过滤条件
54: optional list<DimensionParam> dimensionList // 维度配置列表
55: optional list<common.Sort> sort // 排序
56: optional common.Page page // 分页(需要分页再传)
57: optional list<MultiFilter> metricFilters // 指标过滤
58: optional ExtraProp extraProp // 额外属性
// 59: optional ExtraInfo extraInfo // 新增字段,用于存放通用取数的元信息
255: optional base.Base base
}
// 路由的req接口
struct GetMetricStoreRequest {
1: i64 businessId // 业务线ID
2: list<MetricStoreRequestContent> metricStoreRequestList // 路由的指标信息
3: optional i64 themeID // 主题ID,内外都填情况,以内部为准
4: optional list<abase_service_idl.ModelDataSourceType> modelType // 模型信息
5: optional list<string> clusters // 库信息
6: optional bool latestDataPrefer // 最近公共有数一天优先
7: optional common.ApplicationEnum app = common.ApplicationEnum.COMMON // 区分不同的产品走不同的策略
8: optional list<ModelEleConstraint> modelConstraint // 模型元素的约束,多个约束之间为且的关系
50: optional ExtraInfo extraInfo // 新增字段,用于存放路由相关元信息
51: optional common.EventTrackInfo eventTrackInfo // 埋点信息
255: optional base.Base base
}
// 多个模型元素之间的约束,目前要求必须在同个模型
struct ModelEleConstraint {
1: list<ModelEle> modelEleList
}
// 模型元素约束
struct ModelEle {
1: string code // 模型元素标识
2: common.ModelEleEnum modelEleType // 模型元素类型
}
struct MetricStoreRequestContent {
1: string code // 指标英文名
2: optional common.MetricTypeEnum metricType = common.MetricTypeEnum.TECH_METRIC // 指标类型
3: optional string timePeriod // 指标时间周期英文名,metricType为业务指标时,把时间周期拼接得到技术指标名
4: optional list<string> dimensionList // 维度英文名列表,代表发生聚合(group by)、点查(dim1 = x 或者 dim2 in (x), 且是第一层的连续and)的维度
5: optional bool isAdditive // 是否走累加逻辑, 为true代表会走累加逻辑判读,false代表跳过累加性判断
6: optional list<common.DimensionFilter> dimensionFilterList // 支持的维度值范围过滤:维度绑定模型时支持的维度值范围必须包含参数内的维度值列表; dimensionFilterList与dimensionList的差集,会作为聚合维度的判断
7: optional i64 modelID // 指定模型路由,通过模型ID指定,当ModelID和osLogicalTable都填写的时候,以ModelID为准
8: optional string osLogicalTable // OS逻辑表
9: optional i64 themeID // 主题ID,内外都填情况,以内部为准
10: optional map<string, string> placeHolderValues // sql模型占位符的实际值
255: optional string eleUniqID // 请求唯一标识
}
// 检测指标是否可路由的Response
struct GetMetricStoreResponse {
1: list<MetricModelData> data // 指标路由结果
255: required base.BaseResp BaseResp
}
struct MetricModelData {
1: string techMetricName // 技术指标中文名
2: string techMetricNameEN // 技术指标英文名
3: string bizMetricName // optional:如果是规范版本 业务指标中文名
4: string bizMetricNameEN // optional:如果是规范版本 业务指标英文名
5: common.MetricLogicType metricLogicType // optional:如果是规范版本 DERIVED or COMPOSITE,如果是DERIVED,只需要看OSLogicTable和MetricStoreInfo就行了,如果是COMPOSITE,需要看CompositeLogic、CompositeLogicEN和构成元素的BizMetricStoreInfoList
6: MetricStoreData metricData // 指标与模型的绑定信息
7: Model model // 模型元信息
8: string compositeLogic // optional:如果是规范版本 复合指标的构建逻辑
9: string compositeLogicEN // optional:如果是规范版本 复合指标的构建逻辑英文
10: list<MetricModelData> metricStoreData // optional:如果是规范版本 复合指标组成元素的绑定信息
30: string eleUniqID // 查询元素唯一标识
31: i64 eleRequestStatus // 查询元素状态
32: string eleRequestInfo // 查询元素结果
33: string code // 与入参保持一致
34: string timePeriod // 与入参保持一致
}
struct MetricStoreData {
1: string expression // 指标表达式
2: DataType dataType // 指标数据类型
3: string queryCode // 指标QueryCode
4: abase_service_idl.MetricTimeDelay metricTimeDelay // 指标时延
5: abase_service_idl.MetricUnit metricUnit // 指标单位
6: abase_service_idl.ModelTimeFieldMeta businessTime // 指标的业务时间
7: string filterCondition // 指标的过滤条件
8: list<MultiFilter> metricStdFilter // 将指标过滤条件,转换为标准的结构体
9: list<abase_service_idl.PropertyMeta> properties // 指标的高级属性,透传
10: optional i64 aeolusFieldId // 风神的字段id
}
struct MetricUnit {
// 指标单位,待补充
1: string unitType
2: string unit
}
struct Model {
1: string modelID // 模型ID
2: optional string oSLogicTableId // OS逻辑表ID
3: optional string oSLogicTableName // OS逻辑表名
4: abase_service_idl.ModelEngineMeta engine // 引擎相关配置信息
9: optional list<SupportDimension> supportDimensionList // 支持维度
10: optional bool isSql // 是否走view
11: optional string sql // 具体拼接的SQL View 主要for风神场景
13: optional string readyTime // 就绪时间
14: optional list<abase_service_idl.PropertyMeta> properties // 模型高级属性
15: optional string modelQueryFilter // 模型查询约束
16: list<MultiFilter> modelQueryStdFilter // 将指标过滤条件,转换为标准的结构体
17: optional list<DimCubeValue> cubeConfig // cube模型的cube配置信息
}
struct SupportDimension {
1: string id // 维度ID
2: string name // 维度英文名
3: string nameEN // 维度Code
4: string expression // 维度在底表的表达式
5: optional i64 dimId // 关联维度id
6: optional DataType dataType // 维度的实际类型
7: optional i64 aeolusFieldId; // 风神字段id
8: optional string aeolusFieldName; // 风神字段名
}
struct DimTable {
1: i64 DimID
2: string DimNameEN
3: string OSLogicTableId
4: string OSLogicTableName
5: string Cluster
6: string DBname
7: string Table
8: string TableType // 目前只能是Clickhouse
10: string KeyDimNameEN
20: bool Over1000Rows
21: string KeyField
22: string ValueField
30: string DateField // 时间分区字段
31: string DateFieldType // 时间分区字段格式
50: string ReadyTime // 就绪时间
}
struct DimCubeValue {
1: string DimensionName
2: common.FilterOpEnum Op
3: string CubeValue
}
struct CheckModelConfigResponse {
1: required i32 code
2: required string msg
3: optional CheckResult modelCheckResult
4: optional list<CheckResult> checkResult
255: required base.BaseResp BaseResp
}
struct CheckResult {
1: required string code // 检查的code(指标/维度)
2: required bool checkPass // 检查是否通过
3: optional list<CheckFailedDetail> checkFailedDetail // 检查不通过详情
4: optional list<string> useFields // code使用到的字段
}
struct CheckFailedDetail {
1: required CheckFailedType checkFailedType // 检查不通过类型
2: optional string checkFailedField // 检查失败的字段
3: optional string checkFailedMsg // 检查失败详情(sql语法异常)
}
enum CheckFailedType {
SQL_SYNTAX_EXCEPTION = 1 // sql语法异常,详情见checkFailedMsg
FIELD_NOT_FOUND = 2 // 字段不存在, 字段见checkFailedField
FIELD_INVALID_DATA_TYPE = 3 // 字段数据类型不正确,字段见checkFailedField
}
struct CheckModelConfigRequest {
1: optional string modelFilterCondition // 模型过滤条件
2: optional list<CheckItem> checkItemList // 检查项
3: required ModelTableData modelTableData // 底表信息
}
struct CheckItem {
1: required string code // 检查code
2: required string expression // code对应的表达式
3: optional string filterCondition // code过滤表达式
}
struct ModelTableData {
1: required string tableName // 底表名
2: required abase_service_idl.ModelDataSourceType dataSourceType // 底表类型
3: optional list<TableField> tableFields // 字段详情
4: optional string osPhysicalTableType // os逻辑表底表类型
}
enum DataType {
INT,
DOUBLE,
VARCHAR,
DATE,
DATETIME,
TIMESTAMP,
BOOLEAN
}
struct TableField {
1: required string fieldName // 字段名
2: required DataType dataType // 字段类型
}
struct GetMetricReadyTimeResponse {
1: required i32 code
2: required string msg
3: optional i64 readyTime // 输入的所有指标的就绪时间, 该值为所有指标路由模型的最小就绪时间(保证该日期所有指标都有数)
4: optional string readyTimeStr // 输入的所有指标的就绪时间, 该值为所有指标路由模型的最小就绪时间(保证该日期所有指标都有数),格式为"2006-01-02 15:04:05"
5: optional list<QueryReadyTimeData> data // 各个指标的就绪时间
255: required base.BaseResp BaseResp
}
struct GetMetricReadyTimeRequest {
1: required string businessId // Nuwa业务线ID
2: required TimeRange currentTime // 当前时间
3: required list<MetricParam> metricList // 指定指标列表(必须要是注册的指标列表子集, 不传返回所有注册的指标)
50: optional list<MultiFilter> filters // 过滤条件
51: optional list<DimensionParam> dimensionList // 维度配置列表
52: optional i64 topicId
255: optional base.Base base
}
struct GetMetricReadyTimeRequestForOS {
1: required string businessId // Nuwa业务线ID
2: required TimeRangeForOS currentTime // 当前时间
3: required list<MetricParam> metricList // 指定指标列表(必须要是注册的指标列表子集, 不传返回所有注册的指标)
50: optional list<MultiFilter> filters // 过滤条件
51: optional list<DimensionParam> dimensionList // 维度配置列表
52: optional i64 topicId
255: optional base.Base base
}
struct MetricBindModelInfoRequest {
1: required i64 TopicID // 自定义主题ID
2: optional list<abase_service_idl.ModelDataSourceType> ModelTypes // 要求的模型类型
3: optional common.ApplicationEnum App = common.ApplicationEnum.COMMON // 区分不同的产品走不同的策略
255: optional base.Base Base
}
struct MetricBindModelInfoResponse {
1: list<MetricBindModelInfo> MetricBindModelInfos // 指标绑定的模型信息
255: required base.BaseResp BaseResp
}
struct MetricBindModelInfo {
1: Metric Metric // 概念指标
2: list<Model> ModelList // 指标绑定模型列表
}
struct Metric {
1: common.MetricLogicType MetricType // 指标类型
2: i64 MetricId // 指标id
3: string Name // 指标名称
4: string NameEN // 指标英文名
5: string Alias // 别名
6: string Desc // 指标业务定义
7: list<string> Tags // 标签
8: string AliasEN // 英文别名
// 9: optional bool AllModelAdditive // 所有模型都可累加(仅技术指标存在)
// 10: optional list<Metric> TechMetrics // 技术指标列表(仅百宝箱搜索会返回)
11: optional string TimePeriodNameEN // 时间周期(仅技术指标存在)
// 12: optional list<BizMetricAPPRegisterInfo> AppRegisterInfos // 应用登记信息 无DimensionInfoList(仅数据管家会返回)
// 13: optional list<SupportDimension> DimensionInfos // 支持维度信息(仅数据管家会返回)
}
// 通过取数的元素获取就绪时间
struct GetQueryReadyTimeByEleReq {
1: required i64 businessId // Nuwa业务线ID
2: optional list<MetricParam> metricList // 指定指标列表(必须要是注册的指标列表子集, 不传返回所有注册的指标)
50: optional list<common.DimensionFilter> dimensionList // 维度配置列表,无实际请求的in = 的值,直接留空
51: optional i64 topicId // 专题信息,metricList内有专题的优先级大于此配置
}
struct QueryReadyTimeData {
1: i64 index // 与请求的metricList保持一致
2: string code // 指标code
50: optional i64 readyTime // 此指标路由模型的最小就绪时间(保证该日期所有指标都有数)
51: optional string readyTimeStr // 此指标路由模型的最小就绪时间(保证该日期所有指标都有数),格式为"2006-01-02 15:04:05"
}
struct GetMetricStoreRequestInner {
1: list<RouterReq> reqs
2: RouterParams params
100: optional ExtraInfo extraInfo // 外部传入的信息
101: optional bool isMetaFromCtx // 是否从ctx中获取元信息
255: optional base.Base Base
}
struct RouterParams {
1: required i64 nuwaBusinessID
2: list<string> clusters
3: list<abase_service_idl.ModelDataSourceType> modelType
4: list<ModelEleConstraint> modelConstraint
5: bool isNeedExtendDim
6: bool latestDataPrefer
}
struct RouterReq {
1: required string code
2: required common.MetricTypeEnum metricType
3: optional string timePeriod
4: list<string> dimensionList
5: list<common.DimensionFilter> dimensionFilterList
6: optional i64 modelID
7: optional bool isAdditive
8: optional bool isTimeGroup
9: optional i64 themeID
10: string eleUniqID
11: optional map<string, string> placeHolderValues // sql模型占位符的实际值
}
service DataMetricService {
// 指标取数接口 indicator access interface
GetMetricDataResponse GetMetricData(1: GetMetricDataRequest req)(api.post="/nuwa_agw/metric_service/get_metric_data")
// 检测指标是否可路由
CheckMetricRoutableResponse CheckMetricRoutable(1: CheckMetricRoutableRequest req)(api.post="/nuwa_agw/metric_service/check_metric_routable")
// 指标取数接口 indicator access interface
GetMetricDataResponse GetMetricDataForOS(1: GetMetricDataRequestForOS req)(api.post="/nuwa_agw/metric_service/get_metric_data_for_os")
// 指标路由接口 根据指标及相关配置,路由至可查询的模型
GetMetricStoreResponse GetMetricStore(1: GetMetricStoreRequest req)(api.post="/nuwa_agw/metric_service/get_metric_store")
// 指标路由接口 内部使用,for影响面评估
GetMetricStoreResponse GetMetricStoreInner(1: GetMetricStoreRequestInner req)(api.post="/nuwa_agw/metric_service/get_metric_store_inner")
// 模型配置校验接口
CheckModelConfigResponse CheckModelConfig(1: CheckModelConfigRequest req)(api.post="/nuwa_agw/metric_service/check_model_config")
// 【详细粒度】获取指标最小就绪时间,通过取数请求的方式获取就绪时间
GetMetricReadyTimeResponse GetMetricReadyTime(1: GetMetricReadyTimeRequest req)(api.post="/nuwa_agw/metric_service/get_metric_ready_time")
// 【粗粒度】获取指标最小就绪时间,通过取数的元素获取粗粒度就绪时间
GetMetricReadyTimeResponse GetQueryReadyTimeByEle(1: GetQueryReadyTimeByEleReq req)(api.post="/nuwa_agw/metric_service/get_ready_time_by_query_ele")
// 获取主题下的模型、指标信息
MetricBindModelInfoResponse GetMetricBindModelInfosByDictCat(1: MetricBindModelInfoRequest request)(api.post="/nuwa_agw/metric_service/get_metric_bind_model_Infos_by_dict_cat")
}
common类
namespace java com.bytedance.nuwa.data.dp.metric_service
// 传入指标类型枚举
enum MetricTypeEnum {
TECH_METRIC = 1 // 技术指标
APP_METRIC = 2 // 应用指标
BUSINESS_METRIC = 3 // 业务指标
TECH_OR_BUSINESS_METRIC = 4 // 技术指标或者业务指标
QUERY_CODE = 5 // queryCode
}
// 通用取数常量
enum DateType {
DAY = 1 // 一天
WEEK_1 = 2 // 周一到周日
WEEK_2 = 3 // 周二到周一
WEEK_3 = 4 // 周三到周二
WEEK_4 = 5 // 周四到周三
WEEK_5 = 6 // 周五到周四
WEEK_6 = 7 // 周六到周五
WEEK_7 = 8 // 周日到周六
MONTH = 9 // 月
BIMONTH = 10 // 双月
SEVEN_DAY = 11 // 七天
THIRTY_DAY = 12 // 三十天
SIXTY_DAY = 13 // 六十天
FOURTEEN_DAY = 14 // 十四天
HOUR = 15 // 小时
WEEK = 999 // 自然周
HALF_YEAR = 16 // 半年
YEAR = 17 // 年
SEASON = 18 // 季度
DAYS_365 = 19 // 365天
CUSTOM = 9999 // 用户自定义
}
// 排序的字段类型
enum SortTypeEnum {
DIM_FIELD = 1 // 维度字段
METRIC_FIELD = 2 // 指标字段
}
// 排序
struct Sort {
1: required string field
2: required SortTypeEnum sortType // 排序的字段类型
3: required bool isAsc // 是否是升序, 默认是倒序
}
// 分页
struct Page {
1: required i32 page // 分页的页数,默认从第一页开始
2: optional i32 pageSize // 每页个数,该字段不传默认是20
}
// 计算逻辑枚举值
enum LogicOperator {
AND,
OR
}
// 过滤操作符号枚举值
enum FilterOpEnum {
OP_EQUAL = 1
OP_NOT_EQUAL = 2 // !
OP_GREATER = 3 // >
OP_SMALLER = 4 // <
OP_GREATER_OR_EQUAL = 5 // >
OP_SMALLER_OR_EQUAL = 6 // <
OP_WITHIN = 7 // in
OP_NOT_WITHIN = 8 // not in
OP_IS_NULL = 9 // is null
OP_IS_NOT_NULL = 10 // is not null
OP_LIKE = 11 // like
OP_NOT_ALL = 12 // not all
OP_HAS = 13 // has
OP_HAS_ANY = 14 // hasAny
OP_NOT_LIKE = 15 // not like
OP_IS_ALL = 50 // 特殊的OP 支持cube类型的查询维度聚合后数据
OP_CUSTOM = 1000 // [仅内部使用,外部禁用]
}
// 过滤类型, 默认参与取数
enum FilterSearchType {
GetData = 0 // 默认参与取数
OnlySearch = 1 // 仅查询
}
// 实际的值类型
enum ValueTypeEnum {
UNKNOWN = 0
// 简单数据类型 Simple types
STRING = 1 // 字符串
BIGINT = 2 // 整数
FLOAT = 3 // 浮点数
TIMESTAMP = 4 // 时间戳
// Array数据类型 Array types1xx
LIST_STRING = 101 // 字符串列表
LIST_BIGINT = 102 // 整数数列表
LIST_FLOAT = 103 // 浮点数列表
// Map数据类型 MAP types 2xx
}
// 用户展示类型枚举定义,方便用户做展示,后续存在删增的可能性
enum PreDataTypeEnum {
// 0xx 标准类型
AMT_STD = 1 // 数值类型
RAW = 2 // 直接展示
// 1xx 金额类
MONEY_STD = 100 // 标准金额
MONEY_YUAN = 101 // 标准金额-元
// 2xx 百分比/变化率
PCT = 201 // 百分比
PCT_THREE = 202 // 百分比保留三位
PERMILLE = 210 // 千分比
PT = 251 // pt(变化率)
// 3xx 趋势图
CHART = 301 // 趋势图
// 4xx 时间类型
TIME_INTERVAL_SEC = 401 // 时长(单位:秒)
TIME_INTERVAL_MIN = 402 // 时长(单位:分)
TIME_INTERVAL_HOUR = 403 // 时长(单位:小时)
// 5xx 业务类型
MONEY_PER_THOUSAND_PV = 501 // 金额/千次PV
INT_PER_THOUSAND_PV = 502 // 整数/千次PV
}
// 规范版本指标构建类型
enum MetricLogicType {
DERIVED = 1 // 衍生指标
COMPOSITE = 2 // 复合指标
}
struct DimensionFilter {
1: required string dimensionNameEN // 维度英文名
2: required list<string> dimensionValueList // 维度值列表
}
enum ApplicationEnum {
COMMON, // 通用的应用场景
AEOLUS, // 风神应用场景
BAIBAOXIANG // 电商百宝箱链路场景
}
// 请求支持的动态参数
enum OptionID {
TIMEOUT = 1 // 超时时间
SKIP_PPE_META = 100 // 走ppe_default集群,是否跳过从ppe获取指标元数据
}
// represent for optional configs
struct Option {
1: OptionID Id
2: i64 Val // int, bool
3: string Val_ // string,json,float
}
struct UpdateTime {
1: string updateTime
2: i64 updateTs
3: string updateUser
}
struct EventTrackInfo {
1: string username // 实际访问用户名
2: string from // 调用来源方
3: string pageUK // 页面唯一键(标记 该来源下 最小粒度实体的唯一键)
4: string pageName // 页面名称(标记 该来源下 最小粒度实体的名称)
5: string pageUrl // 页面链接(标记 该来源下 最小粒度实体的跳转链接)
6: list<string> pageOwners // 页面负责人/责任人(标记 该来源下 最小粒度实体的负责人/异常周知人)
7: list<EventTrackPageInfo> pageList // 页面信息(由粗到细粒度)
200: map<string, string> customInfo // 自定义埋点信息(需要透传的额外信息)
}
// 模型绑定的类型:指标、维度
enum ModelEleEnum {
DIM = 1 // 维度
TECH_METRIC = 2 // 技术指标
}
struct EventTrackPageInfo {
1: string pageUK // 页面唯一键(标记 该来源下 最小粒度实体的唯一键)
2: string pageName // 页面名称(标记 该来源下 最小粒度实体的名称)
3: string pageUrl // 页面链接(标记 该来源下 最小粒度实体的跳转链接)
4: list<string> pageOwners // 页面负责人/责任人(标记 该来源下 最小粒度实体的负责人/异常周知人)1
}