[improvement](knowledge) add dataSource filter sql for fillKnowledgeDimValue (#402)

Co-authored-by: kanedai <kanedai@tencent.com>
This commit is contained in:
daikon
2023-11-18 16:12:31 +08:00
committed by GitHub
parent f198ce1ef8
commit dd115f9d37
3 changed files with 31 additions and 13 deletions

View File

@@ -19,6 +19,7 @@ import com.tencent.supersonic.knowledge.dictionary.DictUpdateMode;
import com.tencent.supersonic.knowledge.dictionary.DimValue2DictCommand;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -29,6 +30,7 @@ import java.util.stream.Collectors;
import com.tencent.supersonic.semantic.api.model.request.PageDimensionReq;
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -139,20 +141,14 @@ public class DictMetaHelper {
ChatDefaultRichConfigResp chatDefaultConfig =
chaConfigRichDesc.getChatAggRichConfig().getChatDefaultConfig();
KnowledgeAdvancedConfig globalKnowledgeConfigAgg = chaConfigRichDesc.getChatAggRichConfig()
.getGlobalKnowledgeConfig();
List<KnowledgeInfoReq> knowledgeAggInfo =
chaConfigRichDesc.getChatAggRichConfig().getKnowledgeInfos();
KnowledgeAdvancedConfig globalKnowledgeConfigDetail = chaConfigRichDesc.getChatDetailRichConfig()
.getGlobalKnowledgeConfig();
List<KnowledgeInfoReq> knowledgeDetailInfo =
chaConfigRichDesc.getChatDetailRichConfig().getKnowledgeInfos();
fillKnowledgeDimValue(knowledgeDetailInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair,
modelId, globalKnowledgeConfigDetail);
fillKnowledgeDimValue(knowledgeAggInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair,
modelId, globalKnowledgeConfigAgg);
fillKnowledgeDimValue(knowledgeDetailInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair, modelId);
fillKnowledgeDimValue(knowledgeAggInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair, modelId);
}
@@ -161,8 +157,9 @@ public class DictMetaHelper {
private void fillKnowledgeDimValue(List<KnowledgeInfoReq> knowledgeInfos,
ChatDefaultRichConfigResp chatDefaultConfig,
List<DimValueDO> dimValueDOList,
Map<Long, SchemaElement> dimIdAndDescPair, Long modelId,
KnowledgeAdvancedConfig globalKnowledgeConfigDetail) {
Map<Long, SchemaElement> dimIdAndDescPair, Long modelId) {
Map<Long, DimensionResp> dimIdAndRespPair = queryDimensionRespByModelId(
new ArrayList<>(Arrays.asList(modelId)));
if (!CollectionUtils.isEmpty(knowledgeInfos)) {
List<Dim4Dict> dimensions = new ArrayList<>();
List<DefaultMetric> defaultMetricDescList = new ArrayList<>();
@@ -202,9 +199,14 @@ public class DictMetaHelper {
= knowledgeInfo.getKnowledgeAdvancedConfig();
BeanUtils.copyProperties(knowledgeAdvancedConfig, dim4Dict);
if (Objects.nonNull(globalKnowledgeConfigDetail)
&& !CollectionUtils.isEmpty(globalKnowledgeConfigDetail.getRuleList())) {
dim4Dict.getRuleList().addAll(globalKnowledgeConfigDetail.getRuleList());
if (Objects.nonNull(dimIdAndRespPair)
&& dimIdAndRespPair.containsKey(dim4Dict.getDimId())) {
String datasourceFilterSql = dimIdAndRespPair.get(
dim4Dict.getDimId()).getDatasourceFilterSql();
if (StringUtils.isNotEmpty(datasourceFilterSql)) {
dim4Dict.getRuleList().add(datasourceFilterSql);
}
}
}
dimensions.add(dim4Dict);
@@ -221,6 +223,18 @@ public class DictMetaHelper {
}
}
private Map<Long, DimensionResp> queryDimensionRespByModelId(List<Long> modelIds) {
Map<Long, DimensionResp> dimIdAndRespPair = new HashMap<>();
PageDimensionReq pageDimensionCmd = new PageDimensionReq();
pageDimensionCmd.setModelIds(modelIds);
PageInfo<DimensionResp> dimensionPage = semanticInterpreter.getDimensionPage(pageDimensionCmd);
if (Objects.nonNull(dimensionPage) && !CollectionUtils.isEmpty(dimensionPage.getList())) {
List<DimensionResp> dimList = dimensionPage.getList();
dimIdAndRespPair = dimList.stream().collect(Collectors.toMap(DimensionResp::getId, v -> v, (v1, v2) -> v2));
}
return dimIdAndRespPair;
}
private String queryDataSourceByDimId(Long id) {
PageDimensionReq pageDimensionCmd = new PageDimensionReq();
pageDimensionCmd.setId(id.toString());

View File

@@ -28,6 +28,8 @@ public class DimensionResp extends SchemaItem {
private String datasourceName;
private String datasourceBizName;
private String datasourceFilterSql;
//DATE ID CATEGORY
private String semanticType;

View File

@@ -71,6 +71,8 @@ public class DimensionConverter {
if (dimensionDO.getDefaultValues() != null) {
dimensionResp.setDefaultValues(JSONObject.parseObject(dimensionDO.getDefaultValues(), List.class));
}
dimensionResp.setDatasourceFilterSql(
datasourceRespMap.getOrDefault(dimensionResp.getDatasourceId(), new DatasourceResp()).getFilterSql());
if (Strings.isNotEmpty(dimensionDO.getDimValueMaps())) {
dimensionResp.setDimValueMaps(JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class));
}