mirror of
https://github.com/tencentmusic/supersonic.git
synced 2026-04-30 13:04:27 +08:00
Compare commits
4 Commits
cc09fbea3a
...
40054f49e8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40054f49e8 | ||
|
|
320fcf04bd | ||
|
|
75fc83010c | ||
|
|
44baeb9828 |
@@ -88,7 +88,7 @@ public class SqlBuilder {
|
|||||||
GraphPath<String, DefaultEdge> selectedGraphPath = null;
|
GraphPath<String, DefaultEdge> selectedGraphPath = null;
|
||||||
for (String fromModel : queryModels) {
|
for (String fromModel : queryModels) {
|
||||||
for (String toModel : queryModels) {
|
for (String toModel : queryModels) {
|
||||||
if (fromModel != toModel) {
|
if (!fromModel.equals(toModel)) {
|
||||||
GraphPath<String, DefaultEdge> path = dijkstraAlg.getPath(fromModel, toModel);
|
GraphPath<String, DefaultEdge> path = dijkstraAlg.getPath(fromModel, toModel);
|
||||||
if (isGraphPathContainsAll(path, queryModels)) {
|
if (isGraphPathContainsAll(path, queryModels)) {
|
||||||
selectedGraphPath = path;
|
selectedGraphPath = path;
|
||||||
@@ -100,13 +100,13 @@ public class SqlBuilder {
|
|||||||
if (selectedGraphPath == null) {
|
if (selectedGraphPath == null) {
|
||||||
return dataModels;
|
return dataModels;
|
||||||
}
|
}
|
||||||
Set<String> modelNames = Sets.newHashSet();
|
Set<String> modelNames = Sets.newLinkedHashSet();
|
||||||
for (DefaultEdge edge : selectedGraphPath.getEdgeList()) {
|
for (DefaultEdge edge : selectedGraphPath.getEdgeList()) {
|
||||||
modelNames.add(selectedGraphPath.getGraph().getEdgeSource(edge));
|
modelNames.add(selectedGraphPath.getGraph().getEdgeSource(edge));
|
||||||
modelNames.add(selectedGraphPath.getGraph().getEdgeTarget(edge));
|
modelNames.add(selectedGraphPath.getGraph().getEdgeTarget(edge));
|
||||||
}
|
}
|
||||||
return modelNames.stream().map(m -> ontology.getModelMap().get(m))
|
return modelNames.stream().map(m -> ontology.getModelMap().get(m))
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toCollection(LinkedHashSet::new));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isGraphPathContainsAll(GraphPath<String, DefaultEdge> graphPath,
|
private boolean isGraphPathContainsAll(GraphPath<String, DefaultEdge> graphPath,
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ public class DimValueAspect {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (DimensionResp dimension : dimensions) {
|
for (DimensionResp dimension : dimensions) {
|
||||||
if (!expression.getFieldName().equals(dimension.getName())
|
if (!expression.getFieldName().equals(dimension.getBizName())
|
||||||
|| CollectionUtils.isEmpty(dimension.getDimValueMaps())) {
|
|| CollectionUtils.isEmpty(dimension.getDimValueMaps())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@@ -124,6 +124,7 @@ public class DimValueAspect {
|
|||||||
sql = SqlReplaceHelper.replaceValue(sql, filedNameToValueMap);
|
sql = SqlReplaceHelper.replaceValue(sql, filedNameToValueMap);
|
||||||
log.debug("correctorSql after replacing:{}", sql);
|
log.debug("correctorSql after replacing:{}", sql);
|
||||||
querySqlReq.setSql(sql);
|
querySqlReq.setSql(sql);
|
||||||
|
querySqlReq.getSqlInfo().setQuerySQL(sql);
|
||||||
Map<String, Map<String, String>> techNameToBizName = getTechNameToBizName(dimensions);
|
Map<String, Map<String, String>> techNameToBizName = getTechNameToBizName(dimensions);
|
||||||
|
|
||||||
SemanticQueryResp queryResultWithColumns = (SemanticQueryResp) joinPoint.proceed();
|
SemanticQueryResp queryResultWithColumns = (SemanticQueryResp) joinPoint.proceed();
|
||||||
|
|||||||
@@ -19,9 +19,10 @@ public class DataSetSchemaBuilder {
|
|||||||
public static DataSetSchema build(DataSetSchemaResp resp) {
|
public static DataSetSchema build(DataSetSchemaResp resp) {
|
||||||
DataSetSchema dataSetSchema = new DataSetSchema();
|
DataSetSchema dataSetSchema = new DataSetSchema();
|
||||||
dataSetSchema.setQueryConfig(resp.getQueryConfig());
|
dataSetSchema.setQueryConfig(resp.getQueryConfig());
|
||||||
SchemaElement dataSet = SchemaElement.builder().dataSetId(resp.getId())
|
SchemaElement dataSet =
|
||||||
.dataSetName(resp.getName()).id(resp.getId()).name(resp.getName())
|
SchemaElement.builder().dataSetId(resp.getId()).dataSetName(resp.getName())
|
||||||
.bizName(resp.getBizName()).type(SchemaElementType.DATASET).build();
|
.id(resp.getId()).name(resp.getName()).description(resp.getDescription())
|
||||||
|
.bizName(resp.getBizName()).type(SchemaElementType.DATASET).build();
|
||||||
dataSetSchema.setDataSet(dataSet);
|
dataSetSchema.setDataSet(dataSet);
|
||||||
dataSetSchema.setDatabaseType(resp.getDatabaseType());
|
dataSetSchema.setDatabaseType(resp.getDatabaseType());
|
||||||
dataSetSchema.setDatabaseVersion(resp.getDatabaseVersion());
|
dataSetSchema.setDatabaseVersion(resp.getDatabaseVersion());
|
||||||
|
|||||||
@@ -274,6 +274,8 @@ public class DictUtils {
|
|||||||
private QuerySqlReq constructQuerySqlReq(DictItemResp dictItemResp) {
|
private QuerySqlReq constructQuerySqlReq(DictItemResp dictItemResp) {
|
||||||
|
|
||||||
ModelResp model = modelService.getModel(dictItemResp.getModelId());
|
ModelResp model = modelService.getModel(dictItemResp.getModelId());
|
||||||
|
String tableStr = model.getModelDetail().getTableQuery() != null ? model.getModelDetail().getTableQuery()
|
||||||
|
: "(" + model.getModelDetail().getSqlQuery() + ")";
|
||||||
String sqlPattern =
|
String sqlPattern =
|
||||||
"select %s,count(1) from %s %s group by %s order by count(1) desc limit %d";
|
"select %s,count(1) from %s %s group by %s order by count(1) desc limit %d";
|
||||||
String dimBizName = dictItemResp.getBizName();
|
String dimBizName = dictItemResp.getBizName();
|
||||||
@@ -288,7 +290,7 @@ public class DictUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String sql =
|
String sql =
|
||||||
String.format(sqlPattern, dimBizName, model.getBizName(), where, dimBizName, limit);
|
String.format(sqlPattern, dimBizName, tableStr, where, dimBizName, limit);
|
||||||
Set<Long> modelIds = new HashSet<>();
|
Set<Long> modelIds = new HashSet<>();
|
||||||
modelIds.add(dictItemResp.getModelId());
|
modelIds.add(dictItemResp.getModelId());
|
||||||
QuerySqlReq querySqlReq = new QuerySqlReq();
|
QuerySqlReq querySqlReq = new QuerySqlReq();
|
||||||
|
|||||||
Reference in New Issue
Block a user