mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 03:58:14 +00:00
(improvement)(headless) Modify the headless module structure to api, core and server (#588)
Co-authored-by: jolunoluo
This commit is contained in:
@@ -27,13 +27,13 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-query</artifactId>
|
||||
<artifactId>headless-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-model</artifactId>
|
||||
<artifactId>headless-server</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
|
||||
@@ -54,13 +54,13 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-query</artifactId>
|
||||
<artifactId>headless-core</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-model</artifactId>
|
||||
<artifactId>headless-server</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -6,18 +6,18 @@ import com.tencent.supersonic.common.pojo.JoinCondition;
|
||||
import com.tencent.supersonic.common.pojo.ModelRela;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.headless.common.model.enums.DimensionTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.enums.IdentifyTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.DimensionTimeTypeParams;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Identify;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Measure;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.ModelDetail;
|
||||
import com.tencent.supersonic.headless.common.model.request.DomainReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelReq;
|
||||
import com.tencent.supersonic.headless.model.domain.DomainService;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelRelaService;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import com.tencent.supersonic.headless.common.server.enums.DimensionType;
|
||||
import com.tencent.supersonic.headless.common.server.enums.IdentifyType;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.DimensionTimeTypeParams;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.Identify;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.Measure;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.ModelDetail;
|
||||
import com.tencent.supersonic.headless.common.server.request.DomainReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.ModelReq;
|
||||
import com.tencent.supersonic.headless.server.service.DomainService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelRelaService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -84,14 +84,14 @@ public class BenchMarkDemoDataLoader {
|
||||
modelReq.setAdminOrgs(Collections.emptyList());
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionTypeEnum.time.name(), 0);
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionType.time.name(), 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
dimensions.add(new Dim("活跃区域", "most_popular_in", DimensionTypeEnum.categorical.name(), 1));
|
||||
dimensions.add(new Dim("活跃区域", "most_popular_in", DimensionType.categorical.name(), 1));
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
identifiers.add(new Identify("音乐类型名称", IdentifyTypeEnum.primary.name(), "g_name"));
|
||||
identifiers.add(new Identify("音乐类型名称", IdentifyType.primary.name(), "g_name"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Measure> measures = new ArrayList<>();
|
||||
@@ -114,13 +114,13 @@ public class BenchMarkDemoDataLoader {
|
||||
modelReq.setDatabaseId(1L);
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
dimensions.add(new Dim("国籍", "country", DimensionTypeEnum.categorical.name(), 1));
|
||||
dimensions.add(new Dim("性别", "gender", DimensionTypeEnum.categorical.name(), 1));
|
||||
dimensions.add(new Dim("国籍", "country", DimensionType.categorical.name(), 1));
|
||||
dimensions.add(new Dim("性别", "gender", DimensionType.categorical.name(), 1));
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
identifiers.add(new Identify("艺术家名称", IdentifyTypeEnum.primary.name(), "artist_name"));
|
||||
identifiers.add(new Identify("音乐类型名称", IdentifyTypeEnum.foreign.name(), "g_name"));
|
||||
identifiers.add(new Identify("艺术家名称", IdentifyType.primary.name(), "artist_name"));
|
||||
identifiers.add(new Identify("音乐类型名称", IdentifyType.foreign.name(), "g_name"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
modelDetail.setMeasures(Collections.emptyList());
|
||||
@@ -140,13 +140,13 @@ public class BenchMarkDemoDataLoader {
|
||||
modelReq.setDatabaseId(1L);
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
dimensions.add(new Dim("持续时间", "duration", DimensionTypeEnum.categorical.name(), 1));
|
||||
dimensions.add(new Dim("文件格式", "formats", DimensionTypeEnum.categorical.name(), 1));
|
||||
dimensions.add(new Dim("持续时间", "duration", DimensionType.categorical.name(), 1));
|
||||
dimensions.add(new Dim("文件格式", "formats", DimensionType.categorical.name(), 1));
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
identifiers.add(new Identify("歌曲ID", IdentifyTypeEnum.primary.name(), "f_id"));
|
||||
identifiers.add(new Identify("艺术家名称", IdentifyTypeEnum.foreign.name(), "artist_name"));
|
||||
identifiers.add(new Identify("歌曲ID", IdentifyType.primary.name(), "f_id"));
|
||||
identifiers.add(new Identify("艺术家名称", IdentifyType.foreign.name(), "artist_name"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
modelDetail.setMeasures(Collections.emptyList());
|
||||
@@ -166,19 +166,19 @@ public class BenchMarkDemoDataLoader {
|
||||
modelReq.setDatabaseId(1L);
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionTypeEnum.time.name(), 0);
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionType.time.name(), 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
dimensions.add(new Dim("国家", "country", DimensionTypeEnum.categorical.name(), 1));
|
||||
dimensions.add(new Dim("语种", "languages", DimensionTypeEnum.categorical.name(), 1));
|
||||
dimensions.add(new Dim("发行时间", "releasedate", DimensionTypeEnum.categorical.name(), 1));
|
||||
dimensions.add(new Dim("国家", "country", DimensionType.categorical.name(), 1));
|
||||
dimensions.add(new Dim("语种", "languages", DimensionType.categorical.name(), 1));
|
||||
dimensions.add(new Dim("发行时间", "releasedate", DimensionType.categorical.name(), 1));
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
identifiers.add(new Identify("歌曲名称", IdentifyTypeEnum.primary.name(), "song_name"));
|
||||
identifiers.add(new Identify("歌曲ID", IdentifyTypeEnum.foreign.name(), "f_id"));
|
||||
identifiers.add(new Identify("艺术家名称", IdentifyTypeEnum.foreign.name(), "artist_name"));
|
||||
identifiers.add(new Identify("艺术家名称", IdentifyTypeEnum.foreign.name(), "artist_name"));
|
||||
identifiers.add(new Identify("歌曲名称", IdentifyType.primary.name(), "song_name"));
|
||||
identifiers.add(new Identify("歌曲ID", IdentifyType.foreign.name(), "f_id"));
|
||||
identifiers.add(new Identify("艺术家名称", IdentifyType.foreign.name(), "artist_name"));
|
||||
identifiers.add(new Identify("艺术家名称", IdentifyType.foreign.name(), "artist_name"));
|
||||
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic;
|
||||
|
||||
import com.tencent.supersonic.headless.model.domain.DomainService;
|
||||
import com.tencent.supersonic.headless.server.service.DomainService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
@@ -12,27 +12,27 @@ import com.tencent.supersonic.common.pojo.enums.AggregateTypeEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.SensitiveLevelEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||
import com.tencent.supersonic.headless.common.model.enums.DataTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.enums.DimensionTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.enums.IdentifyTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.enums.SemanticTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.DimensionTimeTypeParams;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Identify;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Measure;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.MetricTypeParams;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.ModelDetail;
|
||||
import com.tencent.supersonic.headless.common.model.request.DatabaseReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.DimensionReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.DomainReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelReq;
|
||||
import com.tencent.supersonic.headless.model.domain.DatabaseService;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.DomainService;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelRelaService;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import com.tencent.supersonic.headless.common.server.enums.DataType;
|
||||
import com.tencent.supersonic.headless.common.server.enums.DimensionType;
|
||||
import com.tencent.supersonic.headless.common.server.enums.IdentifyType;
|
||||
import com.tencent.supersonic.headless.common.server.enums.SemanticType;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.DimensionTimeTypeParams;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.Identify;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.Measure;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.MetricTypeParams;
|
||||
import com.tencent.supersonic.headless.common.server.pojo.ModelDetail;
|
||||
import com.tencent.supersonic.headless.common.server.request.DatabaseReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.DimensionReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.DomainReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.server.request.ModelReq;
|
||||
import com.tencent.supersonic.headless.server.service.DatabaseService;
|
||||
import com.tencent.supersonic.headless.server.service.DimensionService;
|
||||
import com.tencent.supersonic.headless.server.service.DomainService;
|
||||
import com.tencent.supersonic.headless.server.service.MetricService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelRelaService;
|
||||
import com.tencent.supersonic.headless.server.service.ModelService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -93,11 +93,11 @@ public class ModelDemoDataLoader {
|
||||
databaseReq.setName("数据实例");
|
||||
databaseReq.setDescription("样例数据库实例");
|
||||
if (StringUtils.isNotBlank(url)
|
||||
&& url.toLowerCase().contains(DataTypeEnum.MYSQL.getFeature().toLowerCase())) {
|
||||
databaseReq.setType(DataTypeEnum.MYSQL.getFeature());
|
||||
&& url.toLowerCase().contains(DataType.MYSQL.getFeature().toLowerCase())) {
|
||||
databaseReq.setType(DataType.MYSQL.getFeature());
|
||||
databaseReq.setVersion("5.7");
|
||||
} else {
|
||||
databaseReq.setType(DataTypeEnum.H2.getFeature());
|
||||
databaseReq.setType(DataType.H2.getFeature());
|
||||
}
|
||||
databaseReq.setUrl(url);
|
||||
databaseReq.setUsername(dataSourceProperties.getUsername());
|
||||
@@ -131,12 +131,12 @@ public class ModelDemoDataLoader {
|
||||
modelReq.setAdminOrgs(Collections.emptyList());
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
identifiers.add(new Identify("用户", IdentifyTypeEnum.primary.name(), "user_name"));
|
||||
identifiers.add(new Identify("用户", IdentifyType.primary.name(), "user_name"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
dimensions.add(new Dim("部门", "department",
|
||||
DimensionTypeEnum.categorical.name(), 1));
|
||||
DimensionType.categorical.name(), 1));
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
modelDetail.setMeasures(Collections.emptyList());
|
||||
@@ -159,14 +159,14 @@ public class ModelDemoDataLoader {
|
||||
modelReq.setAdminOrgs(Collections.emptyList());
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
identifiers.add(new Identify("用户名", IdentifyTypeEnum.primary.name(), "s2_pv_uv_statis_user_name"));
|
||||
identifiers.add(new Identify("用户名", IdentifyType.primary.name(), "s2_pv_uv_statis_user_name"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionTypeEnum.time.name(), 0);
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionType.time.name(), 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dim dimension2 = new Dim("", "page", DimensionTypeEnum.categorical.name(), 0);
|
||||
Dim dimension2 = new Dim("", "page", DimensionType.categorical.name(), 0);
|
||||
dimension2.setExpr("page");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
@@ -199,14 +199,14 @@ public class ModelDemoDataLoader {
|
||||
modelReq.setAdminOrgs(Collections.emptyList());
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
identifiers.add(new Identify("用户名称", IdentifyTypeEnum.primary.name(), "stay_hours_user_name"));
|
||||
identifiers.add(new Identify("用户名称", IdentifyType.primary.name(), "stay_hours_user_name"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionTypeEnum.time.name(), 0);
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionType.time.name(), 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dim dimension2 = new Dim("页面", "page", DimensionTypeEnum.categorical.name(), 1);
|
||||
Dim dimension2 = new Dim("页面", "page", DimensionType.categorical.name(), 1);
|
||||
dimension2.setExpr("page");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
@@ -274,21 +274,21 @@ public class ModelDemoDataLoader {
|
||||
modelReq.setAdminOrgs(Collections.emptyList());
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
Identify identify = new Identify("歌手名", IdentifyTypeEnum.primary.name(), "singer_name");
|
||||
Identify identify = new Identify("歌手名", IdentifyType.primary.name(), "singer_name");
|
||||
identify.setEntityNames(Lists.newArrayList("歌手", "艺人"));
|
||||
identifiers.add(identify);
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionTypeEnum.time.name(), 0);
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionType.time.name(), 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
dimensions.add(new Dim("活跃区域", "act_area",
|
||||
DimensionTypeEnum.categorical.name(), 1, 1));
|
||||
DimensionType.categorical.name(), 1, 1));
|
||||
dimensions.add(new Dim("代表作", "song_name",
|
||||
DimensionTypeEnum.categorical.name(), 1));
|
||||
DimensionType.categorical.name(), 1));
|
||||
dimensions.add(new Dim("风格", "genre",
|
||||
DimensionTypeEnum.categorical.name(), 1, 1));
|
||||
DimensionType.categorical.name(), 1, 1));
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
Measure measure1 = new Measure("播放量", "js_play_cnt", "sum", 1);
|
||||
@@ -305,13 +305,13 @@ public class ModelDemoDataLoader {
|
||||
public void updateDimension() throws Exception {
|
||||
DimensionReq dimensionReq = new DimensionReq();
|
||||
dimensionReq.setModelId(1L);
|
||||
dimensionReq.setType(DimensionTypeEnum.categorical.name());
|
||||
dimensionReq.setType(DimensionType.categorical.name());
|
||||
dimensionReq.setId(4L);
|
||||
dimensionReq.setName("页面");
|
||||
dimensionReq.setBizName("page");
|
||||
dimensionReq.setModelId(3L);
|
||||
dimensionReq.setAlias("page");
|
||||
dimensionReq.setSemanticType(SemanticTypeEnum.CATEGORY.name());
|
||||
dimensionReq.setSemanticType(SemanticType.CATEGORY.name());
|
||||
dimensionReq.setSensitiveLevel(2);
|
||||
dimensionReq.setDescription("页面");
|
||||
dimensionReq.setExpr("page");
|
||||
|
||||
@@ -3,15 +3,16 @@ package com.tencent.supersonic.integration.model;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.StandaloneLauncher;
|
||||
import com.tencent.supersonic.common.pojo.enums.SensitiveLevelEnum;
|
||||
import com.tencent.supersonic.headless.common.model.enums.MetricTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.MetricFilter;
|
||||
import com.tencent.supersonic.headless.common.server.enums.MetricType;
|
||||
import com.tencent.supersonic.headless.common.server.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.server.pojo.MetricFilter;
|
||||
import com.tencent.supersonic.headless.server.service.MetricService;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@SpringBootTest(classes = StandaloneLauncher.class)
|
||||
@@ -24,7 +25,7 @@ public class MetricServiceImplTest {
|
||||
@Test
|
||||
void getMetrics() {
|
||||
MetricFilter metricFilter = new MetricFilter();
|
||||
metricFilter.setType(MetricTypeEnum.ATOMIC.name());
|
||||
metricFilter.setType(MetricType.ATOMIC.name());
|
||||
metricFilter.setModelIds(Lists.newArrayList(1L));
|
||||
metricFilter.setSensitiveLevel(SensitiveLevelEnum.LOW.ordinal());
|
||||
List<MetricResp> metricResps = metricService.getMetrics(metricFilter);
|
||||
|
||||
Reference in New Issue
Block a user