(improvement)(Headless) Dataset supports query mode settings, and the chat layer supports tag mode (#802)

This commit is contained in:
lexluo09
2024-03-12 12:15:21 +08:00
committed by GitHub
parent 1d91a972da
commit ae7acb4817
26 changed files with 171 additions and 207 deletions

View File

@@ -1,11 +1,11 @@
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;
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
import lombok.Data;
import java.util.List;
import lombok.Data;
@Data
public class DataSetReq extends SchemaItem {
@@ -22,6 +22,8 @@ public class DataSetReq extends SchemaItem {
private List<String> adminOrgs;
private QueryType queryType;
public String getAdmin() {
if (admins == null) {
return null;

View File

@@ -53,16 +53,7 @@ public class QueryStructReq extends SemanticQueryReq {
private DateConf dateInfo;
private Long limit = 2000L;
private QueryType queryType = QueryType.ID;
/**
* Later deleted for compatibility only
*/
private String s2SQL;
/**
* Later deleted for compatibility only
*/
private String correctS2SQL;
private boolean convertToSql = true;
public List<String> getGroups() {
if (!CollectionUtils.isEmpty(this.groups)) {

View File

@@ -1,17 +1,17 @@
package com.tencent.supersonic.headless.api.pojo.response;
import com.google.common.collect.Lists;
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
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 lombok.Data;
import org.springframework.util.CollectionUtils;
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.stream.Collectors;
import lombok.Data;
import org.springframework.util.CollectionUtils;
@Data
public class DataSetResp extends SchemaItem {
@@ -30,6 +30,8 @@ public class DataSetResp extends SchemaItem {
private QueryConfig queryConfig;
private QueryType queryType;
public List<Long> getAllMetrics() {
return getDataSetModelConfigs().stream().map(DataSetModelConfig::getMetrics)
.flatMap(Collection::stream).collect(Collectors.toList());

View File

@@ -3,8 +3,8 @@ package com.tencent.supersonic.headless.server.persistence.dataobject;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
import lombok.Data;
@Data
@TableName("s2_data_set")
@@ -41,4 +41,6 @@ public class DataSetDO {
private String adminOrg;
private String queryType;
}

View File

@@ -8,10 +8,12 @@ import com.google.common.cache.CacheBuilder;
import com.google.common.collect.Lists;
import com.tencent.supersonic.auth.api.authentication.pojo.User;
import com.tencent.supersonic.common.pojo.enums.AuthType;
import com.tencent.supersonic.common.pojo.enums.QueryType;
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
import com.tencent.supersonic.common.util.BeanMapper;
import com.tencent.supersonic.headless.api.pojo.DataSetModelConfig;
import com.tencent.supersonic.headless.api.pojo.QueryConfig;
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
@@ -30,6 +32,7 @@ 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.DataSetService;
import java.util.Objects;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.beans.BeanUtils;
@@ -168,6 +171,7 @@ public class DataSetServiceImpl
dataSetResp.setAdminOrgs(StringUtils.isBlank(dataSetDO.getAdminOrg())
? Lists.newArrayList() : Arrays.asList(dataSetDO.getAdminOrg().split(",")));
dataSetResp.setTypeEnum(TypeEnums.DATASET);
dataSetResp.setQueryType(QueryType.valueOf(dataSetDO.getQueryType()));
return dataSetResp;
}
@@ -176,6 +180,8 @@ public class DataSetServiceImpl
BeanMapper.mapper(dataSetReq, dataSetDO);
dataSetDO.setDataSetDetail(JSONObject.toJSONString(dataSetReq.getDataSetDetail()));
dataSetDO.setQueryConfig(JSONObject.toJSONString(dataSetReq.getQueryConfig()));
QueryType queryType = getQueryType(dataSetReq);
dataSetDO.setQueryType(queryType.name());
return dataSetDO;
}
@@ -188,6 +194,24 @@ public class DataSetServiceImpl
return queryReq;
}
private QueryType getQueryType(DataSetReq dataSetReq) {
QueryType queryType = dataSetReq.getQueryType();
if (Objects.nonNull(queryType)) {
return queryType;
}
List<DataSetModelConfig> dataSetModelConfigs = dataSetReq.getDataSetDetail().getDataSetModelConfigs();
if (CollectionUtils.isEmpty(dataSetModelConfigs)) {
return QueryType.METRIC;
}
Set<DataSetModelConfig> collect = dataSetModelConfigs.stream()
.filter(config -> !CollectionUtils.isEmpty(config.getTagIds())).collect(Collectors.toSet());
if (CollectionUtils.isEmpty(collect)) {
return QueryType.METRIC;
}
return QueryType.TAG;
}
public static boolean checkAdminPermission(User user, DataSetResp dataSetResp) {
List<String> admins = dataSetResp.getAdmins();
if (user.isSuperAdmin()) {