(improvement)(chat) Rules and large model queries should be queried using s2sql (#334)

This commit is contained in:
lexluo09
2023-11-07 16:23:31 +08:00
committed by GitHub
parent aa6c658a9a
commit 0365886270
37 changed files with 340 additions and 153 deletions

View File

@@ -24,6 +24,7 @@ import com.tencent.supersonic.semantic.model.domain.DimensionService;
import com.tencent.supersonic.semantic.model.domain.MetricService;
import com.tencent.supersonic.semantic.query.service.QueryService;
import com.tencent.supersonic.semantic.query.service.SchemaService;
import java.util.HashMap;
import java.util.List;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -40,12 +41,13 @@ public class LocalSemanticInterpreter extends BaseSemanticInterpreter {
@SneakyThrows
@Override
public QueryResultWithSchemaResp queryByStruct(QueryStructReq queryStructReq, User user) {
QueryS2QLReq queryS2QLReq = queryStructReq.convert(queryStructReq);
if (queryStructReq.isUseS2qlSwitch() && StringUtils.isNotBlank(queryS2QLReq.getSql())) {
log.info("queryStructReq convert to sql:{},queryStructReq:{}", queryS2QLReq.getSql(), queryStructReq);
if (StringUtils.isNotBlank(queryStructReq.getLogicSql())) {
QueryS2QLReq queryS2QLReq = new QueryS2QLReq();
queryS2QLReq.setSql(queryStructReq.getLogicSql());
queryS2QLReq.setModelId(queryStructReq.getModelId());
queryS2QLReq.setVariables(new HashMap<>());
return queryByS2QL(queryS2QLReq, user);
}
queryService = ContextUtils.getBean(QueryService.class);
return queryService.queryByStructWithAuth(queryStructReq, user);
}

View File

@@ -36,6 +36,7 @@ import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.semantic.api.query.request.QueryStructReq;
import java.net.URI;
import java.net.URL;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Objects;
@@ -69,9 +70,11 @@ public class RemoteSemanticInterpreter extends BaseSemanticInterpreter {
@Override
public QueryResultWithSchemaResp queryByStruct(QueryStructReq queryStructReq, User user) {
QueryS2QLReq queryS2QLReq = queryStructReq.convert(queryStructReq);
if (queryStructReq.isUseS2qlSwitch() && StringUtils.isNotBlank(queryS2QLReq.getSql())) {
log.info("queryStructReq convert to sql:{},queryStructReq:{}", queryS2QLReq.getSql(), queryStructReq);
if (StringUtils.isNotBlank(queryStructReq.getLogicSql())) {
QueryS2QLReq queryS2QLReq = new QueryS2QLReq();
queryS2QLReq.setSql(queryStructReq.getLogicSql());
queryS2QLReq.setModelId(queryStructReq.getModelId());
queryS2QLReq.setVariables(new HashMap<>());
return queryByS2QL(queryS2QLReq, user);
}