mirror of
https://github.com/tencentmusic/supersonic.git
synced 2026-04-20 13:44:19 +08:00
Merge branch 'tencentmusic:master' into master_fixdatasetchoose
This commit is contained in:
@@ -179,13 +179,15 @@ public class NatureHelper {
|
||||
}
|
||||
|
||||
public static Long parseIdFromNature(String nature, int index) {
|
||||
try {
|
||||
String[] split = nature.split(DictWordType.NATURE_SPILT);
|
||||
if (split.length > index) {
|
||||
return Long.valueOf(split[index]);
|
||||
if(nature.startsWith("_")){ // 框架的字典都是以_开头的
|
||||
try {
|
||||
String[] split = nature.split(DictWordType.NATURE_SPILT);
|
||||
if (split.length > index) {
|
||||
return Long.valueOf(split[index]);
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
log.error("Error parsing long from nature: {}", nature, e);
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
log.error("Error parsing long from nature: {}", nature, e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -167,7 +167,9 @@ public class EmbeddingMatchStrategy extends BatchMatchStrategy<EmbeddingResult>
|
||||
variable.put("retrievedInfo", JSONObject.toJSONString(results));
|
||||
|
||||
Prompt prompt = PromptTemplate.from(LLM_FILTER_PROMPT).apply(variable);
|
||||
ChatLanguageModel chatLanguageModel = ModelProvider.getChatModel(chatQueryContext.getRequest().getChatAppConfig().get("REWRITE_MULTI_TURN").getChatModelConfig());
|
||||
ChatLanguageModel chatLanguageModel =
|
||||
ModelProvider.getChatModel(chatQueryContext.getRequest().getChatAppConfig()
|
||||
.get("REWRITE_MULTI_TURN").getChatModelConfig());
|
||||
String response = chatLanguageModel.generate(prompt.toUserMessage().singleText());
|
||||
|
||||
if (StringUtils.isBlank(response)) {
|
||||
|
||||
@@ -22,6 +22,7 @@ public class DbAdaptorFactory {
|
||||
dbAdaptorMap.put(EngineType.KYUUBI.getName(), new KyuubiAdaptor());
|
||||
dbAdaptorMap.put(EngineType.PRESTO.getName(), new PrestoAdaptor());
|
||||
dbAdaptorMap.put(EngineType.TRINO.getName(), new TrinoAdaptor());
|
||||
dbAdaptorMap.put(EngineType.ORACLE.getName(), new OracleAdaptor());
|
||||
}
|
||||
|
||||
public static DbAdaptor getEngineAdaptor(String engineType) {
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.tencent.supersonic.headless.core.adaptor.db;
|
||||
|
||||
public class OracleAdaptor extends DefaultDbAdaptor {
|
||||
|
||||
}
|
||||
@@ -48,16 +48,23 @@ public class SqlQueryParser implements QueryParser {
|
||||
List<String> queryFields = SqlSelectHelper.getAllSelectFields(sqlQuery.getSql());
|
||||
Set<String> queryAliases = SqlSelectHelper.getAliasFields(sqlQuery.getSql());
|
||||
Set<String> ontologyMetricsDimensions = Collections.synchronizedSet(new HashSet<String>());
|
||||
Set<String> ontologyBizNameMetricsDimensions = Collections.synchronizedSet(new HashSet<String>());
|
||||
Set<String> ontologyBizNameMetricsDimensions = Collections.synchronizedSet(new HashSet<>());
|
||||
queryFields.removeAll(queryAliases);
|
||||
Ontology ontology = queryStatement.getOntology();
|
||||
OntologyQuery ontologyQuery = buildOntologyQuery(ontology, queryFields);
|
||||
Set<String> queryFieldsSet = new HashSet<>(queryFields);
|
||||
ontologyQuery.getMetrics().forEach(m -> {ontologyMetricsDimensions.add(m.getName()); ontologyBizNameMetricsDimensions.add(m.getBizName());});
|
||||
ontologyQuery.getDimensions().forEach(d -> {ontologyMetricsDimensions.add(d.getName()); ontologyBizNameMetricsDimensions.add(d.getBizName());});
|
||||
ontologyQuery.getMetrics().forEach(m -> {
|
||||
ontologyMetricsDimensions.add(m.getName());
|
||||
ontologyBizNameMetricsDimensions.add(m.getBizName());
|
||||
});
|
||||
ontologyQuery.getDimensions().forEach(d -> {
|
||||
ontologyMetricsDimensions.add(d.getName());
|
||||
ontologyBizNameMetricsDimensions.add(d.getBizName());
|
||||
});
|
||||
// check if there are fields not matched with any metric or dimension
|
||||
|
||||
if (!(queryFieldsSet.containsAll(ontologyMetricsDimensions)||queryFieldsSet.containsAll(ontologyBizNameMetricsDimensions))) {
|
||||
if (!(queryFieldsSet.containsAll(ontologyMetricsDimensions)
|
||||
|| queryFieldsSet.containsAll(ontologyBizNameMetricsDimensions))) {
|
||||
List<String> semanticFields = Lists.newArrayList();
|
||||
ontologyQuery.getMetrics().forEach(m -> semanticFields.add(m.getName()));
|
||||
ontologyQuery.getDimensions().forEach(d -> semanticFields.add(d.getName()));
|
||||
|
||||
@@ -36,8 +36,10 @@ public class DataModelNode extends SemanticNode {
|
||||
&& !dataModel.getModelDetail().getSqlQuery().isEmpty()) {
|
||||
sqlTable = dataModel.getModelDetail().getSqlQuery();
|
||||
// if model has sqlVariables, parse sqlVariables
|
||||
if (Objects.nonNull(dataModel.getModelDetail().getSqlVariables()) || (CollectionUtils.isEmpty(dataModel.getModelDetail().getSqlVariables()))) {
|
||||
sqlTable = SqlVariableParseUtils.parse(sqlTable, dataModel.getModelDetail().getSqlVariables(), Lists.newArrayList());
|
||||
if (Objects.nonNull(dataModel.getModelDetail().getSqlVariables())
|
||||
|| (CollectionUtils.isEmpty(dataModel.getModelDetail().getSqlVariables()))) {
|
||||
sqlTable = SqlVariableParseUtils.parse(sqlTable,
|
||||
dataModel.getModelDetail().getSqlVariables(), Lists.newArrayList());
|
||||
}
|
||||
} else if (dataModel.getModelDetail().getTableQuery() != null
|
||||
&& !dataModel.getModelDetail().getTableQuery().isEmpty()) {
|
||||
|
||||
@@ -711,6 +711,15 @@ public class MetricServiceImpl extends ServiceImpl<MetricDOMapper, MetricDO>
|
||||
}
|
||||
if (!modelCluster.isContainsPartitionDimensions()) {
|
||||
queryMetricReq.setDateInfo(null);
|
||||
} else {
|
||||
// set date field
|
||||
DimensionResp partitionDimension = dimensionResps.stream()
|
||||
.filter(entry -> modelCluster.getModelIds().contains(entry.getModelId()))
|
||||
.filter(entry -> entry.getStatus().equals(StatusEnum.ONLINE.getCode()))
|
||||
.filter(entry -> entry.isPartitionTime()).findFirst().orElse(null);
|
||||
if (partitionDimension != null) {
|
||||
queryMetricReq.getDateInfo().setDateField(partitionDimension.getName());
|
||||
}
|
||||
}
|
||||
// 4. set groups
|
||||
List<String> dimensionNames = dimensionResps.stream()
|
||||
|
||||
@@ -136,9 +136,10 @@ public class QueryUtils {
|
||||
return false;
|
||||
}
|
||||
return type.toLowerCase().endsWith("int") || type.toLowerCase().startsWith("int")
|
||||
|| type.equalsIgnoreCase("float") || type.equalsIgnoreCase("double")
|
||||
|| type.toLowerCase().endsWith("float") || type.toLowerCase().startsWith("float")
|
||||
|| type.toLowerCase().endsWith("double") || type.toLowerCase().startsWith("double")
|
||||
|| type.equalsIgnoreCase("real") || type.equalsIgnoreCase("numeric")
|
||||
|| type.toLowerCase().startsWith("decimal") || type.equalsIgnoreCase("decfloat");
|
||||
|| type.toLowerCase().startsWith("decimal");
|
||||
}
|
||||
|
||||
private String getName(String nameEn) {
|
||||
|
||||
Reference in New Issue
Block a user