(improvement)(Headless)Querying dimension values and dataSet interface with tag support. (#832)

This commit is contained in:
lexluo09
2024-03-19 22:05:14 +08:00
committed by GitHub
parent bd95552854
commit 5929c2aa90
20 changed files with 106 additions and 101 deletions

View File

@@ -1,11 +1,9 @@
package com.tencent.supersonic.headless.api.pojo;
import com.tencent.supersonic.common.pojo.enums.QueryType;
import lombok.Data;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
import lombok.Data;
@Data
public class DataSetSchema {
@@ -16,7 +14,6 @@ public class DataSetSchema {
private Set<SchemaElement> dimensionValues = new HashSet<>();
private SchemaElement entity = new SchemaElement();
private QueryConfig queryConfig;
private QueryType queryType;
public SchemaElement getElement(SchemaElementType elementType, long elementID) {
Optional<SchemaElement> element = Optional.empty();

View File

@@ -1,6 +1,5 @@
package com.tencent.supersonic.headless.api.pojo.request;
import com.tencent.supersonic.common.pojo.enums.QueryType;
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
@@ -22,8 +21,6 @@ public class DataSetReq extends SchemaItem {
private List<String> adminOrgs;
private QueryType queryType;
public String getAdmin() {
if (admins == null) {
return null;

View File

@@ -1,7 +1,6 @@
package com.tencent.supersonic.headless.api.pojo.response;
import com.google.common.collect.Lists;
import com.tencent.supersonic.common.pojo.enums.QueryType;
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
import com.tencent.supersonic.headless.api.pojo.DataSetModelConfig;
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
@@ -30,14 +29,16 @@ public class DataSetResp extends SchemaItem {
private QueryConfig queryConfig;
private QueryType queryType;
private List<TagItem> allMetrics = new ArrayList<>();
public List<Long> getAllMetrics() {
private List<TagItem> allDimensions = new ArrayList<>();
public List<Long> metricIds() {
return getDataSetModelConfigs().stream().map(DataSetModelConfig::getMetrics)
.flatMap(Collection::stream).collect(Collectors.toList());
}
public List<Long> getAllDimensions() {
public List<Long> dimensionIds() {
return getDataSetModelConfigs().stream().map(DataSetModelConfig::getDimensions)
.flatMap(Collection::stream).collect(Collectors.toList());
}

View File

@@ -15,8 +15,6 @@ public class DataSetSchemaResp extends DataSetResp {
private List<MetricSchemaResp> metrics = Lists.newArrayList();
private List<DimSchemaResp> dimensions = Lists.newArrayList();
private List<TagResp> tags = Lists.newArrayList();
private List<ModelResp> modelResps = Lists.newArrayList();
public DimSchemaResp getPrimaryKey() {

View File

@@ -0,0 +1,12 @@
package com.tencent.supersonic.headless.api.pojo.response;
import lombok.Data;
@Data
public class TagItem {
private Long itemId;
private int isTag;
}

View File

@@ -2,25 +2,22 @@ package com.tencent.supersonic.headless.core.pojo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.enums.QueryType;
import com.tencent.supersonic.common.util.ContextUtils;
import com.tencent.supersonic.headless.api.pojo.DataSetSchema;
import com.tencent.supersonic.headless.api.pojo.SchemaMapInfo;
import com.tencent.supersonic.headless.api.pojo.SemanticSchema;
import com.tencent.supersonic.headless.api.pojo.request.QueryFilters;
import com.tencent.supersonic.headless.core.config.OptimizationConfig;
import com.tencent.supersonic.headless.core.chat.query.SemanticQuery;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.tencent.supersonic.headless.core.config.OptimizationConfig;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@Builder
@@ -51,10 +48,4 @@ public class QueryContext {
.collect(Collectors.toList());
return candidateQueries;
}
public QueryType getQueryType(Long dataSetId) {
SemanticSchema semanticSchema = this.semanticSchema;
DataSetSchema dataSetSchema = semanticSchema.getDataSetSchemaMap().get(dataSetId);
return dataSetSchema.getQueryType();
}
}

View File

@@ -40,7 +40,4 @@ public class DataSetDO {
private String admin;
private String adminOrg;
private String queryType;
}

View File

@@ -29,14 +29,14 @@ public class DataSetController {
@PostMapping
public DataSetResp save(@RequestBody DataSetReq dataSetReq,
HttpServletRequest request, HttpServletResponse response) {
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
return dataSetService.save(dataSetReq, user);
}
@PutMapping
public DataSetResp update(@RequestBody DataSetReq dataSetReq,
HttpServletRequest request, HttpServletResponse response) {
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
return dataSetService.update(dataSetReq, user);
}
@@ -47,15 +47,17 @@ public class DataSetController {
}
@GetMapping("/getDataSetList")
public List<DataSetResp> getDataSetList(@RequestParam("domainId") Long domainId) {
public List<DataSetResp> getDataSetList(@RequestParam("domainId") Long domainId,
HttpServletRequest request, HttpServletResponse response) {
MetaFilter metaFilter = new MetaFilter();
metaFilter.setDomainId(domainId);
return dataSetService.getDataSetList(metaFilter);
User user = UserHolder.findUser(request, response);
return dataSetService.getDataSetList(metaFilter, user);
}
@DeleteMapping("/{id}")
public Boolean delete(@PathVariable("id") Long id,
HttpServletRequest request, HttpServletResponse response) {
HttpServletRequest request, HttpServletResponse response) {
User user = UserHolder.findUser(request, response);
dataSetService.delete(id, user);
return true;

View File

@@ -18,11 +18,11 @@ public interface DataSetService {
DataSetResp getDataSet(Long id);
List<DataSetResp> getDataSetList(MetaFilter metaFilter);
List<DataSetResp> getDataSetList(MetaFilter metaFilter, User user);
void delete(Long id, User user);
Map<Long, List<Long>> getModelIdToDataSetIds(List<Long> dataSetIds);
Map<Long, List<Long>> getModelIdToDataSetIds(List<Long> dataSetIds, User user);
Map<Long, List<Long>> getModelIdToDataSetIds();

View File

@@ -14,6 +14,7 @@ import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType;
import com.tencent.supersonic.headless.api.pojo.request.DataSetReq;
import com.tencent.supersonic.headless.api.pojo.request.QueryDataSetReq;
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
@@ -23,13 +24,17 @@ 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.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 java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
@@ -66,12 +71,16 @@ public class DataSetServiceImpl
@Autowired
private MetricService metricService;
@Lazy
@Autowired
private TagMetaService tagMetaService;
@Override
public DataSetResp save(DataSetReq dataSetReq, User user) {
dataSetReq.createdBy(user.getName());
DataSetDO dataSetDO = convert(dataSetReq);
dataSetDO.setStatus(StatusEnum.ONLINE.getCode());
DataSetResp dataSetResp = convert(dataSetDO);
DataSetResp dataSetResp = convert(dataSetDO, user);
conflictCheck(dataSetResp);
save(dataSetDO);
return dataSetResp;
@@ -81,7 +90,7 @@ public class DataSetServiceImpl
public DataSetResp update(DataSetReq dataSetReq, User user) {
dataSetReq.updatedBy(user.getName());
DataSetDO dataSetDO = convert(dataSetReq);
DataSetResp dataSetResp = convert(dataSetDO);
DataSetResp dataSetResp = convert(dataSetDO, user);
conflictCheck(dataSetResp);
updateById(dataSetDO);
return dataSetResp;
@@ -90,11 +99,11 @@ public class DataSetServiceImpl
@Override
public DataSetResp getDataSet(Long id) {
DataSetDO dataSetDO = getById(id);
return convert(dataSetDO);
return convert(dataSetDO, User.getFakeUser());
}
@Override
public List<DataSetResp> getDataSetList(MetaFilter metaFilter) {
public List<DataSetResp> getDataSetList(MetaFilter metaFilter, User user) {
QueryWrapper<DataSetDO> wrapper = new QueryWrapper<>();
if (metaFilter.getDomainId() != null) {
wrapper.lambda().eq(DataSetDO::getDomainId, metaFilter.getDomainId());
@@ -106,7 +115,7 @@ public class DataSetServiceImpl
wrapper.lambda().eq(DataSetDO::getStatus, metaFilter.getStatus());
}
wrapper.lambda().ne(DataSetDO::getStatus, StatusEnum.DELETED.getCode());
return list(wrapper).stream().map(this::convert).collect(Collectors.toList());
return list(wrapper).stream().map(entry -> convert(entry, user)).collect(Collectors.toList());
}
@Override
@@ -120,13 +129,13 @@ public class DataSetServiceImpl
@Override
public List<DataSetResp> getDataSets(User user) {
List<DataSetResp> dataSetResps = getDataSetList(new MetaFilter());
List<DataSetResp> dataSetResps = getDataSetList(new MetaFilter(), user);
return getDataSetFilterByAuth(dataSetResps, user);
}
@Override
public List<DataSetResp> getDataSetsInheritAuth(User user, Long domainId) {
List<DataSetResp> dataSetResps = getDataSetList(new MetaFilter());
List<DataSetResp> dataSetResps = getDataSetList(new MetaFilter(), user);
List<DataSetResp> inheritAuthFormDomain = getDataSetFilterByDomainAuth(dataSetResps, user);
Set<DataSetResp> dataSetRespSet = new HashSet<>(inheritAuthFormDomain);
List<DataSetResp> dataSetFilterByAuth = getDataSetFilterByAuth(dataSetResps, user);
@@ -155,7 +164,22 @@ public class DataSetServiceImpl
domainIds.contains(dataSetResp.getDomainId())).collect(Collectors.toList());
}
private DataSetResp convert(DataSetDO dataSetDO) {
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);
dataSetResp.setDataSetDetail(JSONObject.parseObject(dataSetDO.getDataSetDetail(), DataSetDetail.class));
@@ -167,6 +191,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);
dataSetResp.setAllDimensions(dimensionItems);
List<TagItem> metricItems = getTagItems(user, dataSetResp.metricIds(), TagDefineType.METRIC);
dataSetResp.setAllMetrics(metricItems);
return dataSetResp;
}
@@ -197,13 +226,13 @@ public class DataSetServiceImpl
}
@Override
public Map<Long, List<Long>> getModelIdToDataSetIds(List<Long> dataSetIds) {
public Map<Long, List<Long>> getModelIdToDataSetIds(List<Long> dataSetIds, User user) {
MetaFilter metaFilter = new MetaFilter();
metaFilter.setStatus(StatusEnum.ONLINE.getCode());
metaFilter.setIds(dataSetIds);
List<DataSetResp> dataSetList = dataSetSchemaCache.getIfPresent(metaFilter);
if (CollectionUtils.isEmpty(dataSetList)) {
dataSetList = getDataSetList(metaFilter);
dataSetList = getDataSetList(metaFilter, user);
dataSetSchemaCache.put(metaFilter, dataSetList);
}
return dataSetList.stream()
@@ -216,12 +245,12 @@ public class DataSetServiceImpl
@Override
public Map<Long, List<Long>> getModelIdToDataSetIds() {
return getModelIdToDataSetIds(Lists.newArrayList());
return getModelIdToDataSetIds(Lists.newArrayList(), User.getFakeUser());
}
private void conflictCheck(DataSetResp dataSetResp) {
List<Long> allDimensionIds = dataSetResp.getAllDimensions();
List<Long> allMetricIds = dataSetResp.getAllMetrics();
List<Long> allDimensionIds = dataSetResp.dimensionIds();
List<Long> allMetricIds = dataSetResp.metricIds();
MetaFilter metaFilter = new MetaFilter();
if (!CollectionUtils.isEmpty(allDimensionIds)) {
metaFilter.setIds(allDimensionIds);

View File

@@ -161,7 +161,7 @@ public class SchemaServiceImpl implements SchemaService {
MetaFilter metaFilter = new MetaFilter();
metaFilter.setStatus(StatusEnum.ONLINE.getCode());
metaFilter.setIds(filter.getDataSetIds());
List<DataSetResp> dataSetResps = dataSetService.getDataSetList(metaFilter);
List<DataSetResp> dataSetResps = dataSetService.getDataSetList(metaFilter, User.getFakeUser());
Map<Long, DataSetResp> dataSetRespMap = getDataSetMap(dataSetResps);
List<Long> modelIds = dataSetRespMap.values().stream().map(DataSetResp::getAllModels)
@@ -337,7 +337,6 @@ public class SchemaServiceImpl implements SchemaService {
semanticSchemaResp.setModelRelas(modelRelas);
semanticSchemaResp.setModelIds(modelIds);
semanticSchemaResp.setSchemaType(SchemaType.VIEW);
semanticSchemaResp.setQueryType(dataSetSchemaResp.getQueryType());
} else if (!CollectionUtils.isEmpty(schemaFilterReq.getModelIds())) {
List<ModelSchemaResp> modelSchemaResps = fetchModelSchemaResps(schemaFilterReq.getModelIds());
semanticSchemaResp.setMetrics(modelSchemaResps.stream().map(ModelSchemaResp::getMetrics)
@@ -402,7 +401,7 @@ public class SchemaServiceImpl implements SchemaService {
}
parentItem.getChildren().add(itemResp);
}
List<DataSetResp> dataSetResps = dataSetService.getDataSetList(new MetaFilter());
List<DataSetResp> dataSetResps = dataSetService.getDataSetList(new MetaFilter(), User.getFakeUser());
for (DataSetResp dataSetResp : dataSetResps) {
ItemResp itemResp = itemRespMap.get(dataSetResp.getDomainId());
if (itemResp != null) {

View File

@@ -1,6 +1,7 @@
package com.tencent.supersonic.headless.server.service.impl;
import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.enums.DictWordType;
import com.tencent.supersonic.headless.api.pojo.SchemaElement;
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
@@ -70,7 +71,7 @@ public class SearchServiceImpl implements SearchService {
List<SchemaElement> metricsDb = semanticSchemaDb.getMetrics();
final Map<Long, String> dataSetIdToName = semanticSchemaDb.getDataSetIdToName();
Map<Long, List<Long>> modelIdToDataSetIds =
dataSetService.getModelIdToDataSetIds(new ArrayList<>(dataSetIdToName.keySet()));
dataSetService.getModelIdToDataSetIds(new ArrayList<>(dataSetIdToName.keySet()), User.getFakeUser());
// 2.detect by segment
List<S2Term> originals = knowledgeService.getTerms(queryText, modelIdToDataSetIds);
log.info("hanlp parse result: {}", originals);

View File

@@ -13,7 +13,7 @@ import com.tencent.supersonic.headless.api.pojo.ValueDistribution;
import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType;
import com.tencent.supersonic.headless.api.pojo.request.ItemValueReq;
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
import com.tencent.supersonic.headless.api.pojo.request.QueryTagReq;
import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq;
import com.tencent.supersonic.headless.api.pojo.response.ItemValueResp;
import com.tencent.supersonic.headless.api.pojo.response.ModelResp;
import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp;
@@ -50,7 +50,7 @@ public class TagQueryServiceImpl implements TagQueryService {
private final ModelService modelService;
public TagQueryServiceImpl(TagMetaService tagMetaService, QueryService queryService,
ModelService modelService) {
ModelService modelService) {
this.tagMetaService = tagMetaService;
this.queryService = queryService;
this.modelService = modelService;
@@ -60,7 +60,7 @@ public class TagQueryServiceImpl implements TagQueryService {
public ItemValueResp queryTagValue(ItemValueReq itemValueReq, User user) throws Exception {
ItemValueResp itemValueResp = new ItemValueResp();
itemValueResp.setItemId(itemValueReq.getItemId());
itemValueResp.setType(SchemaElementType.DIMENSION);
itemValueResp.setType(SchemaElementType.TAG);
TagResp tag = tagMetaService.getTag(itemValueReq.getItemId(), user);
checkTag(tag);
itemValueResp.setName(tag.getName());
@@ -69,8 +69,8 @@ public class TagQueryServiceImpl implements TagQueryService {
// tag total count
Long totalCount = queryTagTotalCount(tag, itemValueReq, user);
// tag value
QueryTagReq queryTagReq = generateTagReq(tag, itemValueReq);
SemanticQueryResp semanticQueryResp = queryService.queryByReq(queryTagReq, user);
QueryStructReq queryStructReq = generateReq(tag, itemValueReq);
SemanticQueryResp semanticQueryResp = queryService.queryByReq(queryStructReq, user);
fillTagValueInfo(itemValueResp, semanticQueryResp, totalCount);
return itemValueResp;
}
@@ -102,28 +102,7 @@ public class TagQueryServiceImpl implements TagQueryService {
private String queryTagDate(Dim dim) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dim.getDateFormat());
String endDate = LocalDate.now().plusDays(-dayBefore).format(formatter);
return endDate;
}
private String queryTagDateFromDbByStruct(Dim dim, TagResp tag, User user) throws Exception {
QueryTagReq queryTagReq = new QueryTagReq();
queryTagReq.addModelId(tag.getModelId());
queryTagReq.setLimit(1L);
List<Aggregator> aggregators = new ArrayList<>();
aggregators.add(new Aggregator(dim.getBizName(), AggOperatorEnum.MAX, maxDateAlias));
queryTagReq.setAggregators(aggregators);
queryTagReq.setDateInfo(null);
log.info("queryTagDateFromDb, queryTagReq:{}", queryTagReq.toCustomizedString());
SemanticQueryResp semanticQueryResp = queryService.queryByReq(queryTagReq, user);
if (!CollectionUtils.isEmpty(semanticQueryResp.getResultList())) {
Object date = semanticQueryResp.getResultList().get(0).get(maxDateAlias);
if (Objects.nonNull(date)) {
return date.toString();
}
}
throw new RuntimeException("queryTagTotalCount error");
return LocalDate.now().plusDays(-dayBefore).format(formatter);
}
private String queryTagDateFromDbBySql(Dim dim, TagResp tag, User user) throws Exception {
@@ -156,16 +135,16 @@ public class TagQueryServiceImpl implements TagQueryService {
private Long queryTagTotalCount(TagResp tag, ItemValueReq itemValueReq, User user) throws Exception {
QueryTagReq queryTagReq = new QueryTagReq();
queryTagReq.addModelId(tag.getModelId());
queryTagReq.setLimit(1L);
QueryStructReq queryStructReq = new QueryStructReq();
queryStructReq.addModelId(tag.getModelId());
queryStructReq.setLimit(1L);
List<Aggregator> aggregators = new ArrayList<>();
aggregators.add(new Aggregator(tag.getBizName(), AggOperatorEnum.COUNT, tagValueAlias));
queryTagReq.setAggregators(aggregators);
queryStructReq.setAggregators(aggregators);
DateConf dateConf = generateDateConf(itemValueReq);
queryTagReq.setDateInfo(dateConf);
queryStructReq.setDateInfo(dateConf);
SemanticQueryResp semanticQueryResp = queryService.queryByReq(queryTagReq, user);
SemanticQueryResp semanticQueryResp = queryService.queryByReq(queryStructReq, user);
if (!CollectionUtils.isEmpty(semanticQueryResp.getResultList())) {
Object total = semanticQueryResp.getResultList().get(0).get(tagValueAlias);
if (Objects.nonNull(total)) {
@@ -194,24 +173,24 @@ public class TagQueryServiceImpl implements TagQueryService {
itemValueResp.setValueDistributionList(valueDistributionList);
}
private QueryTagReq generateTagReq(TagResp tag, ItemValueReq itemValueReq) {
QueryTagReq queryTagReq = new QueryTagReq();
queryTagReq.addModelId(tag.getModelId());
queryTagReq.setGroups(new ArrayList<>(Arrays.asList(tag.getBizName())));
queryTagReq.setLimit(itemValueReq.getLimit());
private QueryStructReq generateReq(TagResp tag, ItemValueReq itemValueReq) {
QueryStructReq queryStructReq = new QueryStructReq();
queryStructReq.addModelId(tag.getModelId());
queryStructReq.setGroups(new ArrayList<>(Arrays.asList(tag.getBizName())));
queryStructReq.setLimit(itemValueReq.getLimit());
List<Aggregator> aggregators = new ArrayList<>();
aggregators.add(new Aggregator(tag.getBizName(), AggOperatorEnum.COUNT, tagValueAlias));
queryTagReq.setAggregators(aggregators);
queryStructReq.setAggregators(aggregators);
List<Order> orders = new ArrayList<>();
orders.add(new Order(String.format("count(%s)", tag.getBizName()), DESC_UPPER));
queryTagReq.setOrders(orders);
queryStructReq.setOrders(orders);
DateConf dateConf = generateDateConf(itemValueReq);
queryTagReq.setDateInfo(dateConf);
queryStructReq.setDateInfo(dateConf);
return queryTagReq;
return queryStructReq;
}
private DateConf generateDateConf(ItemValueReq itemValueReq) {

View File

@@ -28,7 +28,6 @@ public class DataSetSchemaBuilder {
public static DataSetSchema build(DataSetSchemaResp resp) {
DataSetSchema dataSetSchema = new DataSetSchema();
dataSetSchema.setQueryConfig(resp.getQueryConfig());
dataSetSchema.setQueryType(resp.getQueryType());
SchemaElement dataSet = SchemaElement.builder()
.dataSet(resp.getId())
.id(resp.getId())

View File

@@ -86,7 +86,7 @@ public class DimensionConverter {
public static List<DimensionResp> filterByDataSet(List<DimensionResp> dimensionResps, DataSetResp dataSetResp) {
return dimensionResps.stream().filter(dimensionResp ->
dataSetResp.getAllDimensions().contains(dimensionResp.getId())
dataSetResp.dimensionIds().contains(dimensionResp.getId())
|| dataSetResp.getAllIncludeAllModels().contains(dimensionResp.getModelId()))
.collect(Collectors.toList());
}

View File

@@ -101,7 +101,7 @@ public class MetricConverter {
public static List<MetricResp> filterByDataSet(List<MetricResp> metricResps, DataSetResp dataSetResp) {
return metricResps.stream().filter(metricResp ->
dataSetResp.getAllMetrics().contains(metricResp.getId())
dataSetResp.metricIds().contains(metricResp.getId())
|| dataSetResp.getAllIncludeAllModels().contains(metricResp.getModelId()))
.collect(Collectors.toList());
}

View File

@@ -52,13 +52,13 @@
<select id="queryTagRespList" resultMap="TagResp">
select * from (
select s2_tag.id as id, s2_dimension.model_id as model_id, "DIMENSION" as tag_define_type, s2_dimension.id as item_id,
select s2_tag.id as id, s2_dimension.model_id as model_id, 'DIMENSION' as tag_define_type, s2_dimension.id as item_id,
s2_dimension.name as name, s2_dimension.biz_name as biz_name, s2_dimension.description as description, s2_tag.updated_at as updated_at
from s2_tag join s2_dimension
on s2_tag.item_id = s2_dimension.id
where s2_dimension.status=1
union
select s2_tag.id as id, s2_metric.model_id as model_id, "METRIC" as tag_define_type, s2_metric.id as item_id,
select s2_tag.id as id, s2_metric.model_id as model_id, 'METRIC' as tag_define_type, s2_metric.id as item_id,
s2_metric.name as name, s2_metric.biz_name as biz_name, s2_metric.description as description, s2_tag.updated_at as updated_at
from s2_tag join s2_metric
on s2_tag.item_id = s2_metric.id

View File

@@ -258,6 +258,7 @@ CREATE TABLE IF NOT EXISTS s2_tag(
`id` INT NOT NULL AUTO_INCREMENT,
`item_id` INT NOT NULL ,
`type` varchar(255) NOT NULL ,
`tag_define_type` varchar(20) NOT NULL , --DIMENSION,METRIC
`created_at` TIMESTAMP NOT NULL ,
`created_by` varchar(100) NOT NULL ,
`updated_at` TIMESTAMP DEFAULT NULL ,

View File

@@ -579,6 +579,7 @@ CREATE TABLE IF NOT EXISTS `s2_data_set` (
CREATE TABLE IF NOT EXISTS `s2_tag` (
`id` INT NOT NULL AUTO_INCREMENT,
`item_id` INT NOT NULL ,
`tag_define_type` varchar(20) NOT NULL , --DIMENSION,METRIC
`type` varchar(50) NOT NULL , -- ATOMIC, DERIVED
`created_at` TIMESTAMP NOT NULL ,
`created_by` varchar(100) NOT NULL ,

View File

@@ -581,6 +581,7 @@ CREATE TABLE IF NOT EXISTS `s2_tag` (
`id` INT NOT NULL AUTO_INCREMENT,
`item_id` INT NOT NULL ,
`type` varchar(50) NOT NULL , -- ATOMIC, DERIVED
`tag_define_type` varchar(20) NOT NULL , --DIMENSION,METRIC
`created_at` TIMESTAMP NOT NULL ,
`created_by` varchar(100) NOT NULL ,
`updated_at` TIMESTAMP DEFAULT NULL ,