1 Commits

Author SHA1 Message Date
mislayming
6a2b54002a Merge aaf2d46a56 into c03be2f5d8 2025-02-20 11:11:24 +08:00
14 changed files with 41 additions and 70 deletions

View File

@@ -303,8 +303,8 @@ public class S2SemanticLayerService implements SemanticLayerService {
QueryStatement queryStatement = new QueryStatement();
queryStatement.setEnableOptimize(queryUtils.enableOptimize());
queryStatement.setLimit(Integer.parseInt(
translatorConfig.getParameterValue(TranslatorConfig.TRANSLATOR_RESULT_LIMIT)));
queryStatement.setLimit(Integer.parseInt(translatorConfig.getParameterValue(
TranslatorConfig.TRANSLATOR_RESULT_LIMIT)));
queryStatement.setDataSetId(queryReq.getDataSetId());
queryStatement.setDataSetName(queryReq.getDataSetName());
queryStatement.setSemanticSchema(semanticSchemaResp);

View File

@@ -145,7 +145,8 @@ public class ModelServiceImpl implements ModelService {
// Comment out below checks for now, they seem unnecessary and
// lead to unexpected exception in updating model
/*
* checkParams(modelReq); checkRelations(modelReq);
checkParams(modelReq);
checkRelations(modelReq);
*/
ModelDO modelDO = modelRepository.getModelById(modelReq.getId());
ModelConverter.convert(modelDO, modelReq, user);

View File

@@ -110,8 +110,7 @@ public class ModelConverter {
dimensionReq.setExpr(dim.getExpr());
dimensionReq.setType(dim.getType().name());
dimensionReq
.setDescription(Objects.isNull(dim.getDescription()) ? dimensionReq.getDescription()
: dim.getDescription());
.setDescription(Objects.isNull(dim.getDescription()) ? "" : dim.getDescription());
dimensionReq.setTypeParams(dim.getTypeParams());
return dimensionReq;
}

View File

@@ -100,28 +100,7 @@ public class QueryUtils {
column.setDataFormatType(metricRespMap.get(nameEn).getDataFormatType());
column.setDataFormat(metricRespMap.get(nameEn).getDataFormat());
column.setModelId(metricRespMap.get(nameEn).getModelId());
} else {
// if column nameEn contains metric name, use metric dataFormatType
metricRespMap.values().forEach(metric -> {
if (nameEn.contains(metric.getName()) || nameEn.contains(metric.getBizName())) {
column.setDataFormatType(metric.getDataFormatType());
column.setDataFormat(metric.getDataFormat());
column.setModelId(metric.getModelId());
}
// if column nameEn contains metric alias, use metric dataFormatType
if (column.getDataFormatType() == null && metric.getAlias() != null) {
for (String alias : metric.getAlias().split(",")) {
if (nameEn.contains(alias)) {
column.setDataFormatType(metric.getDataFormatType());
column.setDataFormat(metric.getDataFormat());
column.setModelId(metric.getModelId());
break;
}
}
}
});
}
if (dimensionRespMap.containsKey(nameEn)) {
column.setModelId(dimensionRespMap.get(nameEn).getModelId());
}
@@ -140,7 +119,7 @@ public class QueryUtils {
|| type.equalsIgnoreCase("float") || type.equalsIgnoreCase("double")
|| type.equalsIgnoreCase("real") || type.equalsIgnoreCase("numeric")
|| type.toLowerCase().startsWith("decimal") || type.toLowerCase().startsWith("uint")
|| type.toLowerCase().startsWith("int") || type.toLowerCase().equalsIgnoreCase("decfloat");
|| type.toLowerCase().startsWith("int");
}
private String getName(String nameEn) {

View File

@@ -18,14 +18,23 @@
</properties>
<dependencies>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>4.0.2</version>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.1.0</version>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.tencent.supersonic</groupId>

View File

@@ -6,7 +6,6 @@ spring:
password: ${S2_DB_PASSWORD:}
sql:
init:
continue-on-error: true
mode: always
username: ${S2_DB_USER:root}
password: ${S2_DB_PASSWORD:}

View File

@@ -6,7 +6,6 @@ spring:
password: postgres
sql:
init:
continue-on-error: true
mode: always
username: postgres
password: postgres

View File

@@ -30,29 +30,9 @@ logging:
springdoc:
swagger-ui:
path: /swagger-ui.html
tags-sorter: alpha
operations-sorter: alpha
enabled: true
api-docs:
path: /v3/api-docs
group-configs:
- group: 'default'
paths-to-match: '/**'
enabled: true
packages-to-scan: com.tencent.supersonic
paths-to-match: /api/chat/**,/api/semantic/**
knife4j:
enable: true
openapi:
title: 'SuperSonic API Documentation'
description: 'SuperSonic API Documentation'
version: v1.0
setting:
language: zh-CN
# basic:
# enable: true
# username: test
# password: 123456#
documents:
default:
title: ChatBI API Documents
description: ChatBI API Documents
paths-to-match: /api/chat/**,/api/semantic/**

View File

@@ -1,3 +1,8 @@
-- clear data if already exists
DELETE FROM s2_user;
DELETE FROM s2_available_date_info;
DELETE FROM s2_canvas;
-- sample user
-- The default value for the password is 123456
INSERT INTO s2_user (`name`, password, salt, display_name, email, is_admin) values ('admin','c3VwZXJzb25pY0BiaWNvbdktJJYWw6A3rEmBUPzbn/6DNeYnD+y3mAwDKEMS3KVT','jGl25bVBBBW96Qi9Te4V3w==','admin','admin@xx.com', 1);

View File

@@ -1,3 +1,8 @@
-- clear data if already exists
DELETE FROM s2_user;
DELETE FROM s2_available_date_info;
DELETE FROM s2_canvas;
-- sample user
-- The default value for the password is 123456
insert into s2_user ("name", password, salt, display_name, email, is_admin) values ('admin','c3VwZXJzb25pY0BiaWNvbdktJJYWw6A3rEmBUPzbn/6DNeYnD+y3mAwDKEMS3KVT','jGl25bVBBBW96Qi9Te4V3w==','admin','admin@xx.com', 1);

View File

@@ -41,7 +41,6 @@ CREATE TABLE IF NOT EXISTS `s2_available_date_info` (
`updated_at` timestamp NULL,
`updated_by` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
`status` tinyint DEFAULT 0,
UNIQUE(`item_id`, `type`),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
@@ -383,7 +382,6 @@ CREATE TABLE IF NOT EXISTS s2_user
salt varchar(256) DEFAULT NULL COMMENT 'md5密码盐',
email varchar(100) null,
is_admin tinyint null,
UNIQUE (`name`),
PRIMARY KEY (`id`)
);

View File

@@ -37,8 +37,7 @@ CREATE TABLE IF NOT EXISTS s2_available_date_info (
created_by varchar(100) NOT NULL,
updated_at timestamp NULL,
updated_by varchar(100) NOT NULL,
status smallint DEFAULT 0,
UNIQUE(item_id, type)
status smallint DEFAULT 0
);
CREATE TABLE IF NOT EXISTS s2_chat (
@@ -492,6 +491,5 @@ CREATE TABLE IF NOT EXISTS s2_user (
password varchar(256) NULL,
salt varchar(256) DEFAULT NULL,
email varchar(100) NULL,
is_admin smallint NULL,
UNIQUE(name)
is_admin smallint NULL
);

View File

@@ -78,6 +78,7 @@
<spotless.version>2.27.1</spotless.version>
<spotless.skip>false</spotless.skip>
<stax2.version>4.2.1</stax2.version>
<io.springfox.version>3.0.0</io.springfox.version>
<aws-java-sdk.version>1.12.780</aws-java-sdk.version>
</properties>

View File

@@ -51,7 +51,6 @@ const getCreateFieldName = (type: EnumDataSourceType) => {
EnumDataSourceType.CATEGORICAL,
EnumDataSourceType.TIME,
EnumDataSourceType.PARTITION_TIME,
EnumDataSourceType.FOREIGN,
].includes(type as EnumDataSourceType)
? 'isCreateDimension'
: 'isCreateMetric';
@@ -102,7 +101,7 @@ const ModelFieldForm: React.FC<Props> = ({
value={selectTypeValue}
allowClear
onChange={(value) => {
let defaultParams:any = {};
let defaultParams = {};
if (value === EnumDataSourceType.MEASURES) {
defaultParams = {
agg: AGG_OPTIONS[0].value,
@@ -128,13 +127,12 @@ const ModelFieldForm: React.FC<Props> = ({
};
} else {
defaultParams = {
type: value,
agg: undefined,
dateFormat: undefined,
timeGranularity: undefined,
};
}
const isCreateName = getCreateFieldName(defaultParams.type);
const isCreateName = getCreateFieldName(value);
const editState = !isUndefined(record[isCreateName])
? !!record[isCreateName]
: true;