mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-11 03:58:14 +00:00
(improvement)(headless) Remove redundant user dimensions in demo data (#663)
Co-authored-by: jolunoluo
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
package com.tencent.supersonic.headless.api.pojo;
|
||||
|
||||
import lombok.Builder;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class FieldParam {
|
||||
|
||||
private String fieldName;
|
||||
|
||||
@@ -22,12 +22,21 @@ public class Identify {
|
||||
|
||||
private List<String> entityNames;
|
||||
|
||||
private Integer isCreateDimension = 0;
|
||||
|
||||
public Identify(String name, String type, String bizName) {
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.bizName = bizName;
|
||||
}
|
||||
|
||||
public Identify(String name, String type, String bizName, Integer isCreateDimension) {
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.bizName = bizName;
|
||||
this.isCreateDimension = isCreateDimension;
|
||||
}
|
||||
|
||||
public String getFieldName() {
|
||||
return bizName;
|
||||
}
|
||||
|
||||
@@ -12,10 +12,6 @@ import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.DateModeUtils;
|
||||
import com.tencent.supersonic.common.util.SqlFilterUtils;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserAddHelper;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.sf.jsqlparser.JSQLParserException;
|
||||
@@ -39,6 +35,11 @@ import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
@Data
|
||||
@Slf4j
|
||||
@@ -248,7 +249,7 @@ public class QueryStructReq extends SemanticQueryReq {
|
||||
//6.Set where
|
||||
List<Filter> dimensionFilters = queryStructReq.getDimensionFilters();
|
||||
SqlFilterUtils sqlFilterUtils = ContextUtils.getBean(SqlFilterUtils.class);
|
||||
String whereClause = sqlFilterUtils.getWhereClause(dimensionFilters, false);
|
||||
String whereClause = sqlFilterUtils.getWhereClause(dimensionFilters);
|
||||
|
||||
String sql = select.toString();
|
||||
if (StringUtils.isNotBlank(whereClause)) {
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.tencent.supersonic.headless.api.request.BatchDownloadReq;
|
||||
import com.tencent.supersonic.headless.api.request.DownloadStructReq;
|
||||
import com.tencent.supersonic.headless.api.enums.SemanticType;
|
||||
import com.tencent.supersonic.headless.api.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.api.request.QuerySqlReq;
|
||||
import com.tencent.supersonic.headless.api.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.response.MetricResp;
|
||||
@@ -72,7 +73,8 @@ public class DownloadServiceImpl implements DownloadService {
|
||||
String fileName = String.format("%s_%s.xlsx", "supersonic", DateUtils.format(new Date(), DateUtils.FORMAT));
|
||||
File file = FileUtils.createTmpFile(fileName);
|
||||
try {
|
||||
SemanticQueryResp queryResult = queryService.queryByStructWithAuth(downloadStructReq, user);
|
||||
QuerySqlReq querySqlReq = downloadStructReq.convert(downloadStructReq);
|
||||
SemanticQueryResp queryResult = (SemanticQueryResp) queryService.queryBySql(querySqlReq, user);
|
||||
DataDownload dataDownload = buildDataDownload(queryResult, downloadStructReq);
|
||||
EasyExcel.write(file).sheet("Sheet1").head(dataDownload.getHeaders()).doWrite(dataDownload.getData());
|
||||
} catch (RuntimeException e) {
|
||||
|
||||
@@ -7,7 +7,6 @@ import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||
import com.tencent.supersonic.common.util.BeanMapper;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.headless.api.enums.DimensionType;
|
||||
import com.tencent.supersonic.headless.api.enums.IdentifyType;
|
||||
import com.tencent.supersonic.headless.api.enums.MetricDefineType;
|
||||
import com.tencent.supersonic.headless.api.enums.SemanticType;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
@@ -153,18 +152,38 @@ public class ModelConverter {
|
||||
&& !dim.getType().equalsIgnoreCase(DimensionType.time.name());
|
||||
}
|
||||
|
||||
private static boolean isCreateDimension(Identify identify) {
|
||||
return identify.getIsCreateDimension() == 1
|
||||
&& StringUtils.isNotBlank(identify.getName());
|
||||
}
|
||||
|
||||
private static boolean isCreateMetric(Measure measure) {
|
||||
return measure.getIsCreateMetric() == 1
|
||||
&& StringUtils.isNotBlank(measure.getName());
|
||||
}
|
||||
|
||||
public static List<Dim> getDimToCreateDimension(ModelDetail modelDetail) {
|
||||
if (CollectionUtils.isEmpty(modelDetail.getDimensions())) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
return modelDetail.getDimensions().stream()
|
||||
.filter(ModelConverter::isCreateDimension)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public static List<Identify> getIdentityToCreateDimension(ModelDetail modelDetail) {
|
||||
if (CollectionUtils.isEmpty(modelDetail.getIdentifiers())) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
return modelDetail.getIdentifiers().stream()
|
||||
.filter(ModelConverter::isCreateDimension)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public static List<Measure> getMeasureToCreateMetric(ModelDetail modelDetail) {
|
||||
if (CollectionUtils.isEmpty(modelDetail.getMeasures())) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
return modelDetail.getMeasures().stream()
|
||||
.filter(ModelConverter::isCreateMetric)
|
||||
.collect(Collectors.toList());
|
||||
@@ -179,13 +198,11 @@ public class ModelConverter {
|
||||
dimensionReqs = dims.stream().filter(dim -> StringUtils.isNotBlank(dim.getName()))
|
||||
.map(dim -> convert(dim, modelDO)).collect(Collectors.toList());
|
||||
}
|
||||
List<Identify> identifies = modelDetail.getIdentifiers();
|
||||
List<Identify> identifies = getIdentityToCreateDimension(modelDetail);
|
||||
if (CollectionUtils.isEmpty(identifies)) {
|
||||
return dimensionReqs;
|
||||
}
|
||||
dimensionReqs.addAll(identifies.stream()
|
||||
.filter(i -> i.getType().equalsIgnoreCase(IdentifyType.primary.name()))
|
||||
.filter(i -> StringUtils.isNotBlank(i.getName()))
|
||||
.map(identify -> convert(identify, modelDO)).collect(Collectors.toList()));
|
||||
return dimensionReqs;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user