diff --git a/common/src/main/java/com/tencent/supersonic/common/pojo/Filter.java b/common/src/main/java/com/tencent/supersonic/common/pojo/Filter.java index 9ecb491ec..adaab80d1 100644 --- a/common/src/main/java/com/tencent/supersonic/common/pojo/Filter.java +++ b/common/src/main/java/com/tencent/supersonic/common/pojo/Filter.java @@ -2,6 +2,7 @@ package com.tencent.supersonic.common.pojo; import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; import lombok.AllArgsConstructor; +import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @@ -10,6 +11,7 @@ import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor +@Builder public class Filter { private Relation relation = Relation.FILTER; 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 f80458c31..35896939e 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 @@ -79,8 +79,8 @@ public class S2VisitsDemo extends S2BaseDemo { ModelResp userModel = addModel_1(s2Domain, demoDatabase); ModelResp pvUvModel = addModel_2(s2Domain, demoDatabase); ModelResp stayTimeModel = addModel_3(s2Domain, demoDatabase); - addModelRela(s2Domain, userModel, pvUvModel, "user_name"); - addModelRela(s2Domain, userModel, stayTimeModel, "user_name"); + addModelRela(s2Domain, pvUvModel, userModel, "user_name"); + addModelRela(s2Domain, stayTimeModel, userModel, "user_name"); // create metrics and dimensions DimensionResp departmentDimension = getDimension("department", userModel); diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java index c78959c89..0dbc119f9 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/chat/MetricTest.java @@ -75,7 +75,7 @@ public class MetricTest extends BaseTest { @Test @SetSystemProperty(key = "s2.test", value = "true") public void testMetricGroupBy() throws Exception { - QueryResult actualResult = submitNewChat("近7天超音数各部门的访问次数", DataUtils.productAgentId); + QueryResult actualResult = submitNewChat("近7天超音数各部门的访问次数和停留时长", DataUtils.productAgentId); QueryResult expectedResult = new QueryResult(); SemanticParseInfo expectedParseInfo = new SemanticParseInfo(); @@ -85,6 +85,7 @@ public class MetricTest extends BaseTest { expectedParseInfo.setAggType(NONE); expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("访问次数")); + expectedParseInfo.getMetrics().add(DataUtils.getSchemaElement("停留时长")); expectedParseInfo.getDimensions().add(DataUtils.getSchemaElement("部门")); expectedParseInfo.setDateInfo(DataUtils.getDateConf(DateConf.DateMode.BETWEEN, 7, diff --git a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryByMetricTest.java b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryByMetricTest.java index b4e3dd653..5f03983d5 100644 --- a/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryByMetricTest.java +++ b/launchers/standalone/src/test/java/com/tencent/supersonic/headless/QueryByMetricTest.java @@ -1,14 +1,18 @@ package com.tencent.supersonic.headless; +import com.tencent.supersonic.common.pojo.Filter; import com.tencent.supersonic.common.pojo.User; +import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum; import com.tencent.supersonic.headless.api.pojo.request.QueryMetricReq; import com.tencent.supersonic.headless.api.pojo.request.QueryStructReq; import com.tencent.supersonic.headless.api.pojo.response.SemanticQueryResp; import com.tencent.supersonic.headless.server.service.MetricService; import org.junit.Assert; import org.junit.jupiter.api.Test; +import org.junitpioneer.jupiter.SetSystemProperty; import org.springframework.beans.factory.annotation.Autowired; +import java.time.LocalDate; import java.util.Arrays; import static org.junit.Assert.assertThrows; @@ -23,16 +27,24 @@ public class QueryByMetricTest extends BaseTest { QueryMetricReq queryMetricReq = new QueryMetricReq(); queryMetricReq.setMetricNames(Arrays.asList("stay_hours", "pv")); queryMetricReq.setDimensionNames(Arrays.asList("user_name", "department")); + queryMetricReq.getFilters().add(Filter.builder().name("imp_date") + .operator(FilterOperatorEnum.MINOR_THAN_EQUALS).relation(Filter.Relation.FILTER) + .value(LocalDate.now().toString()).build()); SemanticQueryResp queryResp = queryByMetric(queryMetricReq, User.getDefaultUser()); Assert.assertNotNull(queryResp.getResultList()); Assert.assertEquals(6, queryResp.getResultList().size()); } @Test + @SetSystemProperty(key = "s2.test", value = "true") public void testWithMetricAndDimensionNames() throws Exception { QueryMetricReq queryMetricReq = new QueryMetricReq(); queryMetricReq.setMetricNames(Arrays.asList("停留时长", "访问次数")); queryMetricReq.setDimensionNames(Arrays.asList("用户", "部门")); + queryMetricReq.getFilters() + .add(Filter.builder().name("数据日期").operator(FilterOperatorEnum.MINOR_THAN_EQUALS) + .relation(Filter.Relation.FILTER).value(LocalDate.now().toString()) + .build()); SemanticQueryResp queryResp = queryByMetric(queryMetricReq, User.getDefaultUser()); Assert.assertNotNull(queryResp.getResultList()); Assert.assertEquals(6, queryResp.getResultList().size()); @@ -44,6 +56,9 @@ public class QueryByMetricTest extends BaseTest { queryMetricReq.setDomainId(1L); queryMetricReq.setMetricNames(Arrays.asList("stay_hours", "pv")); queryMetricReq.setDimensionNames(Arrays.asList("user_name", "department")); + queryMetricReq.getFilters().add(Filter.builder().name("imp_date") + .operator(FilterOperatorEnum.MINOR_THAN_EQUALS).relation(Filter.Relation.FILTER) + .value(LocalDate.now().toString()).build()); SemanticQueryResp queryResp = queryByMetric(queryMetricReq, User.getDefaultUser()); Assert.assertNotNull(queryResp.getResultList()); Assert.assertEquals(6, queryResp.getResultList().size()); @@ -61,6 +76,9 @@ public class QueryByMetricTest extends BaseTest { queryMetricReq.setDomainId(1L); queryMetricReq.setMetricIds(Arrays.asList(1L, 3L)); queryMetricReq.setDimensionIds(Arrays.asList(1L, 2L)); + queryMetricReq.getFilters().add(Filter.builder().name("imp_date") + .operator(FilterOperatorEnum.MINOR_THAN_EQUALS).relation(Filter.Relation.FILTER) + .value(LocalDate.now().toString()).build()); SemanticQueryResp queryResp = queryByMetric(queryMetricReq, User.getDefaultUser()); Assert.assertNotNull(queryResp.getResultList()); Assert.assertEquals(6, queryResp.getResultList().size());