diff --git a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/TableView.java b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/TableView.java index f55e8f799..d1c351c9b 100644 --- a/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/TableView.java +++ b/headless/core/src/main/java/com/tencent/supersonic/headless/core/translator/parser/calcite/TableView.java @@ -17,26 +17,27 @@ import java.util.Set; public class TableView { private Set fields = Sets.newHashSet(); - private List dimension = new ArrayList<>(); - private List metric = new ArrayList<>(); + private List select = Lists.newArrayList(); private SqlNodeList order; private SqlNode fetch; private SqlNode offset; private SqlNode table; - private List select = Lists.newArrayList(); - private String alias; private List primary; private ModelResp dataModel; public SqlNode build() { List selectNodeList = new ArrayList<>(); - selectNodeList.addAll(metric); - selectNodeList.addAll(dimension); - selectNodeList.addAll(select); - return new SqlSelect(SqlParserPos.ZERO, null, - new SqlNodeList(selectNodeList, SqlParserPos.ZERO), table, null, null, null, null, - null, order, offset, fetch, null); + if (select.isEmpty()) { + return new SqlSelect(SqlParserPos.ZERO, null, + new SqlNodeList(SqlNodeList.SINGLETON_STAR, SqlParserPos.ZERO), table, null, + null, null, null, null, order, offset, fetch, null); + } else { + selectNodeList.addAll(select); + return new SqlSelect(SqlParserPos.ZERO, null, + new SqlNodeList(selectNodeList, SqlParserPos.ZERO), table, null, null, null, + null, null, order, offset, fetch, null); + } } } diff --git a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2VisitsDemo.java b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2VisitsDemo.java index 67cf96450..1d12e6a4c 100644 --- a/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2VisitsDemo.java +++ b/launchers/standalone/src/main/java/com/tencent/supersonic/demo/S2VisitsDemo.java @@ -292,10 +292,10 @@ public class S2VisitsDemo extends S2BaseDemo { metricReq.setBizName("pv"); metricReq.setDescription("一段时间内用户的访问次数"); MetricDefineByFieldParams metricTypeParams = new MetricDefineByFieldParams(); - metricTypeParams.setExpr("count(imp_date)"); - List fieldParams = new ArrayList<>(); - fieldParams.add(new FieldParam("imp_date")); - metricTypeParams.setFields(fieldParams); + metricTypeParams.setExpr("count(1)"); + // List fieldParams = new ArrayList<>(); + // fieldParams.add(new FieldParam("imp_date")); + // metricTypeParams.setFields(fieldParams); metricReq.setMetricDefineByFieldParams(metricTypeParams); metricReq.setMetricDefineType(MetricDefineType.FIELD); metricReq.setRelateDimension(getRelateDimension( 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 2ea1497e3..88f2520aa 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 @@ -7,6 +7,7 @@ import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; import com.tencent.supersonic.util.DataUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.junitpioneer.jupiter.SetSystemProperty; import static java.time.LocalDate.now; import static org.junit.Assert.assertEquals; @@ -29,6 +30,7 @@ public class QueryBySqlTest extends BaseTest { } @Test + @SetSystemProperty(key = "s2.test", value = "true") public void testSumQuery() throws Exception { SemanticQueryResp semanticQueryResp = queryBySql("SELECT SUM(访问次数) AS 总访问次数 FROM 超音数PVUV统计 "); diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/TranslatorTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/TranslatorTest.java index 25cae48bc..1814299ee 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/TranslatorTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/TranslatorTest.java @@ -47,7 +47,7 @@ public class TranslatorTest extends BaseTest { .translate(QueryReqBuilder.buildS2SQLReq(sql, dataSetId), User.getDefaultUser()); assertNotNull(explain); assertNotNull(explain.getQuerySQL()); - assertTrue(explain.getQuerySQL().contains("count(imp_date)")); + assertTrue(explain.getQuerySQL().contains("count(1)")); executeSql(explain.getQuerySQL()); } @@ -59,7 +59,7 @@ public class TranslatorTest extends BaseTest { assertNotNull(explain); assertNotNull(explain.getQuerySQL()); assertTrue(explain.getQuerySQL().contains("department")); - assertTrue(explain.getQuerySQL().contains("count(imp_date)")); + assertTrue(explain.getQuerySQL().contains("count(1)")); executeSql(explain.getQuerySQL()); } @@ -73,7 +73,7 @@ public class TranslatorTest extends BaseTest { assertNotNull(explain); assertNotNull(explain.getQuerySQL()); assertTrue(explain.getQuerySQL().toLowerCase().contains("department")); - assertTrue(explain.getQuerySQL().toLowerCase().contains("count(imp_date)")); + assertTrue(explain.getQuerySQL().toLowerCase().contains("count(1)")); executeSql(explain.getQuerySQL()); } @@ -87,7 +87,7 @@ public class TranslatorTest extends BaseTest { assertNotNull(explain); assertNotNull(explain.getQuerySQL()); assertTrue(explain.getQuerySQL().toLowerCase().contains("department")); - assertTrue(explain.getQuerySQL().toLowerCase().contains("count(imp_date)")); + assertTrue(explain.getQuerySQL().toLowerCase().contains("count(1)")); executeSql(explain.getQuerySQL()); }