From 5f4d24348ae0e702e65589f4eae7562c91e65221 Mon Sep 17 00:00:00 2001 From: jipeli <54889677+jipeli@users.noreply.github.com> Date: Fri, 13 Sep 2024 14:37:14 +0800 Subject: [PATCH] [improvement][headless] fix queryData by dimension error (#1666) --- .../chat/server/service/impl/ChatQueryServiceImpl.java | 1 + .../headless/core/translator/DefaultSemanticTranslator.java | 4 +--- .../java/com/tencent/supersonic/headless/QueryBySqlTest.java | 4 +++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java index ec76547a7..416b4946f 100644 --- a/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java +++ b/chat/server/src/main/java/com/tencent/supersonic/chat/server/service/impl/ChatQueryServiceImpl.java @@ -200,6 +200,7 @@ public class ChatQueryServiceImpl implements ChatQueryService { SemanticParseInfo parseInfo = chatManageService.getParseInfo(chatQueryDataReq.getQueryId(), parseId); parseInfo = mergeParseInfo(parseInfo, chatQueryDataReq); + parseInfo.setSqlInfo(new SqlInfo()); DataSetSchema dataSetSchema = semanticLayerService.getDataSetSchema(parseInfo.getDataSetId()); diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DefaultSemanticTranslator.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DefaultSemanticTranslator.java index 6bd77fd0b..d3041653a 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DefaultSemanticTranslator.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/DefaultSemanticTranslator.java @@ -89,9 +89,7 @@ public class DefaultSemanticTranslator implements SemanticTranslator { QueryStatement tableSql = parserSql( metricTable, isSingleTable, dataSetQueryParam, queryStatement); - if (isSingleTable - && Objects.nonNull(tableSql.getDataSetQueryParam()) - && !tableSql.getDataSetSimplifySql().isEmpty()) { + if (isSingleTable && StringUtils.isNotBlank(tableSql.getDataSetSimplifySql())) { queryStatement.setSql(tableSql.getDataSetSimplifySql()); queryStatement.setDataSetQueryParam(dataSetQueryParam); return queryStatement; diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryBySqlTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryBySqlTest.java index 43bbe8f85..057962965 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryBySqlTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryBySqlTest.java @@ -129,6 +129,8 @@ public class QueryBySqlTest extends BaseTest { SemanticQueryResp semanticQueryResp = queryBySql("SELECT SUM(pv) FROM 超音数PVUV统计 WHERE department ='HR'", tom); Assertions.assertNotNull(semanticQueryResp.getQueryAuthorization().getMessage()); - Assertions.assertTrue(semanticQueryResp.getSql().contains("user_name = 'tom'")); + Assertions.assertTrue( + semanticQueryResp.getSql().contains("user_name = 'tom'") + || semanticQueryResp.getSql().contains("`user_name` = 'tom'")); } }