(improvement)(semantic) support dimension value query in SemanticLayer (#90)

This commit is contained in:
LXW
2023-09-14 14:01:51 +08:00
committed by GitHub
parent 592870f397
commit bc69d2221a
9 changed files with 92 additions and 4 deletions

View File

@@ -20,6 +20,9 @@ public class DefaultSemanticConfig {
@Value("${searchByStruct.path:/api/semantic/query/sql}")
private String searchBySqlPath;
@Value("${searchByStruct.path:/api/semantic/query/queryDimValue}")
private String queryDimValuePath;
@Value("${fetchModelSchemaPath.path:/api/semantic/schema}")
private String fetchModelSchemaPath;

View File

@@ -14,6 +14,7 @@ import com.tencent.supersonic.semantic.api.model.response.MetricResp;
import com.tencent.supersonic.semantic.api.model.response.DomainResp;
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp;
import com.tencent.supersonic.semantic.api.query.request.QueryDimValueReq;
import com.tencent.supersonic.semantic.api.query.request.QueryDslReq;
import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.semantic.api.query.request.QueryStructReq;
@@ -33,18 +34,19 @@ public class LocalSemanticLayer extends BaseSemanticLayer {
private ModelService modelService;
private DimensionService dimensionService;
private MetricService metricService;
private QueryService queryService;
@SneakyThrows
@Override
public QueryResultWithSchemaResp queryByStruct(QueryStructReq queryStructReq, User user) {
QueryService queryService = ContextUtils.getBean(QueryService.class);
queryService = ContextUtils.getBean(QueryService.class);
return queryService.queryByStructWithAuth(queryStructReq, user);
}
@Override
public QueryResultWithSchemaResp queryByMultiStruct(QueryMultiStructReq queryMultiStructReq, User user) {
try {
QueryService queryService = ContextUtils.getBean(QueryService.class);
queryService = ContextUtils.getBean(QueryService.class);
return queryService.queryByMultiStruct(queryMultiStructReq, user);
} catch (Exception e) {
log.info("queryByMultiStruct has an exception:{}", e);
@@ -55,7 +57,7 @@ public class LocalSemanticLayer extends BaseSemanticLayer {
@Override
public QueryResultWithSchemaResp queryByDsl(QueryDslReq queryDslReq, User user) {
try {
QueryService queryService = ContextUtils.getBean(QueryService.class);
queryService = ContextUtils.getBean(QueryService.class);
Object object = queryService.queryBySql(queryDslReq, user);
QueryResultWithSchemaResp queryResultWithSchemaResp = JsonUtil.toObject(JsonUtil.toString(object),
QueryResultWithSchemaResp.class);
@@ -66,6 +68,13 @@ public class LocalSemanticLayer extends BaseSemanticLayer {
return null;
}
@Override
@SneakyThrows
public QueryResultWithSchemaResp queryDimValue(QueryDimValueReq queryDimValueReq, User user) {
queryService = ContextUtils.getBean(QueryService.class);
return queryService.queryDimValue(queryDimValueReq, user);
}
@Override
public List<ModelSchemaResp> doFetchModelSchema(List<Long> ids) {
ModelSchemaFilterReq filter = new ModelSchemaFilterReq();

View File

@@ -20,6 +20,7 @@ import com.tencent.supersonic.semantic.api.model.response.MetricResp;
import com.tencent.supersonic.semantic.api.model.response.DomainResp;
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
import com.tencent.supersonic.semantic.api.model.response.ModelSchemaResp;
import com.tencent.supersonic.semantic.api.query.request.QueryDimValueReq;
import com.tencent.supersonic.semantic.api.query.request.QueryDslReq;
import com.tencent.supersonic.semantic.api.query.request.QueryMultiStructReq;
import com.tencent.supersonic.semantic.api.query.request.QueryStructReq;
@@ -113,6 +114,14 @@ public class RemoteSemanticLayer extends BaseSemanticLayer {
throw new CommonException(responseBody.getCode(), responseBody.getMsg());
}
@Override
public QueryResultWithSchemaResp queryDimValue(QueryDimValueReq queryDimValueReq, User user) {
DefaultSemanticConfig defaultSemanticConfig = ContextUtils.getBean(DefaultSemanticConfig.class);
return searchByRestTemplate(defaultSemanticConfig.getSemanticUrl()
+ defaultSemanticConfig.getQueryDimValuePath(),
new Gson().toJson(queryDimValueReq));
}
@Override
public List<ModelSchemaResp> doFetchModelSchema(List<Long> ids) {
HttpHeaders headers = new HttpHeaders();