mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-15 06:27:21 +00:00
[improvement][Headless] Fix the caching issue in struct queries and add headless test cases. (#689)
This commit is contained in:
@@ -42,32 +42,28 @@ public class LocalSemanticInterpreter extends BaseSemanticInterpreter {
|
||||
@Override
|
||||
public SemanticQueryResp queryByStruct(QueryStructReq queryStructReq, User user) {
|
||||
if (StringUtils.isNotBlank(queryStructReq.getCorrectS2SQL())) {
|
||||
QuerySqlReq querySQLReq = new QuerySqlReq();
|
||||
querySQLReq.setSql(queryStructReq.getCorrectS2SQL());
|
||||
querySQLReq.setModelIds(queryStructReq.getModelIdSet());
|
||||
querySQLReq.setParams(new ArrayList<>());
|
||||
return queryByS2SQL(querySQLReq, user);
|
||||
QuerySqlReq querySqlReq = new QuerySqlReq();
|
||||
querySqlReq.setSql(queryStructReq.getCorrectS2SQL());
|
||||
querySqlReq.setModelIds(queryStructReq.getModelIdSet());
|
||||
querySqlReq.setParams(new ArrayList<>());
|
||||
return queryByS2SQL(querySqlReq, user);
|
||||
}
|
||||
queryService = ContextUtils.getBean(QueryService.class);
|
||||
return queryService.queryByReq(queryStructReq, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public SemanticQueryResp queryByMultiStruct(QueryMultiStructReq queryMultiStructReq, User user) {
|
||||
try {
|
||||
queryService = ContextUtils.getBean(QueryService.class);
|
||||
return queryService.queryByReq(queryMultiStructReq, user);
|
||||
} catch (Exception e) {
|
||||
log.info("queryByMultiStruct has an exception:{}", e);
|
||||
}
|
||||
return null;
|
||||
queryService = ContextUtils.getBean(QueryService.class);
|
||||
return queryService.queryByReq(queryMultiStructReq, user);
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public SemanticQueryResp queryByS2SQL(QuerySqlReq querySQLReq, User user) {
|
||||
public SemanticQueryResp queryByS2SQL(QuerySqlReq querySqlReq, User user) {
|
||||
queryService = ContextUtils.getBean(QueryService.class);
|
||||
SemanticQueryResp object = queryService.queryByReq(querySQLReq, user);
|
||||
SemanticQueryResp object = queryService.queryByReq(querySqlReq, user);
|
||||
return JsonUtil.toObject(JsonUtil.toString(object), SemanticQueryResp.class);
|
||||
}
|
||||
|
||||
|
||||
@@ -72,11 +72,11 @@ public class RemoteSemanticInterpreter extends BaseSemanticInterpreter {
|
||||
@Override
|
||||
public SemanticQueryResp queryByStruct(QueryStructReq queryStructReq, User user) {
|
||||
if (StringUtils.isNotBlank(queryStructReq.getCorrectS2SQL())) {
|
||||
QuerySqlReq querySQLReq = new QuerySqlReq();
|
||||
querySQLReq.setSql(queryStructReq.getCorrectS2SQL());
|
||||
querySQLReq.setModelIds(queryStructReq.getModelIdSet());
|
||||
querySQLReq.setParams(new ArrayList<>());
|
||||
return queryByS2SQL(querySQLReq, user);
|
||||
QuerySqlReq querySqlReq = new QuerySqlReq();
|
||||
querySqlReq.setSql(queryStructReq.getCorrectS2SQL());
|
||||
querySqlReq.setModelIds(queryStructReq.getModelIdSet());
|
||||
querySqlReq.setParams(new ArrayList<>());
|
||||
return queryByS2SQL(querySqlReq, user);
|
||||
}
|
||||
|
||||
DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class);
|
||||
@@ -94,10 +94,10 @@ public class RemoteSemanticInterpreter extends BaseSemanticInterpreter {
|
||||
}
|
||||
|
||||
@Override
|
||||
public SemanticQueryResp queryByS2SQL(QuerySqlReq querySQLReq, User user) {
|
||||
public SemanticQueryResp queryByS2SQL(QuerySqlReq querySqlReq, User user) {
|
||||
DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class);
|
||||
return searchByRestTemplate(defaultSemanticConfig.getSemanticUrl() + defaultSemanticConfig.getSearchBySqlPath(),
|
||||
new Gson().toJson(querySQLReq));
|
||||
new Gson().toJson(querySqlReq));
|
||||
}
|
||||
|
||||
public SemanticQueryResp searchByRestTemplate(String url, String jsonReq) {
|
||||
|
||||
@@ -38,7 +38,7 @@ public interface SemanticInterpreter {
|
||||
|
||||
SemanticQueryResp queryByMultiStruct(QueryMultiStructReq queryMultiStructReq, User user);
|
||||
|
||||
SemanticQueryResp queryByS2SQL(QuerySqlReq querySQLReq, User user);
|
||||
SemanticQueryResp queryByS2SQL(QuerySqlReq querySqlReq, User user);
|
||||
|
||||
SemanticQueryResp queryDimValue(QueryDimValueReq queryDimValueReq, User user);
|
||||
|
||||
|
||||
@@ -121,9 +121,9 @@ public abstract class BaseSemanticQuery implements SemanticQuery, Serializable {
|
||||
}
|
||||
QueryStructReq queryStructReq = convertQueryStruct();
|
||||
convertBizNameToName(semanticSchema, queryStructReq);
|
||||
QuerySqlReq querySQLReq = queryStructReq.convert(queryStructReq);
|
||||
parseInfo.getSqlInfo().setS2SQL(querySQLReq.getSql());
|
||||
parseInfo.getSqlInfo().setCorrectS2SQL(querySQLReq.getSql());
|
||||
QuerySqlReq querySqlReq = queryStructReq.convert(queryStructReq);
|
||||
parseInfo.getSqlInfo().setS2SQL(querySqlReq.getSql());
|
||||
parseInfo.getSqlInfo().setCorrectS2SQL(querySqlReq.getSql());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -42,8 +42,8 @@ public class LLMSqlQuery extends LLMSemanticQuery {
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
String querySql = parseInfo.getSqlInfo().getCorrectS2SQL();
|
||||
QuerySqlReq querySQLReq = QueryReqBuilder.buildS2SQLReq(querySql, parseInfo.getModel().getModelIds());
|
||||
SemanticQueryResp queryResp = semanticInterpreter.queryByS2SQL(querySQLReq, user);
|
||||
QuerySqlReq querySqlReq = QueryReqBuilder.buildS2SQLReq(querySql, parseInfo.getModel().getModelIds());
|
||||
SemanticQueryResp queryResp = semanticInterpreter.queryByS2SQL(querySqlReq, user);
|
||||
|
||||
log.info("queryByS2SQL cost:{},querySql:{}", System.currentTimeMillis() - startTime, querySql);
|
||||
|
||||
|
||||
@@ -159,7 +159,7 @@ public class DictQueryHelper {
|
||||
private QueryStructReq generateQueryStructCmd(Long modelId, DefaultMetric defaultMetricDesc, Dim4Dict dim4Dict) {
|
||||
QueryStructReq queryStructCmd = new QueryStructReq();
|
||||
|
||||
queryStructCmd.setModelId(modelId);
|
||||
queryStructCmd.addModelId(modelId);
|
||||
queryStructCmd.setGroups(Arrays.asList(dim4Dict.getBizName()));
|
||||
|
||||
List<Filter> filters = generateFilters(dim4Dict, queryStructCmd);
|
||||
|
||||
@@ -134,12 +134,12 @@ public class QueryReqBuilder {
|
||||
* @return
|
||||
*/
|
||||
public static QuerySqlReq buildS2SQLReq(String querySql, Set<Long> modelIds) {
|
||||
QuerySqlReq querySQLReq = new QuerySqlReq();
|
||||
QuerySqlReq querySqlReq = new QuerySqlReq();
|
||||
if (Objects.nonNull(querySql)) {
|
||||
querySQLReq.setSql(querySql);
|
||||
querySqlReq.setSql(querySql);
|
||||
}
|
||||
querySQLReq.setModelIds(modelIds);
|
||||
return querySQLReq;
|
||||
querySqlReq.setModelIds(modelIds);
|
||||
return querySqlReq;
|
||||
}
|
||||
|
||||
private static List<Aggregator> getAggregatorByMetric(AggregateTypeEnum aggregateType, SchemaElement metric) {
|
||||
|
||||
Reference in New Issue
Block a user