(improvement)(semantic) save metric default query config (#503)

Co-authored-by: jolunoluo
This commit is contained in:
LXW
2023-12-13 21:29:15 +08:00
committed by GitHub
parent 2c7afd0d55
commit f89be48e98
24 changed files with 255 additions and 84 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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);
}

View File

@@ -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);
}
}

View File

@@ -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",

View File

@@ -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`)
);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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 "";

View File

@@ -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();

View File

@@ -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;

View File

@@ -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();

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -98,4 +98,6 @@ public class MetricDO {
*/
private String typeParams;
private String ext;
}

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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> {
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;
}