mirror of
https://github.com/tencentmusic/supersonic.git
synced 2026-04-21 22:34:28 +08:00
Compare commits
6 Commits
30d4ffeb6b
...
e534e57bb0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e534e57bb0 | ||
|
|
79a44b27ee | ||
|
|
76cc5ee111 | ||
|
|
94a3da57f3 | ||
|
|
ac31870890 | ||
|
|
bd9bc6b40f |
@@ -1,5 +1,6 @@
|
||||
package com.tencent.supersonic.headless.core.pojo;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.User;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.QueryState;
|
||||
import com.tencent.supersonic.headless.api.pojo.response.SemanticSchemaResp;
|
||||
import lombok.Data;
|
||||
@@ -24,6 +25,7 @@ public class QueryStatement {
|
||||
private SemanticSchemaResp semanticSchema;
|
||||
private Integer limit = 1000;
|
||||
private Boolean isTranslated = false;
|
||||
private User user;
|
||||
|
||||
public boolean isOk() {
|
||||
return StringUtils.isBlank(errMsg) && StringUtils.isNotBlank(sql);
|
||||
|
||||
@@ -296,6 +296,9 @@ public class S2SemanticLayerService implements SemanticLayerService {
|
||||
queryStatement.setSql(semanticQueryReq.getSqlInfo().getQuerySQL());
|
||||
queryStatement.setIsTranslated(true);
|
||||
}
|
||||
if (queryStatement != null) {
|
||||
queryStatement.setUser(user);
|
||||
}
|
||||
return queryStatement;
|
||||
}
|
||||
|
||||
|
||||
@@ -83,10 +83,13 @@ public class DimensionRepositoryImpl implements DimensionRepository {
|
||||
}
|
||||
if (StringUtils.isNotBlank(dimensionFilter.getKey())) {
|
||||
String key = dimensionFilter.getKey();
|
||||
queryWrapper.lambda().like(DimensionDO::getName, key).or()
|
||||
.like(DimensionDO::getBizName, key).or().like(DimensionDO::getDescription, key)
|
||||
.or().like(DimensionDO::getAlias, key).or()
|
||||
.like(DimensionDO::getCreatedBy, key);
|
||||
queryWrapper.lambda()
|
||||
.and(wrapper -> wrapper
|
||||
.like(DimensionDO::getName, key).or()
|
||||
.like(DimensionDO::getBizName, key).or().like(DimensionDO::getDescription, key)
|
||||
.or().like(DimensionDO::getAlias, key).or()
|
||||
.like(DimensionDO::getCreatedBy, key)
|
||||
);
|
||||
}
|
||||
|
||||
return dimensionDOMapper.selectList(queryWrapper);
|
||||
|
||||
@@ -109,9 +109,14 @@ public class MetricRepositoryImpl implements MetricRepository {
|
||||
}
|
||||
if (StringUtils.isNotBlank(metricFilter.getKey())) {
|
||||
String key = metricFilter.getKey();
|
||||
queryWrapper.lambda().like(MetricDO::getName, key).or().like(MetricDO::getBizName, key)
|
||||
.or().like(MetricDO::getDescription, key).or().like(MetricDO::getAlias, key)
|
||||
.or().like(MetricDO::getCreatedBy, key);
|
||||
queryWrapper.lambda()
|
||||
.and(wrapper -> wrapper
|
||||
.like(MetricDO::getName, key)
|
||||
.or().like(MetricDO::getBizName, key)
|
||||
.or().like(MetricDO::getDescription, key)
|
||||
.or().like(MetricDO::getAlias, key)
|
||||
.or().like(MetricDO::getCreatedBy, key)
|
||||
);
|
||||
}
|
||||
|
||||
return metricDOMapper.selectList(queryWrapper);
|
||||
|
||||
@@ -178,8 +178,9 @@ public class ChatWorkflowEngine {
|
||||
// 如果物理SQL被修正了,更新querySQL为修正后的版本
|
||||
SemanticParseInfo parseInfo = semanticQuery.getParseInfo();
|
||||
if (StringUtils.isNotBlank(parseInfo.getSqlInfo().getCorrectedQuerySQL())) {
|
||||
parseInfo.getSqlInfo().setQuerySQL(parseInfo.getSqlInfo().getCorrectedQuerySQL());
|
||||
log.info("Physical SQL corrected and updated querySQL: {}",
|
||||
parseInfo.getSqlInfo()
|
||||
.setQuerySQL(parseInfo.getSqlInfo().getCorrectedQuerySQL());
|
||||
log.info("Physical SQL corrected and updated querySQL: {}",
|
||||
parseInfo.getSqlInfo().getQuerySQL());
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -138,7 +138,8 @@ public class DictUtils {
|
||||
semanticQueryReq.setNeedAuth(false);
|
||||
String bizName = dictItemResp.getBizName();
|
||||
try {
|
||||
SemanticQueryResp semanticQueryResp = queryService.queryByReq(semanticQueryReq, null);
|
||||
SemanticQueryResp semanticQueryResp =
|
||||
queryService.queryByReq(semanticQueryReq, User.getDefaultUser());
|
||||
if (Objects.isNull(semanticQueryResp)
|
||||
|| CollectionUtils.isEmpty(semanticQueryResp.getResultList())) {
|
||||
return lines;
|
||||
@@ -274,7 +275,8 @@ public class DictUtils {
|
||||
private QuerySqlReq constructQuerySqlReq(DictItemResp dictItemResp) {
|
||||
|
||||
ModelResp model = modelService.getModel(dictItemResp.getModelId());
|
||||
String tableStr = model.getModelDetail().getTableQuery() != null ? model.getModelDetail().getTableQuery()
|
||||
String tableStr = StringUtils.isNotBlank(model.getModelDetail().getTableQuery())
|
||||
? model.getModelDetail().getTableQuery()
|
||||
: "(" + model.getModelDetail().getSqlQuery() + ")";
|
||||
String sqlPattern =
|
||||
"select %s,count(1) from %s %s group by %s order by count(1) desc limit %d";
|
||||
@@ -289,8 +291,7 @@ public class DictUtils {
|
||||
limit = Integer.MAX_VALUE;
|
||||
}
|
||||
|
||||
String sql =
|
||||
String.format(sqlPattern, dimBizName, tableStr, where, dimBizName, limit);
|
||||
String sql = String.format(sqlPattern, dimBizName, tableStr, where, dimBizName, limit);
|
||||
Set<Long> modelIds = new HashSet<>();
|
||||
modelIds.add(dictItemResp.getModelId());
|
||||
QuerySqlReq querySqlReq = new QuerySqlReq();
|
||||
|
||||
@@ -109,7 +109,8 @@ public class QueryUtils {
|
||||
column.setModelId(metric.getModelId());
|
||||
}
|
||||
// if column nameEn contains metric alias, use metric dataFormatType
|
||||
if (column.getDataFormatType() == null && StringUtils.isNotEmpty(metric.getAlias())) {
|
||||
if (column.getDataFormatType() == null
|
||||
&& StringUtils.isNotEmpty(metric.getAlias())) {
|
||||
for (String alias : metric.getAlias().split(",")) {
|
||||
if (nameEn.contains(alias)) {
|
||||
column.setDataFormatType(metric.getDataFormatType());
|
||||
|
||||
@@ -43,8 +43,8 @@ const Table: React.FC<Props> = ({ data, size, loading, question, onApplyAuth })
|
||||
{`${
|
||||
value
|
||||
? formatByDataFormatType(value, dataFormatType, dataFormat)
|
||||
: 0
|
||||
}%`}
|
||||
: '0%'
|
||||
}`}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user