mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-15 06:27:21 +00:00
[improvement][headless]Support count(1) as metric calculation expression.
This commit is contained in:
@@ -17,26 +17,27 @@ import java.util.Set;
|
||||
public class TableView {
|
||||
|
||||
private Set<String> fields = Sets.newHashSet();
|
||||
private List<SqlNode> dimension = new ArrayList<>();
|
||||
private List<SqlNode> metric = new ArrayList<>();
|
||||
private List<SqlNode> select = Lists.newArrayList();
|
||||
private SqlNodeList order;
|
||||
private SqlNode fetch;
|
||||
private SqlNode offset;
|
||||
private SqlNode table;
|
||||
private List<SqlNode> select = Lists.newArrayList();
|
||||
|
||||
private String alias;
|
||||
private List<String> primary;
|
||||
private ModelResp dataModel;
|
||||
|
||||
public SqlNode build() {
|
||||
List<SqlNode> selectNodeList = new ArrayList<>();
|
||||
selectNodeList.addAll(metric);
|
||||
selectNodeList.addAll(dimension);
|
||||
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);
|
||||
new SqlNodeList(selectNodeList, SqlParserPos.ZERO), table, null, null, null,
|
||||
null, null, order, offset, fetch, null);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -292,10 +292,10 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
metricReq.setBizName("pv");
|
||||
metricReq.setDescription("一段时间内用户的访问次数");
|
||||
MetricDefineByFieldParams metricTypeParams = new MetricDefineByFieldParams();
|
||||
metricTypeParams.setExpr("count(imp_date)");
|
||||
List<FieldParam> fieldParams = new ArrayList<>();
|
||||
fieldParams.add(new FieldParam("imp_date"));
|
||||
metricTypeParams.setFields(fieldParams);
|
||||
metricTypeParams.setExpr("count(1)");
|
||||
// List<FieldParam> fieldParams = new ArrayList<>();
|
||||
// fieldParams.add(new FieldParam("imp_date"));
|
||||
// metricTypeParams.setFields(fieldParams);
|
||||
metricReq.setMetricDefineByFieldParams(metricTypeParams);
|
||||
metricReq.setMetricDefineType(MetricDefineType.FIELD);
|
||||
metricReq.setRelateDimension(getRelateDimension(
|
||||
|
||||
@@ -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统计 ");
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user