support variable

This commit is contained in:
wanglqf
2025-05-15 14:33:09 +08:00
parent 08705c9d3b
commit 8f43a56497
5 changed files with 16 additions and 1 deletions

View File

@@ -2,11 +2,17 @@ package com.tencent.supersonic.headless.api.pojo;
import com.google.common.collect.Lists;
import com.tencent.supersonic.headless.api.pojo.enums.VariableValueType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SqlVariable {
private String name;
private VariableValueType valueType;

View File

@@ -14,6 +14,7 @@ import com.tencent.supersonic.headless.core.pojo.JoinRelation;
import com.tencent.supersonic.headless.core.pojo.Ontology;
import com.tencent.supersonic.headless.core.pojo.OntologyQuery;
import com.tencent.supersonic.headless.core.translator.parser.Constants;
import com.tencent.supersonic.headless.core.utils.SqlVariableParseUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.calcite.sql.SqlDataTypeSpec;
import org.apache.calcite.sql.SqlNode;
@@ -34,6 +35,10 @@ public class DataModelNode extends SemanticNode {
if (dataModel.getModelDetail().getSqlQuery() != null
&& !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());
}
} else if (dataModel.getModelDetail().getTableQuery() != null
&& !dataModel.getModelDetail().getTableQuery().isEmpty()) {
if (dataModel.getModelDetail().getDbType()

View File

@@ -39,6 +39,7 @@ public class ModelYamlManager {
dataModelYamlTpl.setFilterSql(modelDetail.getFilterSql());
dataModelYamlTpl.setFields(modelResp.getModelDetail().getFields());
dataModelYamlTpl.setId(modelResp.getId());
dataModelYamlTpl.setSqlVariables(modelDetail.getSqlVariables());
return dataModelYamlTpl;
}

View File

@@ -102,7 +102,7 @@ public class SemanticSchemaManager {
modelDetail.getMeasures().addAll(getMeasureParams(d.getMeasures()));
modelDetail.getDimensions().addAll(getDimensions(d.getDimensions()));
modelDetail.getFields().addAll(d.getFields());
modelDetail.getSqlVariables().addAll(d.getSqlVariables());
return dataModel;
}

View File

@@ -1,6 +1,7 @@
package com.tencent.supersonic.headless.server.pojo.yaml;
import com.tencent.supersonic.headless.api.pojo.Field;
import com.tencent.supersonic.headless.api.pojo.SqlVariable;
import com.tencent.supersonic.headless.api.pojo.enums.ModelSourceType;
import lombok.Data;
@@ -32,4 +33,6 @@ public class DataModelYamlTpl {
private List<Field> fields;
private ModelSourceType modelSourceTypeEnum;
private List<SqlVariable> sqlVariables;
}