mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
(improvement)(Headless) Modify metric category name, add information about whether metrics and dimensions are tags in fetchDataSetSchema (#857)
This commit is contained in:
@@ -23,20 +23,22 @@ public class MetricBaseReq extends SchemaItem {
|
||||
|
||||
private DataFormat dataFormat;
|
||||
|
||||
private List<String> tags;
|
||||
private List<String> classifications;
|
||||
|
||||
private RelateDimension relateDimension;
|
||||
|
||||
private int isTag;
|
||||
|
||||
private Map<String, Object> 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, ",");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ public class MetricResp extends SchemaItem {
|
||||
|
||||
private String alias;
|
||||
|
||||
private List<String> tags;
|
||||
private List<String> 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(","));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ public class MetricDO {
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String tags;
|
||||
private String classifications;
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -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<TagDO> getTagDOList(TagFilter tagFilter, User user);
|
||||
|
||||
PageInfo<TagResp> queryTagMarketPage(TagFilterPageReq tagMarketPageReq, User user);
|
||||
|
||||
List<TagItem> getTagItems(User user, List<Long> itemIds, TagDefineType tagDefineType);
|
||||
}
|
||||
|
||||
@@ -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<TagItem> getTagItems(User user, List<Long> dimensionIds, TagDefineType tagDefineType) {
|
||||
TagFilter tagFilter = new TagFilter();
|
||||
tagFilter.setTagDefineType(tagDefineType);
|
||||
tagFilter.setItemIds(dimensionIds);
|
||||
Set<Long> 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<TagItem> dimensionItems = getTagItems(user, dataSetResp.dimensionIds(), TagDefineType.DIMENSION);
|
||||
List<TagItem> dimensionItems = tagMetaService.getTagItems(user, dataSetResp.dimensionIds(),
|
||||
TagDefineType.DIMENSION);
|
||||
dataSetResp.setAllDimensions(dimensionItems);
|
||||
|
||||
List<TagItem> metricItems = getTagItems(user, dataSetResp.metricIds(), TagDefineType.METRIC);
|
||||
List<TagItem> metricItems = tagMetaService.getTagItems(user, dataSetResp.metricIds(), TagDefineType.METRIC);
|
||||
dataSetResp.setAllMetrics(metricItems);
|
||||
return dataSetResp;
|
||||
}
|
||||
|
||||
@@ -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<DimensionDO> 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<DimensionDO> dimensionDOPageInfo = PageHelper.startPage(pageDimensionReq.getCurrent(),
|
||||
pageDimensionReq.getPageSize())
|
||||
pageDimensionReq.getPageSize())
|
||||
.doSelectPageInfo(() -> queryDimension(dimensionFilter));
|
||||
PageInfo<DimensionResp> pageInfo = new PageInfo<>();
|
||||
BeanUtils.copyProperties(dimensionDOPageInfo, pageInfo);
|
||||
@@ -240,6 +241,22 @@ public class DimensionServiceImpl implements DimensionService {
|
||||
BeanUtils.copyProperties(metaFilter, dimensionFilter);
|
||||
List<DimensionDO> dimensionDOS = dimensionRepository.getDimension(dimensionFilter);
|
||||
List<DimensionResp> dimensionResps = convertList(dimensionDOS, modelService.getModelMap());
|
||||
|
||||
List<Long> dimensionIds = dimensionResps.stream().map(dimensionResp -> dimensionResp.getId())
|
||||
.collect(Collectors.toList());
|
||||
List<TagItem> tagItems = tagMetaService.getTagItems(User.getFakeUser(), dimensionIds, TagDefineType.METRIC);
|
||||
Map<Long, TagItem> 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<DimensionResp> convertList(List<DimensionDO> dimensionDOS,
|
||||
Map<Long, ModelResp> modelRespMap) {
|
||||
Map<Long, ModelResp> modelRespMap) {
|
||||
List<DimensionResp> dimensionResps = Lists.newArrayList();
|
||||
if (!CollectionUtils.isEmpty(dimensionDOS)) {
|
||||
dimensionResps = dimensionDOS.stream()
|
||||
|
||||
@@ -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<MetricDO> metricDOPageInfo = PageHelper.startPage(pageMetricReq.getCurrent(),
|
||||
pageMetricReq.getPageSize())
|
||||
pageMetricReq.getPageSize())
|
||||
.doSelectPageInfo(() -> queryMetric(metricFilter));
|
||||
PageInfo<MetricResp> 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<MetricResp> metricResps = convertList(queryMetric(metricFilter));
|
||||
List<Long> metricIds = metricResps.stream().map(metricResp -> metricResp.getId()).collect(Collectors.toList());
|
||||
|
||||
List<TagItem> tagItems = tagMetaService.getTagItems(User.getFakeUser(), metricIds, TagDefineType.METRIC);
|
||||
Map<Long, TagItem> 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<Long> metricIds = metricRespList.stream().map(metric -> metric.getId())
|
||||
@@ -282,7 +298,7 @@ public class MetricServiceImpl implements MetricService {
|
||||
}
|
||||
|
||||
private boolean filterByField(List<MetricResp> metricResps, MetricResp metricResp,
|
||||
List<String> fields, Set<MetricResp> metricRespFiltered) {
|
||||
List<String> fields, Set<MetricResp> metricRespFiltered) {
|
||||
if (MetricDefineType.METRIC.equals(metricResp.getMetricDefineType())) {
|
||||
List<Long> 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<MetricResp> 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<Long> getModelIds(Set<Long> modelIdsByDomainId, List<MetricResp> metricResps,
|
||||
List<DimensionResp> dimensionResps) {
|
||||
List<DimensionResp> dimensionResps) {
|
||||
Set<Long> result = new HashSet<>();
|
||||
if (org.apache.commons.collections.CollectionUtils.isNotEmpty(modelIdsByDomainId)) {
|
||||
result.addAll(modelIdsByDomainId);
|
||||
|
||||
@@ -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<CollectDO> collectList = collectService.getCollectList(user.getName());
|
||||
List<Long> collectIds = collectList.stream()
|
||||
.filter(collectDO -> SchemaElementType.TAG.name().equalsIgnoreCase(collectDO.getType()))
|
||||
.map(CollectDO::getCollectId).collect(Collectors.toList());
|
||||
if (tagMarketPageReq.isHasCollect()) {
|
||||
List<Long> 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<TagResp> tagDOPageInfo = PageHelper.startPage(tagMarketPageReq.getCurrent(),
|
||||
tagMarketPageReq.getPageSize())
|
||||
tagMarketPageReq.getPageSize())
|
||||
.doSelectPageInfo(() -> getTags(tagFilter));
|
||||
|
||||
List<TagResp> tagRespList = tagDOPageInfo.getList();
|
||||
@@ -364,4 +365,19 @@ public class TagMetaServiceImpl implements TagMetaService {
|
||||
tagDO.setType(tagReq.getTagDefineType().name());
|
||||
return tagDO;
|
||||
}
|
||||
|
||||
public List<TagItem> getTagItems(User user, List<Long> itemIds, TagDefineType tagDefineType) {
|
||||
TagFilter tagFilter = new TagFilter();
|
||||
tagFilter.setTagDefineType(tagDefineType);
|
||||
tagFilter.setItemIds(itemIds);
|
||||
Set<Long> 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());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
<result column="data_format_type" jdbcType="VARCHAR" property="dataFormatType"/>
|
||||
<result column="data_format" jdbcType="VARCHAR" property="dataFormat"/>
|
||||
<result column="alias" jdbcType="VARCHAR" property="alias"/>
|
||||
<result column="tags" jdbcType="VARCHAR" property="tags"/>
|
||||
<result column="classifications" jdbcType="VARCHAR" property="classifications"/>
|
||||
<result column="define_type" jdbcType="VARCHAR" property="defineType"/>
|
||||
</resultMap>
|
||||
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs"
|
||||
@@ -60,7 +60,7 @@
|
||||
<sql id="Base_Column_List">
|
||||
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
|
||||
</sql>
|
||||
<sql id="Blob_Column_List">
|
||||
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},'%') )
|
||||
</if>
|
||||
<if test="id != null">
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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`)
|
||||
);
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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';
|
||||
COMMENT ON TABLE s2_query_rule IS 'tag query rule table';
|
||||
|
||||
--20240325
|
||||
ALTER TABLE s2_metric RENAME COLUMN tags TO classifications;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user