diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DataSetSchema.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DataSetSchema.java index ef0d198c4..c161c52e8 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DataSetSchema.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/DataSetSchema.java @@ -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 dimensionValues = new HashSet<>(); private SchemaElement entity = new SchemaElement(); private QueryConfig queryConfig; - private QueryType queryType; public SchemaElement getElement(SchemaElementType elementType, long elementID) { Optional element = Optional.empty(); diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DataSetReq.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DataSetReq.java index b4f700ec1..95c934cfd 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DataSetReq.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/request/DataSetReq.java @@ -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 adminOrgs; - private QueryType queryType; - public String getAdmin() { if (admins == null) { return null; diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DataSetResp.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DataSetResp.java index 502db5357..63289d473 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DataSetResp.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DataSetResp.java @@ -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 allMetrics = new ArrayList<>(); - public List getAllMetrics() { + private List allDimensions = new ArrayList<>(); + + public List metricIds() { return getDataSetModelConfigs().stream().map(DataSetModelConfig::getMetrics) .flatMap(Collection::stream).collect(Collectors.toList()); } - public List getAllDimensions() { + public List dimensionIds() { return getDataSetModelConfigs().stream().map(DataSetModelConfig::getDimensions) .flatMap(Collection::stream).collect(Collectors.toList()); } diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DataSetSchemaResp.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DataSetSchemaResp.java index 4e0d8d411..908e0e63d 100644 --- a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DataSetSchemaResp.java +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/DataSetSchemaResp.java @@ -15,8 +15,6 @@ public class DataSetSchemaResp extends DataSetResp { private List metrics = Lists.newArrayList(); private List dimensions = Lists.newArrayList(); - - private List tags = Lists.newArrayList(); private List modelResps = Lists.newArrayList(); public DimSchemaResp getPrimaryKey() { diff --git a/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/TagItem.java b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/TagItem.java new file mode 100644 index 000000000..d96cfc0e1 --- /dev/null +++ b/headless/api/src/main/java/com/tencent/supersonic/headless/api/pojo/response/TagItem.java @@ -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; + +} diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryContext.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryContext.java index 5236d65aa..d7f9dec1e 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryContext.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/pojo/QueryContext.java @@ -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(); - } } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/DataSetDO.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/DataSetDO.java index 87ea734c4..e6acdfefc 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/DataSetDO.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/persistence/dataobject/DataSetDO.java @@ -40,7 +40,4 @@ public class DataSetDO { private String admin; private String adminOrg; - - private String queryType; - } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DataSetController.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DataSetController.java index 8c8ce917b..9dd77dfe2 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DataSetController.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/rest/DataSetController.java @@ -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 getDataSetList(@RequestParam("domainId") Long domainId) { + public List 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; diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DataSetService.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DataSetService.java index 3024c7f81..88530d389 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DataSetService.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/DataSetService.java @@ -18,11 +18,11 @@ public interface DataSetService { DataSetResp getDataSet(Long id); - List getDataSetList(MetaFilter metaFilter); + List getDataSetList(MetaFilter metaFilter, User user); void delete(Long id, User user); - Map> getModelIdToDataSetIds(List dataSetIds); + Map> getModelIdToDataSetIds(List dataSetIds, User user); Map> getModelIdToDataSetIds(); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java index 832ad0b84..57e33205c 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/DataSetServiceImpl.java @@ -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 getDataSetList(MetaFilter metaFilter) { + public List getDataSetList(MetaFilter metaFilter, User user) { QueryWrapper 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 getDataSets(User user) { - List dataSetResps = getDataSetList(new MetaFilter()); + List dataSetResps = getDataSetList(new MetaFilter(), user); return getDataSetFilterByAuth(dataSetResps, user); } @Override public List getDataSetsInheritAuth(User user, Long domainId) { - List dataSetResps = getDataSetList(new MetaFilter()); + List dataSetResps = getDataSetList(new MetaFilter(), user); List inheritAuthFormDomain = getDataSetFilterByDomainAuth(dataSetResps, user); Set dataSetRespSet = new HashSet<>(inheritAuthFormDomain); List 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 getTagItems(User user, List dimensionIds, TagDefineType tagDefineType) { + TagFilter tagFilter = new TagFilter(); + tagFilter.setTagDefineType(tagDefineType); + tagFilter.setItemIds(dimensionIds); + Set dimensionItemSet = tagMetaService.getTagDOList(tagFilter, user).stream().map(TagDO::getItemId) + .collect(Collectors.toSet()); + return dimensionIds.stream().map(entry -> { + TagItem tagItem = new TagItem(); + tagItem.setIsTag(Boolean.compare(dimensionItemSet.contains(entry), false)); + tagItem.setItemId(entry); + return tagItem; + } + ).collect(Collectors.toList()); + } + + private DataSetResp convert(DataSetDO dataSetDO, User user) { DataSetResp dataSetResp = new DataSetResp(); BeanMapper.mapper(dataSetDO, dataSetResp); 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 dimensionItems = getTagItems(user, dataSetResp.dimensionIds(), TagDefineType.DIMENSION); + dataSetResp.setAllDimensions(dimensionItems); + + List metricItems = getTagItems(user, dataSetResp.metricIds(), TagDefineType.METRIC); + dataSetResp.setAllMetrics(metricItems); return dataSetResp; } @@ -197,13 +226,13 @@ public class DataSetServiceImpl } @Override - public Map> getModelIdToDataSetIds(List dataSetIds) { + public Map> getModelIdToDataSetIds(List dataSetIds, User user) { MetaFilter metaFilter = new MetaFilter(); metaFilter.setStatus(StatusEnum.ONLINE.getCode()); metaFilter.setIds(dataSetIds); List 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> getModelIdToDataSetIds() { - return getModelIdToDataSetIds(Lists.newArrayList()); + return getModelIdToDataSetIds(Lists.newArrayList(), User.getFakeUser()); } private void conflictCheck(DataSetResp dataSetResp) { - List allDimensionIds = dataSetResp.getAllDimensions(); - List allMetricIds = dataSetResp.getAllMetrics(); + List allDimensionIds = dataSetResp.dimensionIds(); + List allMetricIds = dataSetResp.metricIds(); MetaFilter metaFilter = new MetaFilter(); if (!CollectionUtils.isEmpty(allDimensionIds)) { metaFilter.setIds(allDimensionIds); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SchemaServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SchemaServiceImpl.java index f5c014279..c0df510ba 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SchemaServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SchemaServiceImpl.java @@ -161,7 +161,7 @@ public class SchemaServiceImpl implements SchemaService { MetaFilter metaFilter = new MetaFilter(); metaFilter.setStatus(StatusEnum.ONLINE.getCode()); metaFilter.setIds(filter.getDataSetIds()); - List dataSetResps = dataSetService.getDataSetList(metaFilter); + List dataSetResps = dataSetService.getDataSetList(metaFilter, User.getFakeUser()); Map dataSetRespMap = getDataSetMap(dataSetResps); List 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 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 dataSetResps = dataSetService.getDataSetList(new MetaFilter()); + List dataSetResps = dataSetService.getDataSetList(new MetaFilter(), User.getFakeUser()); for (DataSetResp dataSetResp : dataSetResps) { ItemResp itemResp = itemRespMap.get(dataSetResp.getDomainId()); if (itemResp != null) { diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SearchServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SearchServiceImpl.java index a6161fcfe..1d88d7302 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SearchServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/SearchServiceImpl.java @@ -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 metricsDb = semanticSchemaDb.getMetrics(); final Map dataSetIdToName = semanticSchemaDb.getDataSetIdToName(); Map> modelIdToDataSetIds = - dataSetService.getModelIdToDataSetIds(new ArrayList<>(dataSetIdToName.keySet())); + dataSetService.getModelIdToDataSetIds(new ArrayList<>(dataSetIdToName.keySet()), User.getFakeUser()); // 2.detect by segment List originals = knowledgeService.getTerms(queryText, modelIdToDataSetIds); log.info("hanlp parse result: {}", originals); diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagQueryServiceImpl.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagQueryServiceImpl.java index ccabcb2ac..b558ffb53 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagQueryServiceImpl.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/service/impl/TagQueryServiceImpl.java @@ -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 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 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 aggregators = new ArrayList<>(); aggregators.add(new Aggregator(tag.getBizName(), AggOperatorEnum.COUNT, tagValueAlias)); - queryTagReq.setAggregators(aggregators); + queryStructReq.setAggregators(aggregators); List 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) { diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DataSetSchemaBuilder.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DataSetSchemaBuilder.java index f06454f91..5f586154e 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DataSetSchemaBuilder.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DataSetSchemaBuilder.java @@ -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()) diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java index d043c355b..49beb0034 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/DimensionConverter.java @@ -86,7 +86,7 @@ public class DimensionConverter { public static List filterByDataSet(List 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()); } diff --git a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java index 56e491c7c..95dcc9f80 100644 --- a/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java +++ b/headless/server/src/main/java/com/tencent/supersonic/headless/server/utils/MetricConverter.java @@ -101,7 +101,7 @@ public class MetricConverter { public static List filterByDataSet(List 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()); } diff --git a/headless/server/src/main/resources/mapper/custom/TagCustomMapper.xml b/headless/server/src/main/resources/mapper/custom/TagCustomMapper.xml index 3b2e1a026..7d1e8b709 100644 --- a/headless/server/src/main/resources/mapper/custom/TagCustomMapper.xml +++ b/headless/server/src/main/resources/mapper/custom/TagCustomMapper.xml @@ -52,13 +52,13 @@