(improvement)(Headless) Modify metric category name, add information about whether metrics and dimensions are tags in fetchDataSetSchema (#857)

This commit is contained in:
lexluo09
2024-03-25 15:37:11 +08:00
committed by GitHub
parent aa5f3c9a83
commit f6aefe2fb0
17 changed files with 127 additions and 86 deletions

View File

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

View File

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

View File

@@ -87,7 +87,7 @@ public class MetricDO {
/**
*
*/
private String tags;
private String classifications;
/**
*

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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