diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/MetricBaseReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/MetricBaseReq.java index c3e8f183c..de534ba4c 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/MetricBaseReq.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/MetricBaseReq.java @@ -23,20 +23,22 @@ public class MetricBaseReq extends SchemaItem { private DataFormat dataFormat; - private List tags; + private List classifications; private RelateDimension relateDimension; + private int isTag; + private Map ext = new HashMap<>(); - public String getTag() { - if (tags == null) { + public String getClassifications() { + if (classifications == null) { return null; } - if (CollectionUtils.isEmpty(tags)) { + if (CollectionUtils.isEmpty(classifications)) { return ""; } - return StringUtils.join(tags, ","); + return StringUtils.join(classifications, ","); } } diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/MetricResp.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/MetricResp.java index d41b5f4d3..408cd5f79 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/MetricResp.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/MetricResp.java @@ -43,7 +43,7 @@ public class MetricResp extends SchemaItem { private String alias; - private List tags; + private List classifications; private RelateDimension relateDimension; @@ -63,11 +63,11 @@ public class MetricResp extends SchemaItem { private int isTag; - public void setTag(String tag) { + public void setClassifications(String tag) { if (StringUtils.isBlank(tag)) { - tags = Lists.newArrayList(); + classifications = Lists.newArrayList(); } else { - tags = Arrays.asList(tag.split(",")); + classifications = Arrays.asList(tag.split(",")); } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/MetricDO.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/MetricDO.java index a292885ac..a733e06f4 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/MetricDO.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/MetricDO.java @@ -87,7 +87,7 @@ public class MetricDO { /** * */ - private String tags; + private String classifications; /** * diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/TagMetaService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/TagMetaService.java index 12abe9701..6e5d02da6 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/TagMetaService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/TagMetaService.java @@ -2,9 +2,11 @@ package com.tencent.supersonic.headless.server.service; import com.github.pagehelper.PageInfo; import com.tencent.supersonic.auth.api.authentication.pojo.User; +import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType; import com.tencent.supersonic.headless.api.pojo.request.TagDeleteReq; import com.tencent.supersonic.headless.api.pojo.request.TagFilterPageReq; import com.tencent.supersonic.headless.api.pojo.request.TagReq; +import com.tencent.supersonic.headless.api.pojo.response.TagItem; import com.tencent.supersonic.headless.api.pojo.response.TagResp; import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO; import com.tencent.supersonic.headless.server.pojo.TagFilter; @@ -28,4 +30,6 @@ public interface TagMetaService { List getTagDOList(TagFilter tagFilter, User user); PageInfo queryTagMarketPage(TagFilterPageReq tagMarketPageReq, User user); + + List getTagItems(User user, List itemIds, TagDefineType tagDefineType); } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java index bae880d46..2a1f8511a 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java @@ -26,22 +26,13 @@ import com.tencent.supersonic.headless.api.pojo.response.DomainResp; import com.tencent.supersonic.headless.api.pojo.response.MetricResp; import com.tencent.supersonic.headless.api.pojo.response.TagItem; import com.tencent.supersonic.headless.server.persistence.dataobject.DataSetDO; -import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO; import com.tencent.supersonic.headless.server.persistence.mapper.DataSetDOMapper; import com.tencent.supersonic.headless.server.pojo.MetaFilter; -import com.tencent.supersonic.headless.server.pojo.TagFilter; import com.tencent.supersonic.headless.server.service.DataSetService; import com.tencent.supersonic.headless.server.service.DimensionService; import com.tencent.supersonic.headless.server.service.DomainService; import com.tencent.supersonic.headless.server.service.MetricService; import com.tencent.supersonic.headless.server.service.TagMetaService; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.lang3.tuple.Pair; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.stereotype.Service; -import org.springframework.util.CollectionUtils; import java.util.Arrays; import java.util.Comparator; import java.util.Date; @@ -52,6 +43,13 @@ import java.util.Set; import java.util.concurrent.TimeUnit; import java.util.function.Function; import java.util.stream.Collectors; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; @Service public class DataSetServiceImpl @@ -164,21 +162,6 @@ public class DataSetServiceImpl domainIds.contains(dataSetResp.getDomainId())).collect(Collectors.toList()); } - private List getTagItems(User user, List dimensionIds, TagDefineType tagDefineType) { - TagFilter tagFilter = new TagFilter(); - tagFilter.setTagDefineType(tagDefineType); - tagFilter.setItemIds(dimensionIds); - Set dimensionItemSet = tagMetaService.getTagDOList(tagFilter, user).stream().map(TagDO::getItemId) - .collect(Collectors.toSet()); - return dimensionIds.stream().map(entry -> { - TagItem tagItem = new TagItem(); - tagItem.setIsTag(Boolean.compare(dimensionItemSet.contains(entry), false)); - tagItem.setItemId(entry); - return tagItem; - } - ).collect(Collectors.toList()); - } - private DataSetResp convert(DataSetDO dataSetDO, User user) { DataSetResp dataSetResp = new DataSetResp(); BeanMapper.mapper(dataSetDO, dataSetResp); @@ -191,10 +174,11 @@ public class DataSetServiceImpl dataSetResp.setAdminOrgs(StringUtils.isBlank(dataSetDO.getAdminOrg()) ? Lists.newArrayList() : Arrays.asList(dataSetDO.getAdminOrg().split(","))); dataSetResp.setTypeEnum(TypeEnums.DATASET); - List dimensionItems = getTagItems(user, dataSetResp.dimensionIds(), TagDefineType.DIMENSION); + List dimensionItems = tagMetaService.getTagItems(user, dataSetResp.dimensionIds(), + TagDefineType.DIMENSION); dataSetResp.setAllDimensions(dimensionItems); - List metricItems = getTagItems(user, dataSetResp.metricIds(), TagDefineType.METRIC); + List metricItems = tagMetaService.getTagItems(user, dataSetResp.metricIds(), TagDefineType.METRIC); dataSetResp.setAllMetrics(metricItems); return dataSetResp; } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java index 5fabff0ff..731d7e496 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DimensionServiceImpl.java @@ -27,6 +27,7 @@ import com.tencent.supersonic.headless.api.pojo.response.DatabaseResp; import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; +import com.tencent.supersonic.headless.api.pojo.response.TagItem; import com.tencent.supersonic.headless.server.persistence.dataobject.DimensionDO; import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO; import com.tencent.supersonic.headless.server.persistence.repository.DimensionRepository; @@ -81,12 +82,12 @@ public class DimensionServiceImpl implements DimensionService { public DimensionServiceImpl(DimensionRepository dimensionRepository, - ModelService modelService, - ChatGptHelper chatGptHelper, - DatabaseService databaseService, - ModelRelaService modelRelaService, - DataSetService dataSetService, - TagMetaService tagMetaService) { + ModelService modelService, + ChatGptHelper chatGptHelper, + DatabaseService databaseService, + ModelRelaService modelRelaService, + DataSetService dataSetService, + TagMetaService tagMetaService) { this.modelService = modelService; this.dimensionRepository = dimensionRepository; this.chatGptHelper = chatGptHelper; @@ -125,7 +126,7 @@ public class DimensionServiceImpl implements DimensionService { return; } List dimensionDOS = dimensionToInsert.stream().peek(dimension -> - dimension.createdBy(user.getName())) + dimension.createdBy(user.getName())) .map(DimensionConverter::convert2DimensionDO) .collect(Collectors.toList()); dimensionRepository.createDimensionBatch(dimensionDOS); @@ -216,7 +217,7 @@ public class DimensionServiceImpl implements DimensionService { BeanUtils.copyProperties(pageDimensionReq, dimensionFilter); dimensionFilter.setModelIds(pageDimensionReq.getModelIds()); PageInfo dimensionDOPageInfo = PageHelper.startPage(pageDimensionReq.getCurrent(), - pageDimensionReq.getPageSize()) + pageDimensionReq.getPageSize()) .doSelectPageInfo(() -> queryDimension(dimensionFilter)); PageInfo pageInfo = new PageInfo<>(); BeanUtils.copyProperties(dimensionDOPageInfo, pageInfo); @@ -240,6 +241,22 @@ public class DimensionServiceImpl implements DimensionService { BeanUtils.copyProperties(metaFilter, dimensionFilter); List dimensionDOS = dimensionRepository.getDimension(dimensionFilter); List dimensionResps = convertList(dimensionDOS, modelService.getModelMap()); + + List dimensionIds = dimensionResps.stream().map(dimensionResp -> dimensionResp.getId()) + .collect(Collectors.toList()); + List tagItems = tagMetaService.getTagItems(User.getFakeUser(), dimensionIds, TagDefineType.METRIC); + Map itemIdToTagItem = tagItems.stream() + .collect(Collectors.toMap(tag -> tag.getItemId(), tag -> tag, (newTag, oldTag) -> newTag)); + + if (Objects.nonNull(itemIdToTagItem)) { + dimensionResps.stream().forEach(metricResp -> { + Long metricRespId = metricResp.getId(); + if (itemIdToTagItem.containsKey(metricRespId)) { + metricResp.setIsTag(itemIdToTagItem.get(metricRespId).getIsTag()); + } + }); + } + if (!CollectionUtils.isEmpty(metaFilter.getFieldsDepend())) { return filterByField(dimensionResps, metaFilter.getFieldsDepend()); } @@ -282,7 +299,7 @@ public class DimensionServiceImpl implements DimensionService { } private List convertList(List dimensionDOS, - Map modelRespMap) { + Map modelRespMap) { List dimensionResps = Lists.newArrayList(); if (!CollectionUtils.isEmpty(dimensionDOS)) { dimensionResps = dimensionDOS.stream() diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java index 716c606b2..155b4a933 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/MetricServiceImpl.java @@ -34,6 +34,7 @@ import com.tencent.supersonic.headless.api.pojo.response.DataSetResp; import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.MetricResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp; +import com.tencent.supersonic.headless.api.pojo.response.TagItem; import com.tencent.supersonic.headless.server.persistence.dataobject.CollectDO; import com.tencent.supersonic.headless.server.persistence.dataobject.MetricDO; import com.tencent.supersonic.headless.server.persistence.dataobject.MetricQueryDefaultConfigDO; @@ -93,13 +94,13 @@ public class MetricServiceImpl implements MetricService { private TagMetaService tagMetaService; public MetricServiceImpl(MetricRepository metricRepository, - ModelService modelService, - ChatGptHelper chatGptHelper, - CollectService collectService, - DataSetService dataSetService, - ApplicationEventPublisher eventPublisher, - DimensionService dimensionService, - TagMetaService tagMetaService) { + ModelService modelService, + ChatGptHelper chatGptHelper, + CollectService collectService, + DataSetService dataSetService, + ApplicationEventPublisher eventPublisher, + DimensionService dimensionService, + TagMetaService tagMetaService) { this.metricRepository = metricRepository; this.modelService = modelService; this.chatGptHelper = chatGptHelper; @@ -220,7 +221,7 @@ public class MetricServiceImpl implements MetricService { } } PageInfo metricDOPageInfo = PageHelper.startPage(pageMetricReq.getCurrent(), - pageMetricReq.getPageSize()) + pageMetricReq.getPageSize()) .doSelectPageInfo(() -> queryMetric(metricFilter)); PageInfo pageInfo = new PageInfo<>(); BeanUtils.copyProperties(metricDOPageInfo, pageInfo); @@ -240,6 +241,20 @@ public class MetricServiceImpl implements MetricService { MetricFilter metricFilter = new MetricFilter(); BeanUtils.copyProperties(metaFilter, metricFilter); List metricResps = convertList(queryMetric(metricFilter)); + List metricIds = metricResps.stream().map(metricResp -> metricResp.getId()).collect(Collectors.toList()); + + List tagItems = tagMetaService.getTagItems(User.getFakeUser(), metricIds, TagDefineType.METRIC); + Map itemIdToTagItem = tagItems.stream() + .collect(Collectors.toMap(tag -> tag.getItemId(), tag -> tag, (newTag, oldTag) -> newTag)); + + if (Objects.nonNull(itemIdToTagItem)) { + metricResps.stream().forEach(metricResp -> { + Long metricRespId = metricResp.getId(); + if (itemIdToTagItem.containsKey(metricRespId)) { + metricResp.setIsTag(itemIdToTagItem.get(metricRespId).getIsTag()); + } + }); + } if (!CollectionUtils.isEmpty(metaFilter.getFieldsDepend())) { return filterByField(metricResps, metaFilter.getFieldsDepend()); } @@ -254,6 +269,7 @@ public class MetricServiceImpl implements MetricService { if (CollectionUtils.isEmpty(metricRespList)) { return; } + TagFilter tagFilter = new TagFilter(); tagFilter.setTagDefineType(TagDefineType.METRIC); List metricIds = metricRespList.stream().map(metric -> metric.getId()) @@ -282,7 +298,7 @@ public class MetricServiceImpl implements MetricService { } private boolean filterByField(List metricResps, MetricResp metricResp, - List fields, Set metricRespFiltered) { + List fields, Set metricRespFiltered) { if (MetricDefineType.METRIC.equals(metricResp.getMetricDefineType())) { List ids = metricResp.getMetricDefineByMetricParams().getMetrics() .stream().map(MetricParam::getId).collect(Collectors.toList()); @@ -320,8 +336,8 @@ public class MetricServiceImpl implements MetricService { metricFilter.setModelIds(Lists.newArrayList(modelId)); List metricResps = getMetrics(metricFilter); return metricResps.stream().filter(metricResp -> - MetricDefineType.FIELD.equals(metricResp.getMetricDefineType()) - || MetricDefineType.MEASURE.equals(metricResp.getMetricDefineType())) + MetricDefineType.FIELD.equals(metricResp.getMetricDefineType()) + || MetricDefineType.MEASURE.equals(metricResp.getMetricDefineType())) .collect(Collectors.toList()); } @@ -391,7 +407,7 @@ public class MetricServiceImpl implements MetricService { return new HashSet<>(); } return metricResps.stream().flatMap(metricResp -> - metricResp.getTags().stream()).collect(Collectors.toSet()); + metricResp.getClassifications().stream()).collect(Collectors.toSet()); } @Override @@ -594,7 +610,7 @@ public class MetricServiceImpl implements MetricService { } private Set getModelIds(Set modelIdsByDomainId, List metricResps, - List dimensionResps) { + List dimensionResps) { Set result = new HashSet<>(); if (org.apache.commons.collections.CollectionUtils.isNotEmpty(modelIdsByDomainId)) { result.addAll(modelIdsByDomainId); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagMetaServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagMetaServiceImpl.java index bca72eb98..8f447cad5 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagMetaServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagMetaServiceImpl.java @@ -15,6 +15,7 @@ import com.tencent.supersonic.headless.api.pojo.response.DimensionResp; import com.tencent.supersonic.headless.api.pojo.response.DomainResp; import com.tencent.supersonic.headless.api.pojo.response.MetricResp; import com.tencent.supersonic.headless.api.pojo.response.ModelResp; +import com.tencent.supersonic.headless.api.pojo.response.TagItem; import com.tencent.supersonic.headless.api.pojo.response.TagObjectResp; import com.tencent.supersonic.headless.api.pojo.response.TagResp; import com.tencent.supersonic.headless.server.persistence.dataobject.CollectDO; @@ -58,9 +59,9 @@ public class TagMetaServiceImpl implements TagMetaService { private final DomainService domainService; public TagMetaServiceImpl(TagRepository tagRepository, ModelService modelService, - CollectService collectService, @Lazy DimensionService dimensionService, - @Lazy MetricService metricService, TagObjectService tagObjectService, - DomainService domainService) { + CollectService collectService, @Lazy DimensionService dimensionService, + @Lazy MetricService metricService, TagObjectService tagObjectService, + DomainService domainService) { this.tagRepository = tagRepository; this.modelService = modelService; this.collectService = collectService; @@ -155,10 +156,10 @@ public class TagMetaServiceImpl implements TagMetaService { TagFilter tagFilter = new TagFilter(); BeanUtils.copyProperties(tagMarketPageReq, tagFilter); List collectList = collectService.getCollectList(user.getName()); - List collectIds = collectList.stream() - .filter(collectDO -> SchemaElementType.TAG.name().equalsIgnoreCase(collectDO.getType())) - .map(CollectDO::getCollectId).collect(Collectors.toList()); if (tagMarketPageReq.isHasCollect()) { + List collectIds = collectList.stream() + .filter(collectDO -> SchemaElementType.TAG.name().equalsIgnoreCase(collectDO.getType())) + .map(CollectDO::getCollectId).collect(Collectors.toList()); if (CollectionUtils.isEmpty(collectIds)) { tagFilter.setIds(Lists.newArrayList(-1L)); } else { @@ -167,7 +168,7 @@ public class TagMetaServiceImpl implements TagMetaService { } tagFilter.setModelIds(modelIds); PageInfo tagDOPageInfo = PageHelper.startPage(tagMarketPageReq.getCurrent(), - tagMarketPageReq.getPageSize()) + tagMarketPageReq.getPageSize()) .doSelectPageInfo(() -> getTags(tagFilter)); List tagRespList = tagDOPageInfo.getList(); @@ -364,4 +365,19 @@ public class TagMetaServiceImpl implements TagMetaService { tagDO.setType(tagReq.getTagDefineType().name()); return tagDO; } + + public List getTagItems(User user, List itemIds, TagDefineType tagDefineType) { + TagFilter tagFilter = new TagFilter(); + tagFilter.setTagDefineType(tagDefineType); + tagFilter.setItemIds(itemIds); + Set dimensionItemSet = getTagDOList(tagFilter, user).stream().map(TagDO::getItemId) + .collect(Collectors.toSet()); + return itemIds.stream().map(entry -> { + TagItem tagItem = new TagItem(); + tagItem.setIsTag(Boolean.compare(dimensionItemSet.contains(entry), false)); + tagItem.setItemId(entry); + return tagItem; + } + ).collect(Collectors.toList()); + } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java index 95dcc9f80..576433b7a 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java @@ -31,7 +31,7 @@ public class MetricConverter { metricDO.setType(metricReq.getMetricType().name()); metricDO.setTypeParams(metricReq.getTypeParamsJson()); metricDO.setDataFormat(JSONObject.toJSONString(metricReq.getDataFormat())); - metricDO.setTags(metricReq.getTag()); + metricDO.setClassifications(metricReq.getClassifications()); metricDO.setRelateDimensions(JSONObject.toJSONString(metricReq.getRelateDimension())); metricDO.setStatus(StatusEnum.ONLINE.getCode()); metricDO.setExt(JSONObject.toJSONString(metricReq.getExt())); @@ -48,8 +48,8 @@ public class MetricConverter { if (metricReq.getRelateDimension() != null) { metricDO.setRelateDimensions(JSONObject.toJSONString(metricReq.getRelateDimension())); } - if (metricReq.getTag() != null) { - metricDO.setTags(metricReq.getTag()); + if (metricReq.getClassifications() != null) { + metricDO.setClassifications(metricReq.getClassifications()); } if (metricReq.getExt() != null) { metricDO.setExt(JSONObject.toJSONString(metricReq.getExt())); @@ -76,7 +76,7 @@ public class MetricConverter { metricResp.setDomainId(modelResp.getDomainId()); } metricResp.setIsCollect(collect != null && collect.contains(metricDO.getId())); - metricResp.setTag(metricDO.getTags()); + metricResp.setClassifications(metricDO.getClassifications()); metricResp.setRelateDimension(JSONObject.parseObject(metricDO.getRelateDimensions(), RelateDimension.class)); if (metricDO.getExt() != null) { diff --git a/headless/server/src/main/resources/mapper/custom/MetricDOCustomMapper.xml b/headless/server/src/main/resources/mapper/custom/MetricDOCustomMapper.xml index 7f91c9178..3be579e3c 100644 --- a/headless/server/src/main/resources/mapper/custom/MetricDOCustomMapper.xml +++ b/headless/server/src/main/resources/mapper/custom/MetricDOCustomMapper.xml @@ -19,7 +19,7 @@ - + id , model_id, name, biz_name, description, status, sensitive_level, type, created_at, - created_by, updated_at, updated_by, data_format_type, data_format, alias, tags, define_type + created_by, updated_at, updated_by, data_format_type, data_format, alias, classifications, define_type type_params @@ -110,7 +110,7 @@ biz_name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or description like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or alias like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or - tags like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or + classifications like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or created_by like CONCAT('%',#{key , jdbcType=VARCHAR},'%') ) diff --git a/headless/server/src/test/java/com/tencent/supersonic/headless/server/service/MetricServiceImplTest.java b/headless/server/src/test/java/com/tencent/supersonic/headless/server/service/MetricServiceImplTest.java index 9ba929ea1..936a0bd31 100644 --- a/headless/server/src/test/java/com/tencent/supersonic/headless/server/service/MetricServiceImplTest.java +++ b/headless/server/src/test/java/com/tencent/supersonic/headless/server/service/MetricServiceImplTest.java @@ -1,5 +1,8 @@ package com.tencent.supersonic.headless.server.service; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.when; + import com.google.common.collect.Lists; import com.tencent.supersonic.auth.api.authentication.pojo.User; import com.tencent.supersonic.common.pojo.DataFormat; @@ -22,16 +25,12 @@ import com.tencent.supersonic.headless.server.persistence.repository.MetricRepos import com.tencent.supersonic.headless.server.service.impl.DataSetServiceImpl; import com.tencent.supersonic.headless.server.service.impl.MetricServiceImpl; import com.tencent.supersonic.headless.server.utils.MetricConverter; +import java.util.HashMap; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.mockito.Mockito; import org.springframework.context.ApplicationEventPublisher; -import java.util.HashMap; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - public class MetricServiceImplTest { @Test @@ -94,7 +93,7 @@ public class MetricServiceImplTest { new MeasureParam("s2_uv", "department='hr'"))); typeParams.setExpr("s2_pv/s2_uv"); metricReq.setMetricDefineByMeasureParams(typeParams); - metricReq.setTags(Lists.newArrayList("核心指标")); + metricReq.setClassifications(Lists.newArrayList("核心指标")); metricReq.setRelateDimension( RelateDimension.builder().drillDownDimensions(Lists.newArrayList( new DrillDownDimension(1L), @@ -125,7 +124,7 @@ public class MetricServiceImplTest { new MeasureParam("s2_uv", "department='hr'"))); typeParams.setExpr("s2_pv/s2_uv"); metricResp.setMetricDefineByMeasureParams(typeParams); - metricResp.setTags(Lists.newArrayList("核心指标")); + metricResp.setClassifications("核心指标"); metricResp.setRelateDimension( RelateDimension.builder().drillDownDimensions(Lists.newArrayList( new DrillDownDimension(1L), diff --git a/launchers/headless/src/main/resources/db/semantic-schema-h2.sql b/launchers/headless/src/main/resources/db/semantic-schema-h2.sql index 56a02e723..1537b5ff1 100644 --- a/launchers/headless/src/main/resources/db/semantic-schema-h2.sql +++ b/launchers/headless/src/main/resources/db/semantic-schema-h2.sql @@ -114,7 +114,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, - `tags` varchar(500) DEFAULT NULL, + `classifications` varchar(500) DEFAULT NULL, `relate_dimensions` varchar(500) DEFAULT NULL, PRIMARY KEY (`id`) ); diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/ModelDemoDataLoader.java b/launchers/standalone/src/main/java/com/tencent/supersonic/ModelDemoDataLoader.java index a47231384..da5ea4bb2 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/ModelDemoDataLoader.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/ModelDemoDataLoader.java @@ -411,7 +411,7 @@ public class ModelDemoDataLoader { metricReq.setBizName("stay_hours"); metricReq.setSensitiveLevel(SensitiveLevelEnum.HIGH.getCode()); metricReq.setDescription("停留时长"); - metricReq.setTags(Collections.singletonList("核心指标")); + metricReq.setClassifications(Collections.singletonList("核心指标")); metricReq.setAlias("访问时长"); MetricDefineByMeasureParams metricTypeParams = new MetricDefineByMeasureParams(); metricTypeParams.setExpr("s2_stay_time_statis_stay_hours"); @@ -476,7 +476,7 @@ public class ModelDemoDataLoader { metricReq.setBizName("pv_avg"); metricReq.setSensitiveLevel(SensitiveLevelEnum.HIGH.getCode()); metricReq.setDescription("每个用户平均访问的次数"); - metricReq.setTags(Collections.singletonList("核心指标")); + metricReq.setClassifications(Collections.singletonList("核心指标")); metricReq.setAlias("平均访问次数"); MetricDefineByMetricParams metricTypeParams = new MetricDefineByMetricParams(); metricTypeParams.setExpr("pv/uv"); diff --git a/launchers/standalone/src/main/resources/config.update/sql-update.sql b/launchers/standalone/src/main/resources/config.update/sql-update.sql index 7afe8218d..d22cf3388 100644 --- a/launchers/standalone/src/main/resources/config.update/sql-update.sql +++ b/launchers/standalone/src/main/resources/config.update/sql-update.sql @@ -285,4 +285,7 @@ CREATE TABLE IF NOT EXISTS `s2_query_rule` ( `ext` LONGVARCHAR DEFAULT NULL , PRIMARY KEY (`id`) ); -COMMENT ON TABLE s2_query_rule IS 'tag query rule table'; \ No newline at end of file +COMMENT ON TABLE s2_query_rule IS 'tag query rule table'; + +--20240325 +ALTER TABLE s2_metric RENAME COLUMN tags TO classifications; diff --git a/launchers/standalone/src/main/resources/db/schema-h2.sql b/launchers/standalone/src/main/resources/db/schema-h2.sql index 49083d650..a3ccc5cfb 100644 --- a/launchers/standalone/src/main/resources/db/schema-h2.sql +++ b/launchers/standalone/src/main/resources/db/schema-h2.sql @@ -186,7 +186,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, - `tags` varchar(500) DEFAULT NULL, + `classifications` varchar(500) DEFAULT NULL, `relate_dimensions` varchar(500) DEFAULT NULL, `ext` LONGVARCHAR DEFAULT NULL , `define_type` varchar(50) NOT NULL, -- MEASURE, FIELD, METRIC diff --git a/launchers/standalone/src/main/resources/db/schema-mysql.sql b/launchers/standalone/src/main/resources/db/schema-mysql.sql index b38ac56b9..e54dc279f 100644 --- a/launchers/standalone/src/main/resources/db/schema-mysql.sql +++ b/launchers/standalone/src/main/resources/db/schema-mysql.sql @@ -291,7 +291,7 @@ CREATE TABLE `s2_metric` `data_format_type` varchar(50) DEFAULT NULL COMMENT '数值类型', `data_format` varchar(500) DEFAULT NULL COMMENT '数值类型参数', `alias` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, - `tags` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, + `classifications` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL, `relate_dimensions` varchar(500) DEFAULT NULL COMMENT '指标相关维度', `ext` text DEFAULT NULL, `define_type` varchar(50) DEFAULT NULL, -- MEASURE, FIELD, METRIC diff --git a/launchers/standalone/src/test/resources/db/schema-h2.sql b/launchers/standalone/src/test/resources/db/schema-h2.sql index ef89e8112..394dbd701 100644 --- a/launchers/standalone/src/test/resources/db/schema-h2.sql +++ b/launchers/standalone/src/test/resources/db/schema-h2.sql @@ -186,7 +186,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` ( `data_format_type` varchar(50) DEFAULT NULL , `data_format` varchar(500) DEFAULT NULL, `alias` varchar(500) DEFAULT NULL, - `tags` varchar(500) DEFAULT NULL, + `classifications` varchar(500) DEFAULT NULL, `relate_dimensions` varchar(500) DEFAULT NULL, `ext` LONGVARCHAR DEFAULT NULL , `define_type` varchar(50) NOT NULL, -- MEASURE, FIELD, METRIC