mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-13 04:57:28 +00:00
[improvement](knowledge) add dataSource filter sql for fillKnowledgeDimValue (#402)
Co-authored-by: kanedai <kanedai@tencent.com>
This commit is contained in:
@@ -19,6 +19,7 @@ import com.tencent.supersonic.knowledge.dictionary.DictUpdateMode;
|
|||||||
import com.tencent.supersonic.knowledge.dictionary.DimValue2DictCommand;
|
import com.tencent.supersonic.knowledge.dictionary.DimValue2DictCommand;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
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.request.PageDimensionReq;
|
||||||
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
|
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
@@ -139,20 +141,14 @@ public class DictMetaHelper {
|
|||||||
ChatDefaultRichConfigResp chatDefaultConfig =
|
ChatDefaultRichConfigResp chatDefaultConfig =
|
||||||
chaConfigRichDesc.getChatAggRichConfig().getChatDefaultConfig();
|
chaConfigRichDesc.getChatAggRichConfig().getChatDefaultConfig();
|
||||||
|
|
||||||
KnowledgeAdvancedConfig globalKnowledgeConfigAgg = chaConfigRichDesc.getChatAggRichConfig()
|
|
||||||
.getGlobalKnowledgeConfig();
|
|
||||||
List<KnowledgeInfoReq> knowledgeAggInfo =
|
List<KnowledgeInfoReq> knowledgeAggInfo =
|
||||||
chaConfigRichDesc.getChatAggRichConfig().getKnowledgeInfos();
|
chaConfigRichDesc.getChatAggRichConfig().getKnowledgeInfos();
|
||||||
|
|
||||||
KnowledgeAdvancedConfig globalKnowledgeConfigDetail = chaConfigRichDesc.getChatDetailRichConfig()
|
|
||||||
.getGlobalKnowledgeConfig();
|
|
||||||
List<KnowledgeInfoReq> knowledgeDetailInfo =
|
List<KnowledgeInfoReq> knowledgeDetailInfo =
|
||||||
chaConfigRichDesc.getChatDetailRichConfig().getKnowledgeInfos();
|
chaConfigRichDesc.getChatDetailRichConfig().getKnowledgeInfos();
|
||||||
|
|
||||||
fillKnowledgeDimValue(knowledgeDetailInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair,
|
fillKnowledgeDimValue(knowledgeDetailInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair, modelId);
|
||||||
modelId, globalKnowledgeConfigDetail);
|
fillKnowledgeDimValue(knowledgeAggInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair, modelId);
|
||||||
fillKnowledgeDimValue(knowledgeAggInfo, chatDefaultConfig, dimValueDOList, dimIdAndDescPair,
|
|
||||||
modelId, globalKnowledgeConfigAgg);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -161,8 +157,9 @@ public class DictMetaHelper {
|
|||||||
private void fillKnowledgeDimValue(List<KnowledgeInfoReq> knowledgeInfos,
|
private void fillKnowledgeDimValue(List<KnowledgeInfoReq> knowledgeInfos,
|
||||||
ChatDefaultRichConfigResp chatDefaultConfig,
|
ChatDefaultRichConfigResp chatDefaultConfig,
|
||||||
List<DimValueDO> dimValueDOList,
|
List<DimValueDO> dimValueDOList,
|
||||||
Map<Long, SchemaElement> dimIdAndDescPair, Long modelId,
|
Map<Long, SchemaElement> dimIdAndDescPair, Long modelId) {
|
||||||
KnowledgeAdvancedConfig globalKnowledgeConfigDetail) {
|
Map<Long, DimensionResp> dimIdAndRespPair = queryDimensionRespByModelId(
|
||||||
|
new ArrayList<>(Arrays.asList(modelId)));
|
||||||
if (!CollectionUtils.isEmpty(knowledgeInfos)) {
|
if (!CollectionUtils.isEmpty(knowledgeInfos)) {
|
||||||
List<Dim4Dict> dimensions = new ArrayList<>();
|
List<Dim4Dict> dimensions = new ArrayList<>();
|
||||||
List<DefaultMetric> defaultMetricDescList = new ArrayList<>();
|
List<DefaultMetric> defaultMetricDescList = new ArrayList<>();
|
||||||
@@ -202,9 +199,14 @@ public class DictMetaHelper {
|
|||||||
= knowledgeInfo.getKnowledgeAdvancedConfig();
|
= knowledgeInfo.getKnowledgeAdvancedConfig();
|
||||||
BeanUtils.copyProperties(knowledgeAdvancedConfig, dim4Dict);
|
BeanUtils.copyProperties(knowledgeAdvancedConfig, dim4Dict);
|
||||||
|
|
||||||
if (Objects.nonNull(globalKnowledgeConfigDetail)
|
if (Objects.nonNull(dimIdAndRespPair)
|
||||||
&& !CollectionUtils.isEmpty(globalKnowledgeConfigDetail.getRuleList())) {
|
&& dimIdAndRespPair.containsKey(dim4Dict.getDimId())) {
|
||||||
dim4Dict.getRuleList().addAll(globalKnowledgeConfigDetail.getRuleList());
|
String datasourceFilterSql = dimIdAndRespPair.get(
|
||||||
|
dim4Dict.getDimId()).getDatasourceFilterSql();
|
||||||
|
if (StringUtils.isNotEmpty(datasourceFilterSql)) {
|
||||||
|
dim4Dict.getRuleList().add(datasourceFilterSql);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dimensions.add(dim4Dict);
|
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) {
|
private String queryDataSourceByDimId(Long id) {
|
||||||
PageDimensionReq pageDimensionCmd = new PageDimensionReq();
|
PageDimensionReq pageDimensionCmd = new PageDimensionReq();
|
||||||
pageDimensionCmd.setId(id.toString());
|
pageDimensionCmd.setId(id.toString());
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ public class DimensionResp extends SchemaItem {
|
|||||||
private String datasourceName;
|
private String datasourceName;
|
||||||
|
|
||||||
private String datasourceBizName;
|
private String datasourceBizName;
|
||||||
|
|
||||||
|
private String datasourceFilterSql;
|
||||||
//DATE ID CATEGORY
|
//DATE ID CATEGORY
|
||||||
private String semanticType;
|
private String semanticType;
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,8 @@ public class DimensionConverter {
|
|||||||
if (dimensionDO.getDefaultValues() != null) {
|
if (dimensionDO.getDefaultValues() != null) {
|
||||||
dimensionResp.setDefaultValues(JSONObject.parseObject(dimensionDO.getDefaultValues(), List.class));
|
dimensionResp.setDefaultValues(JSONObject.parseObject(dimensionDO.getDefaultValues(), List.class));
|
||||||
}
|
}
|
||||||
|
dimensionResp.setDatasourceFilterSql(
|
||||||
|
datasourceRespMap.getOrDefault(dimensionResp.getDatasourceId(), new DatasourceResp()).getFilterSql());
|
||||||
if (Strings.isNotEmpty(dimensionDO.getDimValueMaps())) {
|
if (Strings.isNotEmpty(dimensionDO.getDimValueMaps())) {
|
||||||
dimensionResp.setDimValueMaps(JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class));
|
dimensionResp.setDimValueMaps(JsonUtil.toList(dimensionDO.getDimValueMaps(), DimValueMap.class));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user