mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 12:37:55 +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 DataFormat dataFormat;
|
||||||
|
|
||||||
private List<String> tags;
|
private List<String> classifications;
|
||||||
|
|
||||||
private RelateDimension relateDimension;
|
private RelateDimension relateDimension;
|
||||||
|
|
||||||
|
private int isTag;
|
||||||
|
|
||||||
private Map<String, Object> ext = new HashMap<>();
|
private Map<String, Object> ext = new HashMap<>();
|
||||||
|
|
||||||
public String getTag() {
|
public String getClassifications() {
|
||||||
if (tags == null) {
|
if (classifications == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (CollectionUtils.isEmpty(tags)) {
|
if (CollectionUtils.isEmpty(classifications)) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
return StringUtils.join(tags, ",");
|
return StringUtils.join(classifications, ",");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ public class MetricResp extends SchemaItem {
|
|||||||
|
|
||||||
private String alias;
|
private String alias;
|
||||||
|
|
||||||
private List<String> tags;
|
private List<String> classifications;
|
||||||
|
|
||||||
private RelateDimension relateDimension;
|
private RelateDimension relateDimension;
|
||||||
|
|
||||||
@@ -63,11 +63,11 @@ public class MetricResp extends SchemaItem {
|
|||||||
|
|
||||||
private int isTag;
|
private int isTag;
|
||||||
|
|
||||||
public void setTag(String tag) {
|
public void setClassifications(String tag) {
|
||||||
if (StringUtils.isBlank(tag)) {
|
if (StringUtils.isBlank(tag)) {
|
||||||
tags = Lists.newArrayList();
|
classifications = Lists.newArrayList();
|
||||||
} else {
|
} 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.github.pagehelper.PageInfo;
|
||||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
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.TagDeleteReq;
|
||||||
import com.tencent.supersonic.headless.api.pojo.request.TagFilterPageReq;
|
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.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.api.pojo.response.TagResp;
|
||||||
import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO;
|
import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO;
|
||||||
import com.tencent.supersonic.headless.server.pojo.TagFilter;
|
import com.tencent.supersonic.headless.server.pojo.TagFilter;
|
||||||
@@ -28,4 +30,6 @@ public interface TagMetaService {
|
|||||||
List<TagDO> getTagDOList(TagFilter tagFilter, User user);
|
List<TagDO> getTagDOList(TagFilter tagFilter, User user);
|
||||||
|
|
||||||
PageInfo<TagResp> queryTagMarketPage(TagFilterPageReq tagMarketPageReq, 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.MetricResp;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.TagItem;
|
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.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.persistence.mapper.DataSetDOMapper;
|
||||||
import com.tencent.supersonic.headless.server.pojo.MetaFilter;
|
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.DataSetService;
|
||||||
import com.tencent.supersonic.headless.server.service.DimensionService;
|
import com.tencent.supersonic.headless.server.service.DimensionService;
|
||||||
import com.tencent.supersonic.headless.server.service.DomainService;
|
import com.tencent.supersonic.headless.server.service.DomainService;
|
||||||
import com.tencent.supersonic.headless.server.service.MetricService;
|
import com.tencent.supersonic.headless.server.service.MetricService;
|
||||||
import com.tencent.supersonic.headless.server.service.TagMetaService;
|
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.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@@ -52,6 +43,13 @@ import java.util.Set;
|
|||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
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
|
@Service
|
||||||
public class DataSetServiceImpl
|
public class DataSetServiceImpl
|
||||||
@@ -164,21 +162,6 @@ public class DataSetServiceImpl
|
|||||||
domainIds.contains(dataSetResp.getDomainId())).collect(Collectors.toList());
|
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) {
|
private DataSetResp convert(DataSetDO dataSetDO, User user) {
|
||||||
DataSetResp dataSetResp = new DataSetResp();
|
DataSetResp dataSetResp = new DataSetResp();
|
||||||
BeanMapper.mapper(dataSetDO, dataSetResp);
|
BeanMapper.mapper(dataSetDO, dataSetResp);
|
||||||
@@ -191,10 +174,11 @@ public class DataSetServiceImpl
|
|||||||
dataSetResp.setAdminOrgs(StringUtils.isBlank(dataSetDO.getAdminOrg())
|
dataSetResp.setAdminOrgs(StringUtils.isBlank(dataSetDO.getAdminOrg())
|
||||||
? Lists.newArrayList() : Arrays.asList(dataSetDO.getAdminOrg().split(",")));
|
? Lists.newArrayList() : Arrays.asList(dataSetDO.getAdminOrg().split(",")));
|
||||||
dataSetResp.setTypeEnum(TypeEnums.DATASET);
|
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);
|
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);
|
dataSetResp.setAllMetrics(metricItems);
|
||||||
return dataSetResp;
|
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.DimensionResp;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
|
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.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.DimensionDO;
|
||||||
import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO;
|
import com.tencent.supersonic.headless.server.persistence.dataobject.TagDO;
|
||||||
import com.tencent.supersonic.headless.server.persistence.repository.DimensionRepository;
|
import com.tencent.supersonic.headless.server.persistence.repository.DimensionRepository;
|
||||||
@@ -240,6 +241,22 @@ public class DimensionServiceImpl implements DimensionService {
|
|||||||
BeanUtils.copyProperties(metaFilter, dimensionFilter);
|
BeanUtils.copyProperties(metaFilter, dimensionFilter);
|
||||||
List<DimensionDO> dimensionDOS = dimensionRepository.getDimension(dimensionFilter);
|
List<DimensionDO> dimensionDOS = dimensionRepository.getDimension(dimensionFilter);
|
||||||
List<DimensionResp> dimensionResps = convertList(dimensionDOS, modelService.getModelMap());
|
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())) {
|
if (!CollectionUtils.isEmpty(metaFilter.getFieldsDepend())) {
|
||||||
return filterByField(dimensionResps, metaFilter.getFieldsDepend());
|
return filterByField(dimensionResps, metaFilter.getFieldsDepend());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.DimensionResp;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
|
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.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.CollectDO;
|
||||||
import com.tencent.supersonic.headless.server.persistence.dataobject.MetricDO;
|
import com.tencent.supersonic.headless.server.persistence.dataobject.MetricDO;
|
||||||
import com.tencent.supersonic.headless.server.persistence.dataobject.MetricQueryDefaultConfigDO;
|
import com.tencent.supersonic.headless.server.persistence.dataobject.MetricQueryDefaultConfigDO;
|
||||||
@@ -240,6 +241,20 @@ public class MetricServiceImpl implements MetricService {
|
|||||||
MetricFilter metricFilter = new MetricFilter();
|
MetricFilter metricFilter = new MetricFilter();
|
||||||
BeanUtils.copyProperties(metaFilter, metricFilter);
|
BeanUtils.copyProperties(metaFilter, metricFilter);
|
||||||
List<MetricResp> metricResps = convertList(queryMetric(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())) {
|
if (!CollectionUtils.isEmpty(metaFilter.getFieldsDepend())) {
|
||||||
return filterByField(metricResps, metaFilter.getFieldsDepend());
|
return filterByField(metricResps, metaFilter.getFieldsDepend());
|
||||||
}
|
}
|
||||||
@@ -254,6 +269,7 @@ public class MetricServiceImpl implements MetricService {
|
|||||||
if (CollectionUtils.isEmpty(metricRespList)) {
|
if (CollectionUtils.isEmpty(metricRespList)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
TagFilter tagFilter = new TagFilter();
|
TagFilter tagFilter = new TagFilter();
|
||||||
tagFilter.setTagDefineType(TagDefineType.METRIC);
|
tagFilter.setTagDefineType(TagDefineType.METRIC);
|
||||||
List<Long> metricIds = metricRespList.stream().map(metric -> metric.getId())
|
List<Long> metricIds = metricRespList.stream().map(metric -> metric.getId())
|
||||||
@@ -391,7 +407,7 @@ public class MetricServiceImpl implements MetricService {
|
|||||||
return new HashSet<>();
|
return new HashSet<>();
|
||||||
}
|
}
|
||||||
return metricResps.stream().flatMap(metricResp ->
|
return metricResps.stream().flatMap(metricResp ->
|
||||||
metricResp.getTags().stream()).collect(Collectors.toSet());
|
metricResp.getClassifications().stream()).collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -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.DomainResp;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.MetricResp;
|
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.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.TagObjectResp;
|
||||||
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
|
import com.tencent.supersonic.headless.api.pojo.response.TagResp;
|
||||||
import com.tencent.supersonic.headless.server.persistence.dataobject.CollectDO;
|
import com.tencent.supersonic.headless.server.persistence.dataobject.CollectDO;
|
||||||
@@ -155,10 +156,10 @@ public class TagMetaServiceImpl implements TagMetaService {
|
|||||||
TagFilter tagFilter = new TagFilter();
|
TagFilter tagFilter = new TagFilter();
|
||||||
BeanUtils.copyProperties(tagMarketPageReq, tagFilter);
|
BeanUtils.copyProperties(tagMarketPageReq, tagFilter);
|
||||||
List<CollectDO> collectList = collectService.getCollectList(user.getName());
|
List<CollectDO> collectList = collectService.getCollectList(user.getName());
|
||||||
|
if (tagMarketPageReq.isHasCollect()) {
|
||||||
List<Long> collectIds = collectList.stream()
|
List<Long> collectIds = collectList.stream()
|
||||||
.filter(collectDO -> SchemaElementType.TAG.name().equalsIgnoreCase(collectDO.getType()))
|
.filter(collectDO -> SchemaElementType.TAG.name().equalsIgnoreCase(collectDO.getType()))
|
||||||
.map(CollectDO::getCollectId).collect(Collectors.toList());
|
.map(CollectDO::getCollectId).collect(Collectors.toList());
|
||||||
if (tagMarketPageReq.isHasCollect()) {
|
|
||||||
if (CollectionUtils.isEmpty(collectIds)) {
|
if (CollectionUtils.isEmpty(collectIds)) {
|
||||||
tagFilter.setIds(Lists.newArrayList(-1L));
|
tagFilter.setIds(Lists.newArrayList(-1L));
|
||||||
} else {
|
} else {
|
||||||
@@ -364,4 +365,19 @@ public class TagMetaServiceImpl implements TagMetaService {
|
|||||||
tagDO.setType(tagReq.getTagDefineType().name());
|
tagDO.setType(tagReq.getTagDefineType().name());
|
||||||
return tagDO;
|
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.setType(metricReq.getMetricType().name());
|
||||||
metricDO.setTypeParams(metricReq.getTypeParamsJson());
|
metricDO.setTypeParams(metricReq.getTypeParamsJson());
|
||||||
metricDO.setDataFormat(JSONObject.toJSONString(metricReq.getDataFormat()));
|
metricDO.setDataFormat(JSONObject.toJSONString(metricReq.getDataFormat()));
|
||||||
metricDO.setTags(metricReq.getTag());
|
metricDO.setClassifications(metricReq.getClassifications());
|
||||||
metricDO.setRelateDimensions(JSONObject.toJSONString(metricReq.getRelateDimension()));
|
metricDO.setRelateDimensions(JSONObject.toJSONString(metricReq.getRelateDimension()));
|
||||||
metricDO.setStatus(StatusEnum.ONLINE.getCode());
|
metricDO.setStatus(StatusEnum.ONLINE.getCode());
|
||||||
metricDO.setExt(JSONObject.toJSONString(metricReq.getExt()));
|
metricDO.setExt(JSONObject.toJSONString(metricReq.getExt()));
|
||||||
@@ -48,8 +48,8 @@ public class MetricConverter {
|
|||||||
if (metricReq.getRelateDimension() != null) {
|
if (metricReq.getRelateDimension() != null) {
|
||||||
metricDO.setRelateDimensions(JSONObject.toJSONString(metricReq.getRelateDimension()));
|
metricDO.setRelateDimensions(JSONObject.toJSONString(metricReq.getRelateDimension()));
|
||||||
}
|
}
|
||||||
if (metricReq.getTag() != null) {
|
if (metricReq.getClassifications() != null) {
|
||||||
metricDO.setTags(metricReq.getTag());
|
metricDO.setClassifications(metricReq.getClassifications());
|
||||||
}
|
}
|
||||||
if (metricReq.getExt() != null) {
|
if (metricReq.getExt() != null) {
|
||||||
metricDO.setExt(JSONObject.toJSONString(metricReq.getExt()));
|
metricDO.setExt(JSONObject.toJSONString(metricReq.getExt()));
|
||||||
@@ -76,7 +76,7 @@ public class MetricConverter {
|
|||||||
metricResp.setDomainId(modelResp.getDomainId());
|
metricResp.setDomainId(modelResp.getDomainId());
|
||||||
}
|
}
|
||||||
metricResp.setIsCollect(collect != null && collect.contains(metricDO.getId()));
|
metricResp.setIsCollect(collect != null && collect.contains(metricDO.getId()));
|
||||||
metricResp.setTag(metricDO.getTags());
|
metricResp.setClassifications(metricDO.getClassifications());
|
||||||
metricResp.setRelateDimension(JSONObject.parseObject(metricDO.getRelateDimensions(),
|
metricResp.setRelateDimension(JSONObject.parseObject(metricDO.getRelateDimensions(),
|
||||||
RelateDimension.class));
|
RelateDimension.class));
|
||||||
if (metricDO.getExt() != null) {
|
if (metricDO.getExt() != null) {
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
<result column="data_format_type" jdbcType="VARCHAR" property="dataFormatType"/>
|
<result column="data_format_type" jdbcType="VARCHAR" property="dataFormatType"/>
|
||||||
<result column="data_format" jdbcType="VARCHAR" property="dataFormat"/>
|
<result column="data_format" jdbcType="VARCHAR" property="dataFormat"/>
|
||||||
<result column="alias" jdbcType="VARCHAR" property="alias"/>
|
<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"/>
|
<result column="define_type" jdbcType="VARCHAR" property="defineType"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs"
|
<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs"
|
||||||
@@ -60,7 +60,7 @@
|
|||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
id
|
id
|
||||||
, model_id, name, biz_name, description, status, sensitive_level, type, created_at,
|
, 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>
|
||||||
<sql id="Blob_Column_List">
|
<sql id="Blob_Column_List">
|
||||||
type_params
|
type_params
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
biz_name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
biz_name like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
||||||
description like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
description like CONCAT('%',#{key , jdbcType=VARCHAR},'%') or
|
||||||
alias 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},'%') )
|
created_by like CONCAT('%',#{key , jdbcType=VARCHAR},'%') )
|
||||||
</if>
|
</if>
|
||||||
<if test="id != null">
|
<if test="id != null">
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
package com.tencent.supersonic.headless.server.service;
|
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.google.common.collect.Lists;
|
||||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||||
import com.tencent.supersonic.common.pojo.DataFormat;
|
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.DataSetServiceImpl;
|
||||||
import com.tencent.supersonic.headless.server.service.impl.MetricServiceImpl;
|
import com.tencent.supersonic.headless.server.service.impl.MetricServiceImpl;
|
||||||
import com.tencent.supersonic.headless.server.utils.MetricConverter;
|
import com.tencent.supersonic.headless.server.utils.MetricConverter;
|
||||||
|
import java.util.HashMap;
|
||||||
import org.junit.jupiter.api.Assertions;
|
import org.junit.jupiter.api.Assertions;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
import org.springframework.context.ApplicationEventPublisher;
|
import org.springframework.context.ApplicationEventPublisher;
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
|
||||||
import static org.mockito.Mockito.when;
|
|
||||||
|
|
||||||
public class MetricServiceImplTest {
|
public class MetricServiceImplTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -94,7 +93,7 @@ public class MetricServiceImplTest {
|
|||||||
new MeasureParam("s2_uv", "department='hr'")));
|
new MeasureParam("s2_uv", "department='hr'")));
|
||||||
typeParams.setExpr("s2_pv/s2_uv");
|
typeParams.setExpr("s2_pv/s2_uv");
|
||||||
metricReq.setMetricDefineByMeasureParams(typeParams);
|
metricReq.setMetricDefineByMeasureParams(typeParams);
|
||||||
metricReq.setTags(Lists.newArrayList("核心指标"));
|
metricReq.setClassifications(Lists.newArrayList("核心指标"));
|
||||||
metricReq.setRelateDimension(
|
metricReq.setRelateDimension(
|
||||||
RelateDimension.builder().drillDownDimensions(Lists.newArrayList(
|
RelateDimension.builder().drillDownDimensions(Lists.newArrayList(
|
||||||
new DrillDownDimension(1L),
|
new DrillDownDimension(1L),
|
||||||
@@ -125,7 +124,7 @@ public class MetricServiceImplTest {
|
|||||||
new MeasureParam("s2_uv", "department='hr'")));
|
new MeasureParam("s2_uv", "department='hr'")));
|
||||||
typeParams.setExpr("s2_pv/s2_uv");
|
typeParams.setExpr("s2_pv/s2_uv");
|
||||||
metricResp.setMetricDefineByMeasureParams(typeParams);
|
metricResp.setMetricDefineByMeasureParams(typeParams);
|
||||||
metricResp.setTags(Lists.newArrayList("核心指标"));
|
metricResp.setClassifications("核心指标");
|
||||||
metricResp.setRelateDimension(
|
metricResp.setRelateDimension(
|
||||||
RelateDimension.builder().drillDownDimensions(Lists.newArrayList(
|
RelateDimension.builder().drillDownDimensions(Lists.newArrayList(
|
||||||
new DrillDownDimension(1L),
|
new DrillDownDimension(1L),
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ CREATE TABLE IF NOT EXISTS `s2_metric` (
|
|||||||
`data_format_type` varchar(50) DEFAULT NULL ,
|
`data_format_type` varchar(50) DEFAULT NULL ,
|
||||||
`data_format` varchar(500) DEFAULT NULL,
|
`data_format` varchar(500) DEFAULT NULL,
|
||||||
`alias` 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,
|
`relate_dimensions` varchar(500) DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -411,7 +411,7 @@ public class ModelDemoDataLoader {
|
|||||||
metricReq.setBizName("stay_hours");
|
metricReq.setBizName("stay_hours");
|
||||||
metricReq.setSensitiveLevel(SensitiveLevelEnum.HIGH.getCode());
|
metricReq.setSensitiveLevel(SensitiveLevelEnum.HIGH.getCode());
|
||||||
metricReq.setDescription("停留时长");
|
metricReq.setDescription("停留时长");
|
||||||
metricReq.setTags(Collections.singletonList("核心指标"));
|
metricReq.setClassifications(Collections.singletonList("核心指标"));
|
||||||
metricReq.setAlias("访问时长");
|
metricReq.setAlias("访问时长");
|
||||||
MetricDefineByMeasureParams metricTypeParams = new MetricDefineByMeasureParams();
|
MetricDefineByMeasureParams metricTypeParams = new MetricDefineByMeasureParams();
|
||||||
metricTypeParams.setExpr("s2_stay_time_statis_stay_hours");
|
metricTypeParams.setExpr("s2_stay_time_statis_stay_hours");
|
||||||
@@ -476,7 +476,7 @@ public class ModelDemoDataLoader {
|
|||||||
metricReq.setBizName("pv_avg");
|
metricReq.setBizName("pv_avg");
|
||||||
metricReq.setSensitiveLevel(SensitiveLevelEnum.HIGH.getCode());
|
metricReq.setSensitiveLevel(SensitiveLevelEnum.HIGH.getCode());
|
||||||
metricReq.setDescription("每个用户平均访问的次数");
|
metricReq.setDescription("每个用户平均访问的次数");
|
||||||
metricReq.setTags(Collections.singletonList("核心指标"));
|
metricReq.setClassifications(Collections.singletonList("核心指标"));
|
||||||
metricReq.setAlias("平均访问次数");
|
metricReq.setAlias("平均访问次数");
|
||||||
MetricDefineByMetricParams metricTypeParams = new MetricDefineByMetricParams();
|
MetricDefineByMetricParams metricTypeParams = new MetricDefineByMetricParams();
|
||||||
metricTypeParams.setExpr("pv/uv");
|
metricTypeParams.setExpr("pv/uv");
|
||||||
|
|||||||
@@ -286,3 +286,6 @@ CREATE TABLE IF NOT EXISTS `s2_query_rule` (
|
|||||||
PRIMARY KEY (`id`)
|
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_type` varchar(50) DEFAULT NULL ,
|
||||||
`data_format` varchar(500) DEFAULT NULL,
|
`data_format` varchar(500) DEFAULT NULL,
|
||||||
`alias` 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,
|
`relate_dimensions` varchar(500) DEFAULT NULL,
|
||||||
`ext` LONGVARCHAR DEFAULT NULL ,
|
`ext` LONGVARCHAR DEFAULT NULL ,
|
||||||
`define_type` varchar(50) NOT NULL, -- MEASURE, FIELD, METRIC
|
`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_type` varchar(50) DEFAULT NULL COMMENT '数值类型',
|
||||||
`data_format` varchar(500) DEFAULT NULL COMMENT '数值类型参数',
|
`data_format` varchar(500) DEFAULT NULL COMMENT '数值类型参数',
|
||||||
`alias` varchar(500) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
|
`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 '指标相关维度',
|
`relate_dimensions` varchar(500) DEFAULT NULL COMMENT '指标相关维度',
|
||||||
`ext` text DEFAULT NULL,
|
`ext` text DEFAULT NULL,
|
||||||
`define_type` varchar(50) DEFAULT NULL, -- MEASURE, FIELD, METRIC
|
`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_type` varchar(50) DEFAULT NULL ,
|
||||||
`data_format` varchar(500) DEFAULT NULL,
|
`data_format` varchar(500) DEFAULT NULL,
|
||||||
`alias` 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,
|
`relate_dimensions` varchar(500) DEFAULT NULL,
|
||||||
`ext` LONGVARCHAR DEFAULT NULL ,
|
`ext` LONGVARCHAR DEFAULT NULL ,
|
||||||
`define_type` varchar(50) NOT NULL, -- MEASURE, FIELD, METRIC
|
`define_type` varchar(50) NOT NULL, -- MEASURE, FIELD, METRIC
|
||||||
|
|||||||
Reference in New Issue
Block a user