mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 20:51:48 +00:00
(improvement)(semantic) save metric default query config (#503)
Co-authored-by: jolunoluo
This commit is contained in:
@@ -18,6 +18,9 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/***
|
||||
* A mapper that forms a cluster from connectable models
|
||||
*/
|
||||
public class ModelClusterMapper implements SchemaMapper {
|
||||
|
||||
@Override
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.tencent.supersonic.chat.api.pojo.request.QueryFilter;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.QueryFilters;
|
||||
import com.tencent.supersonic.chat.api.pojo.request.QueryReq;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.knowledge.dictionary.builder.BaseWordBuilder;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import java.util.List;
|
||||
@@ -19,8 +20,6 @@ import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
public class QueryFilterMapper implements SchemaMapper {
|
||||
|
||||
private Long frequency = 9999999L;
|
||||
private double similarity = 1.0;
|
||||
|
||||
@Override
|
||||
@@ -37,7 +36,7 @@ public class QueryFilterMapper implements SchemaMapper {
|
||||
schemaElementMatches = Lists.newArrayList();
|
||||
schemaMapInfo.setMatchedElements(modelId, schemaElementMatches);
|
||||
}
|
||||
addValueSchemaElementMatch(schemaElementMatches, queryReq.getQueryFilters());
|
||||
addValueSchemaElementMatch(queryContext, schemaElementMatches, queryReq.getQueryFilters());
|
||||
}
|
||||
|
||||
private void clearOtherSchemaElementMatch(Long modelId, SchemaMapInfo schemaMapInfo) {
|
||||
@@ -48,7 +47,8 @@ public class QueryFilterMapper implements SchemaMapper {
|
||||
}
|
||||
}
|
||||
|
||||
private List<SchemaElementMatch> addValueSchemaElementMatch(List<SchemaElementMatch> candidateElementMatches,
|
||||
private List<SchemaElementMatch> addValueSchemaElementMatch(QueryContext queryContext,
|
||||
List<SchemaElementMatch> candidateElementMatches,
|
||||
QueryFilters queryFilter) {
|
||||
if (queryFilter == null || CollectionUtils.isEmpty(queryFilter.getFilters())) {
|
||||
return candidateElementMatches;
|
||||
@@ -62,10 +62,11 @@ public class QueryFilterMapper implements SchemaMapper {
|
||||
.name(String.valueOf(filter.getValue()))
|
||||
.type(SchemaElementType.VALUE)
|
||||
.bizName(filter.getBizName())
|
||||
.model(queryContext.getRequest().getModelId())
|
||||
.build();
|
||||
SchemaElementMatch schemaElementMatch = SchemaElementMatch.builder()
|
||||
.element(element)
|
||||
.frequency(frequency)
|
||||
.frequency(BaseWordBuilder.DEFAULT_FREQUENCY)
|
||||
.word(String.valueOf(filter.getValue()))
|
||||
.similarity(similarity)
|
||||
.detectWord(Constants.EMPTY)
|
||||
|
||||
@@ -118,6 +118,7 @@ public class QueryReqBuilder {
|
||||
for (Filter dimensionFilter : queryStructReq.getDimensionFilters()) {
|
||||
QueryStructReq req = new QueryStructReq();
|
||||
BeanUtils.copyProperties(queryStructReq, req);
|
||||
req.setModelIds(new HashSet<>(queryStructReq.getModelIds()));
|
||||
req.setDimensionFilters(Lists.newArrayList(dimensionFilter));
|
||||
queryStructReqs.add(req);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,9 @@ package com.tencent.supersonic.common.pojo;
|
||||
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.Map;
|
||||
@@ -49,7 +51,10 @@ public class ModelCluster {
|
||||
}
|
||||
|
||||
public Long getFirstModel() {
|
||||
return modelIds.stream().findFirst().orElse(null);
|
||||
if (CollectionUtils.isEmpty(modelIds)) {
|
||||
return -1L;
|
||||
}
|
||||
return new ArrayList<>(modelIds).get(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -79,7 +79,7 @@ public class SysParameter {
|
||||
|
||||
//llm config
|
||||
Parameter parameter = new Parameter("llm.model.name", "gpt3.5",
|
||||
"模型名称", "","list", "Parser相关配置");
|
||||
"模型名称", "", "list", "Parser相关配置");
|
||||
parameter.setCandidateValues(Lists.newArrayList("gpt3.5", "gpt3.5-16k"));
|
||||
parameters.add(parameter);
|
||||
parameters.add(new Parameter("llm.api.key", "sk-secret",
|
||||
|
||||
@@ -159,21 +159,6 @@ CREATE TABLE `s2_database` (
|
||||
);
|
||||
COMMENT ON TABLE s2_database IS 'database instance table';
|
||||
|
||||
CREATE TABLE IF NOT EXISTS `s2_datasource` (
|
||||
`id` INT NOT NULL AUTO_INCREMENT,
|
||||
`model_id` INT NOT NULL ,
|
||||
`name` varchar(255) NOT NULL ,
|
||||
`biz_name` varchar(255) NOT NULL ,
|
||||
`description` varchar(500) DEFAULT NULL ,
|
||||
|
||||
`created_at` TIMESTAMP NOT NULL ,
|
||||
`created_by` varchar(100) NOT NULL ,
|
||||
`updated_at` TIMESTAMP NOT NULL ,
|
||||
`updated_by` varchar(100) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_datasource IS 'datasource table';
|
||||
|
||||
create table s2_auth_groups
|
||||
(
|
||||
group_id INT,
|
||||
@@ -200,6 +185,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` (
|
||||
`alias` varchar(500) DEFAULT NULL,
|
||||
`tags` varchar(500) DEFAULT NULL,
|
||||
`relate_dimensions` varchar(500) DEFAULT NULL,
|
||||
`ext` LONGVARCHAR DEFAULT NULL ,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
COMMENT ON TABLE s2_metric IS 'metric information table';
|
||||
@@ -245,7 +231,7 @@ create table s2_view_info
|
||||
(
|
||||
id INT auto_increment,
|
||||
domain_id INT null,
|
||||
type varchar(20) null comment 'datasource、dimension、metric',
|
||||
type varchar(20) null comment 'model、dimension、metric',
|
||||
config LONGVARCHAR null comment 'config detail',
|
||||
created_at TIMESTAMP null,
|
||||
created_by varchar(100) null,
|
||||
@@ -540,4 +526,16 @@ CREATE TABLE `s2_collect` (
|
||||
`create_time` TIMESTAMP,
|
||||
`update_time` TIMESTAMP,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
);
|
||||
|
||||
CREATE TABLE `s2_metric_query_default_config` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`metric_id` bigint ,
|
||||
`user_name` varchar(255) NOT NULL,
|
||||
`default_config` varchar(1000) NOT NULL,
|
||||
`created_at` TIMESTAMP null,
|
||||
`updated_at` TIMESTAMP null,
|
||||
`created_by` varchar(100) null,
|
||||
`updated_by` varchar(100) not null,
|
||||
PRIMARY KEY (`id`)
|
||||
);
|
||||
|
||||
@@ -200,38 +200,6 @@ CREATE TABLE `s2_database` (
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='数据库实例表';
|
||||
|
||||
CREATE TABLE `s2_datasource` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`model_id` bigint(20) DEFAULT NULL,
|
||||
`name` varchar(255) NOT NULL COMMENT '数据源名称',
|
||||
`biz_name` varchar(255) NOT NULL COMMENT '内部名称',
|
||||
`agg_time` varchar(32) DEFAULT 'day',
|
||||
`description` varchar(500) DEFAULT NULL COMMENT '数据源描述',
|
||||
`database_id` bigint(20) NOT NULL COMMENT '数据库实例ID',
|
||||
`datasource_detail` mediumtext NOT NULL COMMENT '数据源配置',
|
||||
`status` int(11) DEFAULT NULL ,
|
||||
`depends` text DEFAULT NULL COMMENT '上游依赖标识',
|
||||
`filter_sql` varchar(1000) DEFAULT NULL ,
|
||||
`created_at` datetime NOT NULL COMMENT '创建时间',
|
||||
`created_by` varchar(100) NOT NULL COMMENT '创建人',
|
||||
`updated_at` datetime NOT NULL COMMENT '更新时间',
|
||||
`updated_by` varchar(100) NOT NULL COMMENT '更新人',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE `s2_datasource_rela` (
|
||||
`id` bigint(20) NOT NULL AUTO_INCREMENT,
|
||||
`model_id` bigint(20) DEFAULT NULL,
|
||||
`datasource_from` bigint(20) DEFAULT NULL,
|
||||
`datasource_to` bigint(20) DEFAULT NULL,
|
||||
`join_key` varchar(100) DEFAULT NULL,
|
||||
`created_at` datetime DEFAULT NULL,
|
||||
`created_by` varchar(100) DEFAULT NULL,
|
||||
`updated_at` datetime DEFAULT NULL,
|
||||
`updated_by` varchar(100) DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE `s2_dictionary` (
|
||||
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
|
||||
`item_id` bigint(20) DEFAULT NULL COMMENT '对应维度id、指标id等',
|
||||
@@ -475,6 +443,7 @@ CREATE TABLE `s2_materialization`
|
||||
`description` mediumtext COMMENT '备注说明',
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE `s2_materialization_element`
|
||||
(
|
||||
`id` bigint(20) NOT NULL COMMENT 'element类型对应id',
|
||||
@@ -493,6 +462,7 @@ CREATE TABLE `s2_materialization_element`
|
||||
`status` int(11) NOT NULL DEFAULT '1' COMMENT '0-废弃,1-使用中',
|
||||
PRIMARY KEY (`id`, `type`, `materialization_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||
|
||||
CREATE TABLE `s2_materialization_record`
|
||||
(
|
||||
`id` bigint(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
|
||||
@@ -533,11 +503,22 @@ CREATE TABLE s2_model_rela
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE `s2_collect` (
|
||||
`id` bigint NOT NULL AUTO_INCREMENT,
|
||||
`id` bigint NOT NULL primary key AUTO_INCREMENT,
|
||||
`type` varchar(20) NOT NULL,
|
||||
`username` varchar(20) NOT NULL,
|
||||
`collect_id` bigint NOT NULL,
|
||||
`create_time` datetime,
|
||||
`update_time` datetime,
|
||||
PRIMARY KEY (`id`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE `s2_metric_query_default_config` (
|
||||
`id` bigint NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`metric_id` bigint,
|
||||
`user_name` varchar(255) NOT NULL,
|
||||
`default_config` varchar(1000) NOT NULL,
|
||||
`created_at` datetime null,
|
||||
`updated_at` datetime null,
|
||||
`created_by` varchar(100) null,
|
||||
`updated_by` varchar(100) null
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
@@ -116,4 +116,28 @@ CREATE TABLE s2_model_rela
|
||||
);
|
||||
|
||||
alter table s2_view_info change model_id domain_id bigint;
|
||||
alter table s2_dimension drop column datasource_id;
|
||||
alter table s2_dimension drop column datasource_id;
|
||||
|
||||
-- 20231211
|
||||
CREATE TABLE `s2_collect`
|
||||
(
|
||||
`id` bigint NOT NULL primary key AUTO_INCREMENT,
|
||||
`type` varchar(20) NOT NULL,
|
||||
`username` varchar(20) NOT NULL,
|
||||
`collect_id` bigint NOT NULL,
|
||||
`create_time` datetime,
|
||||
`update_time` datetime,
|
||||
PRIMARY KEY (`id`)
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
|
||||
CREATE TABLE `s2_metric_query_default_config`
|
||||
(
|
||||
`id` bigint NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
`metric_id` bigint,
|
||||
`user_name` varchar(255) NOT NULL,
|
||||
`default_config` varchar(1000) NOT NULL,
|
||||
`created_at` datetime null,
|
||||
`updated_at` datetime null,
|
||||
`created_by` varchar(100) null,
|
||||
`updated_by` varchar(100) null
|
||||
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.tencent.supersonic.semantic.api.model.pojo;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.RecordInfo;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class MetricQueryDefaultConfig extends RecordInfo {
|
||||
|
||||
private Long id;
|
||||
|
||||
private Long metricId;
|
||||
|
||||
private String userName;
|
||||
|
||||
//string of queryStruct
|
||||
private String defaultConfig;
|
||||
|
||||
}
|
||||
@@ -1,12 +1,15 @@
|
||||
package com.tencent.supersonic.semantic.api.model.request;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.DataFormat;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.RelateDimension;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.common.pojo.DataFormat;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@Data
|
||||
@@ -24,6 +27,8 @@ public class MetricBaseReq extends SchemaItem {
|
||||
|
||||
private RelateDimension relateDimension;
|
||||
|
||||
private Map<String, Object> ext = new HashMap<>();
|
||||
|
||||
public String getTag() {
|
||||
if (CollectionUtils.isEmpty(tags)) {
|
||||
return "";
|
||||
|
||||
@@ -14,7 +14,9 @@ import lombok.ToString;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -48,6 +50,8 @@ public class MetricResp extends SchemaItem {
|
||||
|
||||
private Boolean isCollect;
|
||||
|
||||
private Map<String, Object> ext = new HashMap<>();
|
||||
|
||||
public void setTag(String tag) {
|
||||
if (StringUtils.isBlank(tag)) {
|
||||
tags = Lists.newArrayList();
|
||||
|
||||
@@ -43,7 +43,6 @@ import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -183,12 +182,6 @@ public class DimensionServiceImpl implements DimensionService {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DimensionResp getDimension(Long id) {
|
||||
DimensionDO dimensionDO = dimensionRepository.getDimensionById(id);
|
||||
return DimensionConverter.convert2DimensionResp(dimensionDO, new HashMap<>());
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageInfo<DimensionResp> queryDimension(PageDimensionReq pageDimensionReq) {
|
||||
DimensionFilter dimensionFilter = new DimensionFilter();
|
||||
@@ -211,7 +204,8 @@ public class DimensionServiceImpl implements DimensionService {
|
||||
public List<DimensionResp> getDimensions(MetaFilter metaFilter) {
|
||||
DimensionFilter dimensionFilter = new DimensionFilter();
|
||||
BeanUtils.copyProperties(metaFilter, dimensionFilter);
|
||||
return convertList(dimensionRepository.getDimension(dimensionFilter), modelService.getModelMap());
|
||||
List<DimensionDO> dimensionDOS = dimensionRepository.getDimension(dimensionFilter);
|
||||
return convertList(dimensionDOS, modelService.getModelMap());
|
||||
}
|
||||
|
||||
private List<DimensionResp> getDimensions(Long modelId) {
|
||||
@@ -238,7 +232,8 @@ public class DimensionServiceImpl implements DimensionService {
|
||||
List<DimensionResp> dimensionResps = Lists.newArrayList();
|
||||
if (!CollectionUtils.isEmpty(dimensionDOS)) {
|
||||
dimensionResps = dimensionDOS.stream()
|
||||
.map(dimensionDO -> DimensionConverter.convert2DimensionResp(dimensionDO, modelRespMap))
|
||||
.map(dimensionDO -> DimensionConverter
|
||||
.convert2DimensionResp(dimensionDO, modelRespMap))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
return dimensionResps;
|
||||
|
||||
@@ -13,9 +13,11 @@ import com.tencent.supersonic.common.pojo.enums.EventType;
|
||||
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||
import com.tencent.supersonic.common.util.BeanMapper;
|
||||
import com.tencent.supersonic.common.util.ChatGptHelper;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.Measure;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.MetricQueryDefaultConfig;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.MetricTypeParams;
|
||||
import com.tencent.supersonic.semantic.api.model.request.MetaBatchReq;
|
||||
import com.tencent.supersonic.semantic.api.model.request.MetricReq;
|
||||
@@ -29,6 +31,7 @@ import com.tencent.supersonic.semantic.model.domain.MetricService;
|
||||
import com.tencent.supersonic.semantic.model.domain.ModelService;
|
||||
import com.tencent.supersonic.semantic.model.domain.dataobject.CollectDO;
|
||||
import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDO;
|
||||
import com.tencent.supersonic.semantic.model.domain.dataobject.MetricQueryDefaultConfigDO;
|
||||
import com.tencent.supersonic.semantic.model.domain.pojo.MetaFilter;
|
||||
import com.tencent.supersonic.semantic.model.domain.pojo.MetricFilter;
|
||||
import com.tencent.supersonic.semantic.model.domain.repository.MetricRepository;
|
||||
@@ -291,6 +294,29 @@ public class MetricServiceImpl implements MetricService {
|
||||
return metricDOS.stream().map(this::getDataItem).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveOrUpdateMetricQueryDefaultConfig(MetricQueryDefaultConfig queryDefaultConfig, User user) {
|
||||
MetricQueryDefaultConfigDO metricQueryDefaultConfigDO = new MetricQueryDefaultConfigDO();
|
||||
if (queryDefaultConfig.getId() == null) {
|
||||
queryDefaultConfig.createdBy(user.getName());
|
||||
BeanMapper.mapper(queryDefaultConfig, metricQueryDefaultConfigDO);
|
||||
metricRepository.saveDefaultQueryConfig(metricQueryDefaultConfigDO);
|
||||
} else {
|
||||
queryDefaultConfig.updatedBy(user.getName());
|
||||
BeanMapper.mapper(queryDefaultConfig, metricQueryDefaultConfigDO);
|
||||
metricRepository.updateDefaultQueryConfig(metricQueryDefaultConfigDO);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public MetricQueryDefaultConfig getMetricQueryDefaultConfig(Long metricId, User user) {
|
||||
MetricQueryDefaultConfigDO metricQueryDefaultConfigDO =
|
||||
metricRepository.getDefaultQueryConfig(metricId, user.getName());
|
||||
MetricQueryDefaultConfig metricQueryDefaultConfig = new MetricQueryDefaultConfig();
|
||||
BeanMapper.mapper(metricQueryDefaultConfigDO, metricQueryDefaultConfig);
|
||||
return metricQueryDefaultConfig;
|
||||
}
|
||||
|
||||
private void checkParam(MetricReq metricReq) {
|
||||
MetricTypeParams typeParams = metricReq.getTypeParams();
|
||||
List<Measure> measures = typeParams.getMeasures();
|
||||
|
||||
@@ -211,8 +211,8 @@ public class ModelServiceImpl implements ModelService {
|
||||
.stream().map(measure -> ModelConverter.convert(measure, modelResp))).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
private void batchCreateDimension(ModelDO datasourceDO, User user) throws Exception {
|
||||
List<DimensionReq> dimensionReqs = ModelConverter.convertDimensionList(datasourceDO);
|
||||
private void batchCreateDimension(ModelDO modelDO, User user) throws Exception {
|
||||
List<DimensionReq> dimensionReqs = ModelConverter.convertDimensionList(modelDO);
|
||||
dimensionService.createDimensionBatch(dimensionReqs, user);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,8 +17,6 @@ public interface DimensionService {
|
||||
|
||||
List<DimensionResp> getDimensions(MetaFilter metaFilter);
|
||||
|
||||
DimensionResp getDimension(Long id);
|
||||
|
||||
DimensionResp getDimension(String bizName, Long modelId);
|
||||
|
||||
void batchUpdateStatus(MetaBatchReq metaBatchReq, User user);
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.DataItem;
|
||||
import com.tencent.supersonic.common.pojo.enums.EventType;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.MetricQueryDefaultConfig;
|
||||
import com.tencent.supersonic.semantic.api.model.request.MetaBatchReq;
|
||||
import com.tencent.supersonic.semantic.api.model.request.MetricReq;
|
||||
import com.tencent.supersonic.semantic.api.model.request.PageMetricReq;
|
||||
@@ -41,5 +42,9 @@ public interface MetricService {
|
||||
|
||||
List<DataItem> getDataItems(Long modelId);
|
||||
|
||||
void saveOrUpdateMetricQueryDefaultConfig(MetricQueryDefaultConfig queryDefaultConfig, User user);
|
||||
|
||||
MetricQueryDefaultConfig getMetricQueryDefaultConfig(Long metricId, User user);
|
||||
|
||||
void sendMetricEventBatch(List<Long> modelIds, EventType eventType);
|
||||
}
|
||||
|
||||
@@ -98,4 +98,6 @@ public class MetricDO {
|
||||
*/
|
||||
private String typeParams;
|
||||
|
||||
private String ext;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.tencent.supersonic.semantic.model.domain.dataobject;
|
||||
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@TableName("s2_metric_query_default_config")
|
||||
public class MetricQueryDefaultConfigDO {
|
||||
|
||||
|
||||
@TableId(value = "id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
private Long metricId;
|
||||
|
||||
private String userName;
|
||||
|
||||
private String defaultConfig;
|
||||
|
||||
private Date createdAt;
|
||||
|
||||
private String createdBy;
|
||||
|
||||
private Date updatedAt;
|
||||
|
||||
private String updatedBy;
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.tencent.supersonic.semantic.model.domain.repository;
|
||||
|
||||
|
||||
import com.tencent.supersonic.semantic.model.domain.dataobject.MetricQueryDefaultConfigDO;
|
||||
import com.tencent.supersonic.semantic.model.domain.pojo.MetricFilter;
|
||||
import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDO;
|
||||
import java.util.List;
|
||||
@@ -19,4 +20,10 @@ public interface MetricRepository {
|
||||
MetricDO getMetricById(Long id);
|
||||
|
||||
List<MetricDO> getMetric(MetricFilter metricFilter);
|
||||
|
||||
void saveDefaultQueryConfig(MetricQueryDefaultConfigDO defaultConfigDO);
|
||||
|
||||
void updateDefaultQueryConfig(MetricQueryDefaultConfigDO defaultConfigDO);
|
||||
|
||||
MetricQueryDefaultConfigDO getDefaultQueryConfig(Long metricId, String userName);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,7 @@ public class MetricConverter {
|
||||
metricDO.setTags(metricReq.getTag());
|
||||
metricDO.setRelateDimensions(JSONObject.toJSONString(metricReq.getRelateDimension()));
|
||||
metricDO.setStatus(StatusEnum.ONLINE.getCode());
|
||||
metricDO.setExt(JSONObject.toJSONString(metricReq.getExt()));
|
||||
return metricDO;
|
||||
}
|
||||
|
||||
@@ -47,6 +48,7 @@ public class MetricConverter {
|
||||
metricDO.setRelateDimensions(JSONObject.toJSONString(metricReq.getRelateDimension()));
|
||||
}
|
||||
metricDO.setTags(metricReq.getTag());
|
||||
metricDO.setExt(JSONObject.toJSONString(metricReq.getExt()));
|
||||
return metricDO;
|
||||
}
|
||||
|
||||
@@ -74,6 +76,9 @@ public class MetricConverter {
|
||||
metricResp.setTag(metricDO.getTags());
|
||||
metricResp.setRelateDimension(JSONObject.parseObject(metricDO.getRelateDimensions(),
|
||||
RelateDimension.class));
|
||||
if (metricDO.getExt() != null) {
|
||||
metricResp.setExt(JSONObject.parseObject(metricDO.getExt(), Map.class));
|
||||
}
|
||||
return metricResp;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.tencent.supersonic.semantic.model.infrastructure.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.tencent.supersonic.semantic.model.domain.dataobject.MetricQueryDefaultConfigDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface MetricQueryDefaultConfigDOMapper extends BaseMapper<MetricQueryDefaultConfigDO> {
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -1,11 +1,15 @@
|
||||
package com.tencent.supersonic.semantic.model.infrastructure.repository;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.tencent.supersonic.semantic.model.domain.dataobject.MetricDO;
|
||||
import com.tencent.supersonic.semantic.model.domain.dataobject.MetricQueryDefaultConfigDO;
|
||||
import com.tencent.supersonic.semantic.model.domain.pojo.MetricFilter;
|
||||
import com.tencent.supersonic.semantic.model.domain.repository.MetricRepository;
|
||||
import com.tencent.supersonic.semantic.model.infrastructure.mapper.MetricDOCustomMapper;
|
||||
import com.tencent.supersonic.semantic.model.infrastructure.mapper.MetricDOMapper;
|
||||
import com.tencent.supersonic.semantic.model.infrastructure.mapper.MetricQueryDefaultConfigDOMapper;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -17,10 +21,14 @@ public class MetricRepositoryImpl implements MetricRepository {
|
||||
|
||||
private MetricDOCustomMapper metricDOCustomMapper;
|
||||
|
||||
private MetricQueryDefaultConfigDOMapper metricQueryDefaultConfigDOMapper;
|
||||
|
||||
public MetricRepositoryImpl(MetricDOMapper metricDOMapper,
|
||||
MetricDOCustomMapper metricDOCustomMapper) {
|
||||
MetricDOCustomMapper metricDOCustomMapper,
|
||||
MetricQueryDefaultConfigDOMapper metricQueryDefaultConfigDOMapper) {
|
||||
this.metricDOMapper = metricDOMapper;
|
||||
this.metricDOCustomMapper = metricDOCustomMapper;
|
||||
this.metricQueryDefaultConfigDOMapper = metricQueryDefaultConfigDOMapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -54,4 +62,22 @@ public class MetricRepositoryImpl implements MetricRepository {
|
||||
return metricDOCustomMapper.query(metricFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveDefaultQueryConfig(MetricQueryDefaultConfigDO defaultConfigDO) {
|
||||
metricQueryDefaultConfigDOMapper.insert(defaultConfigDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateDefaultQueryConfig(MetricQueryDefaultConfigDO defaultConfigDO) {
|
||||
metricQueryDefaultConfigDOMapper.updateById(defaultConfigDO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MetricQueryDefaultConfigDO getDefaultQueryConfig(Long metricId, String userName) {
|
||||
QueryWrapper<MetricQueryDefaultConfigDO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.lambda().eq(MetricQueryDefaultConfigDO::getMetricId, metricId)
|
||||
.eq(MetricQueryDefaultConfigDO::getCreatedBy, userName);
|
||||
return metricQueryDefaultConfigDOMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,25 +7,26 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
||||
import com.tencent.supersonic.common.pojo.enums.SensitiveLevelEnum;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.semantic.api.model.pojo.MetricQueryDefaultConfig;
|
||||
import com.tencent.supersonic.semantic.api.model.request.MetaBatchReq;
|
||||
import com.tencent.supersonic.semantic.api.model.request.MetricReq;
|
||||
import com.tencent.supersonic.semantic.api.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.semantic.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.semantic.model.domain.MetricService;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import com.tencent.supersonic.semantic.model.domain.pojo.MetaFilter;
|
||||
import com.tencent.supersonic.semantic.model.domain.pojo.MetricFilter;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
@RestController
|
||||
@@ -127,4 +128,22 @@ public class MetricController {
|
||||
public List<DrillDownDimension> getDrillDownDimension(Long metricId) {
|
||||
return metricService.getDrillDownDimension(metricId);
|
||||
}
|
||||
|
||||
@PostMapping("/saveMetricQueryDefaultConfig")
|
||||
public boolean saveMetricQueryDefaultConfig(@RequestBody MetricQueryDefaultConfig queryDefaultConfig,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) {
|
||||
User user = UserHolder.findUser(request, response);
|
||||
metricService.saveOrUpdateMetricQueryDefaultConfig(queryDefaultConfig, user);
|
||||
return true;
|
||||
}
|
||||
|
||||
@RequestMapping("getMetricQueryDefaultConfig/{metricId}")
|
||||
public MetricQueryDefaultConfig getMetricQueryDefaultConfig(@PathVariable("metricId") Long metricId,
|
||||
HttpServletRequest request,
|
||||
HttpServletResponse response) {
|
||||
User user = UserHolder.findUser(request, response);
|
||||
return metricService.getMetricQueryDefaultConfig(metricId, user);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.Filter;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.QueryType;
|
||||
import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
@@ -310,6 +311,7 @@ public class QueryServiceImpl implements QueryService {
|
||||
dateInfo.setUnit(1);
|
||||
}
|
||||
queryStructReq.setDateInfo(dateInfo);
|
||||
queryStructReq.setQueryType(QueryType.TAG);
|
||||
return queryStructReq;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user