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