mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-15 22:46:49 +00:00
[improvement][headless]Refactor translator module to make code logic cleaner and more readable.
This commit is contained in:
@@ -55,7 +55,7 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
DimensionResp departmentDimension = getDimension("department", userModel);
|
||||
MetricResp metricUv = addMetric_uv(pvUvModel, departmentDimension);
|
||||
|
||||
DimensionResp pageDimension = getDimension("page", stayTimeModel);
|
||||
DimensionResp pageDimension = getDimension("visits_page", stayTimeModel);
|
||||
updateDimension(stayTimeModel, pageDimension);
|
||||
DimensionResp userDimension = getDimension("user_name", userModel);
|
||||
MetricResp metricPv = addMetric_pv(pvUvModel, departmentDimension, userDimension);
|
||||
@@ -196,7 +196,7 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
Dimension dimension1 = new Dimension("", "imp_date", DimensionType.partition_time, 0);
|
||||
Dimension dimension1 = new Dimension("数据日期", "imp_date", DimensionType.partition_time, 1);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dimension dimension2 = new Dimension("", "page", DimensionType.categorical, 0);
|
||||
@@ -231,10 +231,10 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
Dimension dimension1 = new Dimension("数据日期", "imp_date", DimensionType.partition_time, 1);
|
||||
Dimension dimension1 = new Dimension("数据日期", "imp_date", DimensionType.partition_time, 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dimension dimension2 = new Dimension("页面", "page", DimensionType.categorical, 1);
|
||||
Dimension dimension2 = new Dimension("页面", "visits_page", DimensionType.categorical, 1);
|
||||
dimension2.setExpr("page");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
@@ -26,11 +26,11 @@ com.tencent.supersonic.headless.chat.parser.llm.DataSetResolver=\
|
||||
### headless-core SPIs
|
||||
|
||||
com.tencent.supersonic.headless.core.translator.converter.QueryConverter=\
|
||||
com.tencent.supersonic.headless.core.translator.converter.DefaultDimValueConverter,\
|
||||
com.tencent.supersonic.headless.core.translator.converter.SqlVariableConverter,\
|
||||
com.tencent.supersonic.headless.core.translator.converter.SqlQueryConverter,\
|
||||
com.tencent.supersonic.headless.core.translator.converter.StructQueryConverter,\
|
||||
com.tencent.supersonic.headless.core.translator.converter.DerivedMetricConverter,\
|
||||
com.tencent.supersonic.headless.core.translator.converter.SqlQueryConverter,\
|
||||
com.tencent.supersonic.headless.core.translator.converter.DefaultDimValueConverter,\
|
||||
com.tencent.supersonic.headless.core.translator.converter.MetricExpressionConverter,\
|
||||
com.tencent.supersonic.headless.core.translator.converter.MetricRatioConverter
|
||||
|
||||
com.tencent.supersonic.headless.core.translator.optimizer.QueryOptimizer=\
|
||||
|
||||
@@ -41,7 +41,7 @@ public class MetricTest extends BaseTest {
|
||||
@Test
|
||||
@SetSystemProperty(key = "s2.test", value = "true")
|
||||
public void testMetricModel() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("超音数 访问次数", agent.getId());
|
||||
QueryResult actualResult = submitNewChat("超音数访问次数", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
@@ -79,6 +79,7 @@ public class MetricTest extends BaseTest {
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
assert actualResult.getQueryResults().size() == 1;
|
||||
assert actualResult.getQuerySql().contains("s2_pv_uv_statis");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -104,11 +105,61 @@ public class MetricTest extends BaseTest {
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
assert actualResult.getQueryResults().size() == 1;
|
||||
assert actualResult.getQuerySql().contains("s2_pv_uv_statis");
|
||||
}
|
||||
|
||||
@Test
|
||||
@SetSystemProperty(key = "s2.test", value = "true")
|
||||
public void testMetricGroupBy() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("近7天超音数各用户的访问次数", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
expectedResult.setChatContext(expectedParseInfo);
|
||||
|
||||
expectedResult.setQueryMode(MetricGroupByQuery.QUERY_MODE);
|
||||
expectedParseInfo.setAggType(NONE);
|
||||
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
expectedParseInfo.getDimensions().add(DataUtils.getSchemaElement("用户名"));
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.BETWEEN, 7,
|
||||
DatePeriodEnum.DAY, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.AGGREGATE);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
assert actualResult.getQueryResults().size() == 6;
|
||||
assert actualResult.getQuerySql().contains("s2_pv_uv_statis");
|
||||
assert actualResult.getQuerySql().contains("s2_user_department");
|
||||
}
|
||||
|
||||
@Test
|
||||
@SetSystemProperty(key = "s2.test", value = "true")
|
||||
public void testMetricGroupByAndJoin() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("近7天超音数各部门的访问次数", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
SemanticParseInfo expectedParseInfo = new SemanticParseInfo();
|
||||
expectedResult.setChatContext(expectedParseInfo);
|
||||
|
||||
expectedResult.setQueryMode(MetricGroupByQuery.QUERY_MODE);
|
||||
expectedParseInfo.setAggType(NONE);
|
||||
|
||||
expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数"));
|
||||
expectedParseInfo.getDimensions().add(DataUtils.getSchemaElement("部门"));
|
||||
|
||||
expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.BETWEEN, 7,
|
||||
DatePeriodEnum.DAY, startDay, endDay));
|
||||
expectedParseInfo.setQueryType(QueryType.AGGREGATE);
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
assert actualResult.getQueryResults().size() == 4;
|
||||
assert actualResult.getQuerySql().contains("s2_pv_uv_statis");
|
||||
}
|
||||
|
||||
@Test
|
||||
@SetSystemProperty(key = "s2.test", value = "true")
|
||||
public void testMetricGroupByAndMultiJoin() throws Exception {
|
||||
QueryResult actualResult = submitNewChat("近7天超音数各部门的访问次数和停留时长", agent.getId());
|
||||
|
||||
QueryResult expectedResult = new QueryResult();
|
||||
@@ -128,6 +179,9 @@ public class MetricTest extends BaseTest {
|
||||
|
||||
assertQueryResult(expectedResult, actualResult);
|
||||
assert actualResult.getQueryResults().size() == 4;
|
||||
assert actualResult.getQuerySql().contains("s2_pv_uv_statis");
|
||||
assert actualResult.getQuerySql().contains("s2_user_department");
|
||||
assert actualResult.getQuerySql().contains("s2_stay_time_statis");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.tencent.supersonic.headless.api.pojo.response.SemanticTranslateResp;
|
||||
import com.tencent.supersonic.headless.chat.utils.QueryReqBuilder;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junitpioneer.jupiter.SetSystemProperty;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Optional;
|
||||
@@ -38,6 +39,7 @@ public class TranslateTest extends BaseTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
@SetSystemProperty(key = "s2.test", value = "true")
|
||||
public void testStructExplain() throws Exception {
|
||||
QueryStructReq queryStructReq =
|
||||
buildQueryStructReq(Collections.singletonList("department"));
|
||||
|
||||
Reference in New Issue
Block a user