mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-10 19:51:00 +00:00
[improvement][headless]Change class name Dim to Dimension.
[improvement][headless]Change class name `Dim` to `Dimension`.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
package com.tencent.supersonic.common.pojo.enums;
|
||||
|
||||
public enum TypeEnums {
|
||||
METRIC, DIMENSION, TAG_OBJECT, TAG, DOMAIN, DATASET, MODEL, UNKNOWN
|
||||
METRIC, DIMENSION, TAG, DOMAIN, DATASET, MODEL, UNKNOWN
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import lombok.NoArgsConstructor;
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class Dim {
|
||||
public class Dimension {
|
||||
|
||||
private String name;
|
||||
|
||||
@@ -27,16 +27,14 @@ public class Dim {
|
||||
|
||||
private String description;
|
||||
|
||||
private int isTag;
|
||||
|
||||
public Dim(String name, String bizName, DimensionType type, Integer isCreateDimension) {
|
||||
public Dimension(String name, String bizName, DimensionType type, Integer isCreateDimension) {
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
this.isCreateDimension = isCreateDimension;
|
||||
this.bizName = bizName;
|
||||
}
|
||||
|
||||
public Dim(String name, String bizName, DimensionType type, Integer isCreateDimension,
|
||||
public Dimension(String name, String bizName, DimensionType type, Integer isCreateDimension,
|
||||
String expr, String dateFormat, DimensionTimeTypeParams typeParams) {
|
||||
this.name = name;
|
||||
this.type = type;
|
||||
@@ -47,8 +45,8 @@ public class Dim {
|
||||
this.bizName = bizName;
|
||||
}
|
||||
|
||||
public static Dim getDefault() {
|
||||
return new Dim("数据日期", "imp_date", DimensionType.partition_time, 0, "imp_date",
|
||||
public static Dimension getDefault() {
|
||||
return new Dimension("数据日期", "imp_date", DimensionType.partition_time, 0, "imp_date",
|
||||
Constants.DAY_FORMAT, new DimensionTimeTypeParams("false", "day"));
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ public class ModelDetail {
|
||||
|
||||
private List<Identify> identifiers = Lists.newArrayList();
|
||||
|
||||
private List<Dim> dimensions = Lists.newArrayList();
|
||||
private List<Dimension> dimensions = Lists.newArrayList();
|
||||
|
||||
private List<Measure> measures = Lists.newArrayList();
|
||||
|
||||
@@ -39,7 +39,7 @@ public class ModelDetail {
|
||||
return sqlQuery;
|
||||
}
|
||||
|
||||
public List<Dim> filterTimeDims() {
|
||||
public List<Dimension> filterTimeDims() {
|
||||
if (CollectionUtils.isEmpty(dimensions)) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
|
||||
@@ -32,8 +32,6 @@ public class DimensionReq extends SchemaItem {
|
||||
|
||||
private DataTypeEnums dataType;
|
||||
|
||||
private int isTag;
|
||||
|
||||
private Map<String, Object> ext;
|
||||
|
||||
private DimensionTimeTypeParams typeParams;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.api.pojo.response;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.Field;
|
||||
import com.tencent.supersonic.headless.api.pojo.Identify;
|
||||
@@ -62,7 +62,7 @@ public class ModelResp extends SchemaItem {
|
||||
return isOpen != null && isOpen == 1;
|
||||
}
|
||||
|
||||
public List<Dim> getTimeDimension() {
|
||||
public List<Dimension> getTimeDimension() {
|
||||
if (modelDetail == null) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@ public class DataModelNode extends SemanticNode {
|
||||
sqlTable = dataModel.getSqlQuery();
|
||||
} else if (dataModel.getTableQuery() != null && !dataModel.getTableQuery().isEmpty()) {
|
||||
if (dataModel.getType().equalsIgnoreCase(EngineType.POSTGRESQL.getName())) {
|
||||
String fullTableName = Arrays.stream(dataModel.getTableQuery().split("\\."))
|
||||
.collect(Collectors.joining(".public."));
|
||||
String fullTableName =
|
||||
String.join(".public.", dataModel.getTableQuery().split("\\."));
|
||||
sqlTable = "select * from " + fullTableName;
|
||||
} else {
|
||||
sqlTable = "select * from " + dataModel.getTableQuery();
|
||||
@@ -64,7 +64,7 @@ public class DataModelNode extends SemanticNode {
|
||||
for (Dimension d : datasource.getDimensions()) {
|
||||
List<SqlNode> identifiers =
|
||||
expand(SemanticNode.parse(d.getExpr(), scope, engineType), scope);
|
||||
identifiers.stream().forEach(i -> dimensions.add(i.toString()));
|
||||
identifiers.forEach(i -> dimensions.add(i.toString()));
|
||||
dimensions.add(d.getName());
|
||||
}
|
||||
for (Identify i : datasource.getIdentifiers()) {
|
||||
@@ -73,7 +73,7 @@ public class DataModelNode extends SemanticNode {
|
||||
for (Measure m : datasource.getMeasures()) {
|
||||
List<SqlNode> identifiers =
|
||||
expand(SemanticNode.parse(m.getExpr(), scope, engineType), scope);
|
||||
identifiers.stream().forEach(i -> {
|
||||
identifiers.forEach(i -> {
|
||||
if (!dimensions.contains(i.toString())) {
|
||||
metrics.add(i.toString());
|
||||
}
|
||||
@@ -127,7 +127,7 @@ public class DataModelNode extends SemanticNode {
|
||||
}
|
||||
|
||||
public static String getNames(List<DataModel> dataModelList) {
|
||||
return dataModelList.stream().map(d -> d.getName()).collect(Collectors.joining("_"));
|
||||
return dataModelList.stream().map(DataModel::getName).collect(Collectors.joining("_"));
|
||||
}
|
||||
|
||||
public static void getQueryDimensionMeasure(Ontology ontology, OntologyQueryParam queryParam,
|
||||
@@ -138,12 +138,12 @@ public class DataModelNode extends SemanticNode {
|
||||
: d)
|
||||
.collect(Collectors.toSet()));
|
||||
Set<String> schemaMetricName =
|
||||
ontology.getMetrics().stream().map(m -> m.getName()).collect(Collectors.toSet());
|
||||
ontology.getMetrics().stream().map(Metric::getName).collect(Collectors.toSet());
|
||||
ontology.getMetrics().stream().filter(m -> queryParam.getMetrics().contains(m.getName()))
|
||||
.forEach(m -> m.getMetricTypeParams().getMeasures().stream()
|
||||
.forEach(m -> m.getMetricTypeParams().getMeasures()
|
||||
.forEach(mm -> queryMeasures.add(mm.getName())));
|
||||
queryParam.getMetrics().stream().filter(m -> !schemaMetricName.contains(m))
|
||||
.forEach(m -> queryMeasures.add(m));
|
||||
.forEach(queryMeasures::add);
|
||||
}
|
||||
|
||||
public static void mergeQueryFilterDimensionMeasure(Ontology ontology,
|
||||
@@ -155,13 +155,13 @@ public class DataModelNode extends SemanticNode {
|
||||
FilterNode.getFilterField(parse(queryParam.getWhere(), scope, engineType),
|
||||
filterConditions);
|
||||
Set<String> queryMeasures = new HashSet<>(measures);
|
||||
Set<String> schemaMetricName = ontology.getMetrics().stream().map(m -> m.getName())
|
||||
.collect(Collectors.toSet());
|
||||
Set<String> schemaMetricName =
|
||||
ontology.getMetrics().stream().map(Metric::getName).collect(Collectors.toSet());
|
||||
for (String filterCondition : filterConditions) {
|
||||
if (schemaMetricName.contains(filterCondition)) {
|
||||
ontology.getMetrics().stream()
|
||||
.filter(m -> m.getName().equalsIgnoreCase(filterCondition))
|
||||
.forEach(m -> m.getMetricTypeParams().getMeasures().stream()
|
||||
.forEach(m -> m.getMetricTypeParams().getMeasures()
|
||||
.forEach(mm -> queryMeasures.add(mm.getName())));
|
||||
continue;
|
||||
}
|
||||
@@ -255,7 +255,7 @@ public class DataModelNode extends SemanticNode {
|
||||
.collect(Collectors.toSet());
|
||||
Set<String> baseDimensions = baseDataModel.getDimensions().stream().map(Dimension::getName)
|
||||
.collect(Collectors.toSet());
|
||||
baseDataModel.getIdentifiers().stream().forEach(i -> baseDimensions.add(i.getName()));
|
||||
baseDataModel.getIdentifiers().forEach(i -> baseDimensions.add(i.getName()));
|
||||
|
||||
baseMeasures.retainAll(queryMeasures);
|
||||
if (baseMeasures.size() < queryMeasures.size()) {
|
||||
@@ -296,7 +296,7 @@ public class DataModelNode extends SemanticNode {
|
||||
visitJoinRelations, sortedJoinRelation);
|
||||
ontology.getJoinRelations().stream()
|
||||
.filter(j -> !visitJoinRelations.contains(j.getId()))
|
||||
.forEach(j -> sortedJoinRelation.add(j));
|
||||
.forEach(sortedJoinRelation::add);
|
||||
for (JoinRelation joinRelation : sortedJoinRelation) {
|
||||
if (!before.contains(joinRelation.getLeft())
|
||||
&& !before.contains(joinRelation.getRight())) {
|
||||
@@ -310,8 +310,8 @@ public class DataModelNode extends SemanticNode {
|
||||
: joinRelation.getJoinCondition().get(0).getLeft();
|
||||
if (!queryDimensions.isEmpty()) {
|
||||
Set<String> linkDimension = other.getDimensions().stream()
|
||||
.map(dd -> dd.getName()).collect(Collectors.toSet());
|
||||
other.getIdentifiers().stream().forEach(i -> linkDimension.add(i.getName()));
|
||||
.map(Dimension::getName).collect(Collectors.toSet());
|
||||
other.getIdentifiers().forEach(i -> linkDimension.add(i.getName()));
|
||||
linkDimension.retainAll(queryDimensions);
|
||||
if (!linkDimension.isEmpty()) {
|
||||
isMatch = true;
|
||||
@@ -327,7 +327,7 @@ public class DataModelNode extends SemanticNode {
|
||||
}
|
||||
if (!isMatch && ontology.getDimensionMap().containsKey(other.getName())) {
|
||||
Set<String> linkDimension = ontology.getDimensionMap().get(other.getName())
|
||||
.stream().map(dd -> dd.getName()).collect(Collectors.toSet());
|
||||
.stream().map(Dimension::getName).collect(Collectors.toSet());
|
||||
linkDimension.retainAll(queryDimensions);
|
||||
if (!linkDimension.isEmpty()) {
|
||||
isMatch = true;
|
||||
@@ -387,15 +387,14 @@ public class DataModelNode extends SemanticNode {
|
||||
if (entry.getKey().equalsIgnoreCase(baseDataModel.getName())) {
|
||||
continue;
|
||||
}
|
||||
Long identifierNum = entry.getValue().getIdentifiers().stream().map(i -> i.getName())
|
||||
.filter(i -> baseIdentifiers.contains(i)).count();
|
||||
long identifierNum = entry.getValue().getIdentifiers().stream().map(Identify::getName)
|
||||
.filter(baseIdentifiers::contains).count();
|
||||
if (identifierNum > 0) {
|
||||
boolean isMatch = false;
|
||||
if (!queryDimension.isEmpty()) {
|
||||
Set<String> linkDimension = entry.getValue().getDimensions().stream()
|
||||
.map(dd -> dd.getName()).collect(Collectors.toSet());
|
||||
entry.getValue().getIdentifiers().stream()
|
||||
.forEach(i -> linkDimension.add(i.getName()));
|
||||
.map(Dimension::getName).collect(Collectors.toSet());
|
||||
entry.getValue().getIdentifiers().forEach(i -> linkDimension.add(i.getName()));
|
||||
linkDimension.retainAll(queryDimension);
|
||||
if (!linkDimension.isEmpty()) {
|
||||
isMatch = true;
|
||||
@@ -403,7 +402,7 @@ public class DataModelNode extends SemanticNode {
|
||||
}
|
||||
if (!measures.isEmpty()) {
|
||||
Set<String> linkMeasure = entry.getValue().getMeasures().stream()
|
||||
.map(mm -> mm.getName()).collect(Collectors.toSet());
|
||||
.map(Measure::getName).collect(Collectors.toSet());
|
||||
linkMeasure.retainAll(measures);
|
||||
if (!linkMeasure.isEmpty()) {
|
||||
isMatch = true;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.core.utils;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.DimensionTimeTypeParams;
|
||||
import com.tencent.supersonic.headless.api.pojo.enums.DimensionType;
|
||||
import com.tencent.supersonic.headless.core.adaptor.db.DbAdaptor;
|
||||
@@ -20,11 +20,11 @@ public class SysTimeDimensionBuilder {
|
||||
Pattern.compile("\\b(DATE|TIME|TIMESTAMP|YEAR|MONTH|DAY|HOUR|MINUTE|SECOND)\\b",
|
||||
Pattern.CASE_INSENSITIVE);
|
||||
|
||||
public static void addSysTimeDimension(List<Dim> dims, DbAdaptor engineAdaptor) {
|
||||
public static void addSysTimeDimension(List<Dimension> dims, DbAdaptor engineAdaptor) {
|
||||
log.debug("addSysTimeDimension before:{}, engineAdaptor:{}", dims, engineAdaptor);
|
||||
Dim timeDim = getTimeDim(dims);
|
||||
Dimension timeDim = getTimeDim(dims);
|
||||
if (timeDim == null) {
|
||||
timeDim = Dim.getDefault();
|
||||
timeDim = Dimension.getDefault();
|
||||
// todo not find the time dimension
|
||||
return;
|
||||
}
|
||||
@@ -34,8 +34,8 @@ public class SysTimeDimensionBuilder {
|
||||
log.debug("addSysTimeDimension after:{}, engineAdaptor:{}", dims, engineAdaptor);
|
||||
}
|
||||
|
||||
private static Dim generateSysDayDimension(Dim timeDim, DbAdaptor engineAdaptor) {
|
||||
Dim dim = new Dim();
|
||||
private static Dimension generateSysDayDimension(Dimension timeDim, DbAdaptor engineAdaptor) {
|
||||
Dimension dim = new Dimension();
|
||||
dim.setBizName(TimeDimensionEnum.DAY.getName());
|
||||
dim.setType(DimensionType.partition_time);
|
||||
dim.setExpr(generateTimeExpr(timeDim, TimeDimensionEnum.DAY.name().toLowerCase(),
|
||||
@@ -47,8 +47,8 @@ public class SysTimeDimensionBuilder {
|
||||
return dim;
|
||||
}
|
||||
|
||||
private static Dim generateSysWeekDimension(Dim timeDim, DbAdaptor engineAdaptor) {
|
||||
Dim dim = new Dim();
|
||||
private static Dimension generateSysWeekDimension(Dimension timeDim, DbAdaptor engineAdaptor) {
|
||||
Dimension dim = new Dimension();
|
||||
dim.setBizName(TimeDimensionEnum.WEEK.getName());
|
||||
dim.setType(DimensionType.partition_time);
|
||||
dim.setExpr(generateTimeExpr(timeDim, TimeDimensionEnum.WEEK.name().toLowerCase(),
|
||||
@@ -60,8 +60,8 @@ public class SysTimeDimensionBuilder {
|
||||
return dim;
|
||||
}
|
||||
|
||||
private static Dim generateSysMonthDimension(Dim timeDim, DbAdaptor engineAdaptor) {
|
||||
Dim dim = new Dim();
|
||||
private static Dimension generateSysMonthDimension(Dimension timeDim, DbAdaptor engineAdaptor) {
|
||||
Dimension dim = new Dimension();
|
||||
dim.setBizName(TimeDimensionEnum.MONTH.getName());
|
||||
dim.setType(DimensionType.partition_time);
|
||||
dim.setExpr(generateTimeExpr(timeDim, TimeDimensionEnum.MONTH.name().toLowerCase(),
|
||||
@@ -79,7 +79,8 @@ public class SysTimeDimensionBuilder {
|
||||
}
|
||||
|
||||
// Check whether the time field contains keywords,Generation time expression
|
||||
private static String generateTimeExpr(Dim timeDim, String dateType, DbAdaptor engineAdaptor) {
|
||||
private static String generateTimeExpr(Dimension timeDim, String dateType,
|
||||
DbAdaptor engineAdaptor) {
|
||||
String bizName = timeDim.getBizName();
|
||||
String dateFormat = timeDim.getDateFormat();
|
||||
if (containsTimeKeyword(bizName)) {
|
||||
@@ -90,8 +91,8 @@ public class SysTimeDimensionBuilder {
|
||||
}
|
||||
}
|
||||
|
||||
private static Dim getTimeDim(List<Dim> timeDims) {
|
||||
for (Dim dim : timeDims) {
|
||||
private static Dimension getTimeDim(List<Dimension> timeDims) {
|
||||
for (Dimension dim : timeDims) {
|
||||
if (dim.getType().equals(DimensionType.partition_time)) {
|
||||
return dim;
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ public class S2SemanticLayerService implements SemanticLayerService {
|
||||
ModelResp modelResp = modelResps.get(0);
|
||||
String sql = String.format("select distinct %s from %s where 1=1", dimensionResp.getName(),
|
||||
modelResp.getName());
|
||||
List<Dim> timeDims = modelResp.getTimeDimension();
|
||||
List<Dimension> timeDims = modelResp.getTimeDimension();
|
||||
if (CollectionUtils.isNotEmpty(timeDims)) {
|
||||
sql = String.format("%s and %s >= '%s' and %s <= '%s'", sql,
|
||||
TimeDimensionEnum.DAY.getName(), queryDimValueReq.getDateInfo().getStartDate(),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.server.manager;
|
||||
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.Identify;
|
||||
import com.tencent.supersonic.headless.api.pojo.Measure;
|
||||
import com.tencent.supersonic.headless.api.pojo.ModelDetail;
|
||||
@@ -53,7 +53,7 @@ public class ModelYamlManager {
|
||||
return dataModelYamlTpl;
|
||||
}
|
||||
|
||||
public static DimensionYamlTpl convert(Dim dim) {
|
||||
public static DimensionYamlTpl convert(Dimension dim) {
|
||||
DimensionYamlTpl dimensionYamlTpl = new DimensionYamlTpl();
|
||||
BeanUtils.copyProperties(dim, dimensionYamlTpl);
|
||||
dimensionYamlTpl.setName(dim.getBizName());
|
||||
|
||||
@@ -16,6 +16,7 @@ public class ModelDO {
|
||||
|
||||
private Long domainId;
|
||||
|
||||
@Deprecated
|
||||
private Long tagObjectId;
|
||||
|
||||
private String name;
|
||||
|
||||
@@ -12,7 +12,7 @@ import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.headless.api.pojo.DBColumn;
|
||||
import com.tencent.supersonic.headless.api.pojo.DbSchema;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.Identify;
|
||||
import com.tencent.supersonic.headless.api.pojo.ItemDateFilter;
|
||||
import com.tencent.supersonic.headless.api.pojo.Measure;
|
||||
@@ -78,23 +78,23 @@ import java.util.stream.Collectors;
|
||||
@Slf4j
|
||||
public class ModelServiceImpl implements ModelService {
|
||||
|
||||
private ModelRepository modelRepository;
|
||||
private final ModelRepository modelRepository;
|
||||
|
||||
private DatabaseService databaseService;
|
||||
private final DatabaseService databaseService;
|
||||
|
||||
private DimensionService dimensionService;
|
||||
private final DimensionService dimensionService;
|
||||
|
||||
private MetricService metricService;
|
||||
private final MetricService metricService;
|
||||
|
||||
private DomainService domainService;
|
||||
private final DomainService domainService;
|
||||
|
||||
private UserService userService;
|
||||
private final UserService userService;
|
||||
|
||||
private DataSetService dataSetService;
|
||||
private final DataSetService dataSetService;
|
||||
|
||||
private DateInfoRepository dateInfoRepository;
|
||||
private final DateInfoRepository dateInfoRepository;
|
||||
|
||||
private ModelRelaService modelRelaService;
|
||||
private final ModelRelaService modelRelaService;
|
||||
|
||||
ExecutorService executor =
|
||||
new ThreadPoolExecutor(0, 5, 5L, TimeUnit.SECONDS, new LinkedBlockingQueue<>());
|
||||
@@ -292,7 +292,7 @@ public class ModelServiceImpl implements ModelService {
|
||||
if (modelReq.getModelDetail() == null) {
|
||||
return;
|
||||
}
|
||||
List<Dim> dims = modelReq.getModelDetail().getDimensions();
|
||||
List<Dimension> dims = modelReq.getModelDetail().getDimensions();
|
||||
List<Measure> measures = modelReq.getModelDetail().getMeasures();
|
||||
List<Identify> identifies = modelReq.getModelDetail().getIdentifiers();
|
||||
if (CollectionUtils.isEmpty(dims)) {
|
||||
@@ -308,7 +308,7 @@ public class ModelServiceImpl implements ModelService {
|
||||
throw new InvalidArgumentException(message);
|
||||
}
|
||||
}
|
||||
for (Dim dim : dims) {
|
||||
for (Dimension dim : dims) {
|
||||
String dimForbiddenCharacters = NameCheckUtils.findForbiddenCharacters(dim.getName());
|
||||
if (StringUtils.isNotBlank(dim.getName())
|
||||
&& StringUtils.isNotBlank(dimForbiddenCharacters)) {
|
||||
@@ -337,12 +337,10 @@ public class ModelServiceImpl implements ModelService {
|
||||
Set<String> relations = new HashSet<>();
|
||||
for (ModelRela modelRela : modelRelas) {
|
||||
if (modelRela.getFromModelId().equals(modelReq.getId())) {
|
||||
modelRela.getJoinConditions().stream()
|
||||
.forEach(r -> relations.add(r.getLeftField()));
|
||||
modelRela.getJoinConditions().forEach(r -> relations.add(r.getLeftField()));
|
||||
}
|
||||
if (modelRela.getToModelId().equals(modelReq.getId())) {
|
||||
modelRela.getJoinConditions().stream()
|
||||
.forEach(r -> relations.add(r.getRightField()));
|
||||
modelRela.getJoinConditions().forEach(r -> relations.add(r.getRightField()));
|
||||
}
|
||||
}
|
||||
if (relations.isEmpty()) {
|
||||
@@ -351,10 +349,10 @@ public class ModelServiceImpl implements ModelService {
|
||||
// any identify in model relation should not be deleted
|
||||
if (modelReq.getModelDetail() == null
|
||||
|| CollectionUtils.isEmpty(modelReq.getModelDetail().getIdentifiers())) {
|
||||
throw new InvalidArgumentException(String.format("模型关联中主键/外键不存在, 请检查"));
|
||||
throw new InvalidArgumentException("模型关联中主键/外键不存在, 请检查");
|
||||
}
|
||||
List<String> modelIdentifiers = modelReq.getModelDetail().getIdentifiers().stream()
|
||||
.map(i -> i.getBizName()).collect(Collectors.toList());
|
||||
.map(Identify::getBizName).collect(Collectors.toList());
|
||||
for (String rela : relations) {
|
||||
if (!modelIdentifiers.contains(rela)) {
|
||||
throw new InvalidArgumentException(String.format("模型关联中主键/外键(%s)不存在, 请检查", rela));
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.tencent.supersonic.headless.server.service.impl;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaElementType;
|
||||
import com.tencent.supersonic.headless.api.pojo.ValueDistribution;
|
||||
import com.tencent.supersonic.headless.api.pojo.enums.TagDefineType;
|
||||
@@ -93,7 +93,7 @@ public class TagQueryServiceImpl implements TagQueryService {
|
||||
private void correctDateConf(ItemValueReq itemValueReq, TagResp tag, User user)
|
||||
throws Exception {
|
||||
ModelResp model = modelService.getModel(tag.getModelId());
|
||||
List<Dim> timeDimension = model.getTimeDimension();
|
||||
List<Dimension> timeDimension = model.getTimeDimension();
|
||||
if (CollectionUtils.isEmpty(timeDimension)) {
|
||||
itemValueReq.setDateConf(null);
|
||||
return;
|
||||
@@ -112,12 +112,12 @@ public class TagQueryServiceImpl implements TagQueryService {
|
||||
itemValueReq.setDateConf(dateConf);
|
||||
}
|
||||
|
||||
private String queryTagDate(Dim dim) {
|
||||
private String queryTagDate(Dimension dim) {
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(dim.getDateFormat());
|
||||
return LocalDate.now().plusDays(-dayBefore).format(formatter);
|
||||
}
|
||||
|
||||
private String queryTagDateFromDbBySql(Dim dim, TagResp tag, ItemValueReq itemValueReq,
|
||||
private String queryTagDateFromDbBySql(Dimension dim, TagResp tag, ItemValueReq itemValueReq,
|
||||
User user) {
|
||||
|
||||
String sqlPattern = "select max(%s) as %s from tbl where %s is not null";
|
||||
@@ -129,7 +129,7 @@ public class TagQueryServiceImpl implements TagQueryService {
|
||||
if (Objects.nonNull(itemValueReq) && itemValueReq.getDateConf().getUnit() > 1) {
|
||||
ModelResp model = modelService.getModel(tag.getModelId());
|
||||
if (Objects.nonNull(model)) {
|
||||
List<Dim> timeDims = model.getTimeDimension();
|
||||
List<Dimension> timeDims = model.getTimeDimension();
|
||||
if (!CollectionUtils.isEmpty(timeDims)) {
|
||||
String dateFormat = timeDims.get(0).getDateFormat();
|
||||
if (StringUtils.isEmpty(dateFormat)) {
|
||||
|
||||
@@ -14,7 +14,7 @@ import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.common.util.BeanMapper;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.ItemValueConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.DictItemReq;
|
||||
import com.tencent.supersonic.headless.api.pojo.request.QuerySqlReq;
|
||||
@@ -401,7 +401,7 @@ public class DictUtils {
|
||||
private void fillStructDateBetween(QueryStructReq queryStructReq, ModelResp model,
|
||||
Integer itemValueDateStart, Integer itemValueDateEnd) {
|
||||
if (Objects.nonNull(model)) {
|
||||
List<Dim> timeDims = model.getTimeDimension();
|
||||
List<Dimension> timeDims = model.getTimeDimension();
|
||||
if (!CollectionUtils.isEmpty(timeDims)) {
|
||||
DateConf dateConf = new DateConf();
|
||||
dateConf.setDateMode(DateConf.DateMode.BETWEEN);
|
||||
@@ -496,7 +496,7 @@ public class DictUtils {
|
||||
private boolean partitionedModel(Long modelId) {
|
||||
ModelResp model = modelService.getModel(modelId);
|
||||
if (Objects.nonNull(model)) {
|
||||
List<Dim> timeDims = model.getTimeDimension();
|
||||
List<Dimension> timeDims = model.getTimeDimension();
|
||||
if (!CollectionUtils.isEmpty(timeDims)) {
|
||||
return true;
|
||||
}
|
||||
@@ -507,7 +507,7 @@ public class DictUtils {
|
||||
private String generateDictDateFilterRecent(DictItemResp dictItemResp) {
|
||||
ModelResp model = modelService.getModel(dictItemResp.getModelId());
|
||||
if (Objects.nonNull(model)) {
|
||||
List<Dim> timeDims = model.getTimeDimension();
|
||||
List<Dimension> timeDims = model.getTimeDimension();
|
||||
if (!CollectionUtils.isEmpty(timeDims)) {
|
||||
String dateFormat = timeDims.get(0).getDateFormat();
|
||||
if (StringUtils.isEmpty(dateFormat)) {
|
||||
|
||||
@@ -7,7 +7,7 @@ import com.tencent.supersonic.common.pojo.enums.PublishEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.common.util.BeanMapper;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricDefineByFieldParams;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricDefineByMeasureParams;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricDefineByMetricParams;
|
||||
@@ -82,7 +82,7 @@ public class MetricConverter {
|
||||
metricResp.setModelName(modelResp.getName());
|
||||
metricResp.setModelBizName(modelResp.getBizName());
|
||||
metricResp.setDomainId(modelResp.getDomainId());
|
||||
List<Dim> timeDims = modelResp.getTimeDimension();
|
||||
List<Dimension> timeDims = modelResp.getTimeDimension();
|
||||
if (CollectionUtils.isNotEmpty(timeDims)) {
|
||||
metricResp.setContainsPartitionDimensions(true);
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ 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.pojo.ColumnSchema;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.Identify;
|
||||
import com.tencent.supersonic.headless.api.pojo.Measure;
|
||||
@@ -111,7 +111,7 @@ public class ModelConverter {
|
||||
return measureResp;
|
||||
}
|
||||
|
||||
public static DimensionReq convert(Dim dim, ModelDO modelDO) {
|
||||
public static DimensionReq convert(Dimension dim, ModelDO modelDO) {
|
||||
DimensionReq dimensionReq = new DimensionReq();
|
||||
dimensionReq.setName(dim.getName());
|
||||
dimensionReq.setBizName(dim.getBizName());
|
||||
@@ -129,7 +129,6 @@ public class ModelConverter {
|
||||
dimensionReq.setType(dim.getType().name());
|
||||
dimensionReq
|
||||
.setDescription(Objects.isNull(dim.getDescription()) ? "" : dim.getDescription());
|
||||
dimensionReq.setIsTag(dim.getIsTag());
|
||||
dimensionReq.setTypeParams(dim.getTypeParams());
|
||||
return dimensionReq;
|
||||
}
|
||||
@@ -188,7 +187,7 @@ public class ModelConverter {
|
||||
columnSchema.getAgg().getOperator(), 1);
|
||||
modelDetail.getMeasures().add(measure);
|
||||
} else {
|
||||
Dim dim = new Dim(columnSchema.getName(), columnSchema.getColumnName(),
|
||||
Dimension dim = new Dimension(columnSchema.getName(), columnSchema.getColumnName(),
|
||||
DimensionType.valueOf(columnSchema.getFiledType().name()), 1);
|
||||
modelDetail.getDimensions().add(dim);
|
||||
}
|
||||
@@ -216,7 +215,7 @@ public class ModelConverter {
|
||||
return modelDescs;
|
||||
}
|
||||
|
||||
private static boolean isCreateDimension(Dim dim) {
|
||||
private static boolean isCreateDimension(Dimension dim) {
|
||||
return dim.getIsCreateDimension() == 1 && StringUtils.isNotBlank(dim.getName());
|
||||
}
|
||||
|
||||
@@ -228,7 +227,7 @@ public class ModelConverter {
|
||||
return measure.getIsCreateMetric() == 1 && StringUtils.isNotBlank(measure.getName());
|
||||
}
|
||||
|
||||
public static List<Dim> getDimToCreateDimension(ModelDetail modelDetail) {
|
||||
public static List<Dimension> getDimToCreateDimension(ModelDetail modelDetail) {
|
||||
if (CollectionUtils.isEmpty(modelDetail.getDimensions())) {
|
||||
return Lists.newArrayList();
|
||||
}
|
||||
@@ -256,7 +255,7 @@ public class ModelConverter {
|
||||
List<DimensionReq> dimensionReqs = Lists.newArrayList();
|
||||
ModelDetail modelDetail =
|
||||
JSONObject.parseObject(modelDO.getModelDetail(), ModelDetail.class);
|
||||
List<Dim> dims = getDimToCreateDimension(modelDetail);
|
||||
List<Dimension> dims = getDimToCreateDimension(modelDetail);
|
||||
if (!CollectionUtils.isEmpty(dims)) {
|
||||
dimensionReqs = dims.stream().filter(dim -> StringUtils.isNotBlank(dim.getName()))
|
||||
.map(dim -> convert(dim, modelDO)).collect(Collectors.toList());
|
||||
|
||||
@@ -5,7 +5,7 @@ import com.tencent.supersonic.auth.api.authentication.service.UserService;
|
||||
import com.tencent.supersonic.common.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.StatusEnum;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.DimensionTimeTypeParams;
|
||||
import com.tencent.supersonic.headless.api.pojo.Identify;
|
||||
import com.tencent.supersonic.headless.api.pojo.Measure;
|
||||
@@ -95,11 +95,11 @@ class ModelServiceImplTest {
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
identifiers.add(new Identify("用户名", IdentifyType.primary.name(), "user_name"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionType.partition_time, 0);
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
Dimension dimension1 = new Dimension("", "imp_date", DimensionType.partition_time, 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dim dimension2 = new Dim("", "page", DimensionType.categorical, 0);
|
||||
Dimension dimension2 = new Dimension("", "page", DimensionType.categorical, 0);
|
||||
dimension2.setExpr("page");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
@@ -134,11 +134,11 @@ class ModelServiceImplTest {
|
||||
identifiers.add(new Identify("用户名_a", IdentifyType.primary.name(), "user_name_a"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date_a", DimensionType.partition_time, 0);
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
Dimension dimension1 = new Dimension("", "imp_date_a", DimensionType.partition_time, 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dim dimension2 = new Dim("", "page_a", DimensionType.categorical, 0);
|
||||
Dimension dimension2 = new Dimension("", "page_a", DimensionType.categorical, 0);
|
||||
dimension2.setExpr("page_a");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
@@ -169,11 +169,11 @@ class ModelServiceImplTest {
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
identifiers.add(new Identify("用户名", IdentifyType.primary.name(), "user_name"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionType.partition_time, 0);
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
Dimension dimension1 = new Dimension("", "imp_date", DimensionType.partition_time, 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dim dimension2 = new Dim("", "page", DimensionType.categorical, 0);
|
||||
Dimension dimension2 = new Dimension("", "page", DimensionType.categorical, 0);
|
||||
dimension2.setExpr("page");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
@@ -207,11 +207,11 @@ class ModelServiceImplTest {
|
||||
identifiers.add(new Identify("用户名", IdentifyType.primary.name(), "user_name"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionType.partition_time, 0);
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
Dimension dimension1 = new Dimension("", "imp_date", DimensionType.partition_time, 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dim dimension2 = new Dim("", "page", DimensionType.categorical, 0);
|
||||
Dimension dimension2 = new Dimension("", "page", DimensionType.categorical, 0);
|
||||
dimension2.setExpr("page");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
@@ -252,11 +252,11 @@ class ModelServiceImplTest {
|
||||
identifiers.add(new Identify("用户名_a", IdentifyType.primary.name(), "user_name_a"));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date_a", DimensionType.partition_time, 0);
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
Dimension dimension1 = new Dimension("", "imp_date_a", DimensionType.partition_time, 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dim dimension2 = new Dim("", "page_a", DimensionType.categorical, 0);
|
||||
Dimension dimension2 = new Dimension("", "page_a", DimensionType.categorical, 0);
|
||||
dimension2.setExpr("page_a");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
@@ -89,14 +89,14 @@ public class S2CompanyDemo extends S2BaseDemo {
|
||||
modelReq.setAdmins(Collections.singletonList("admin"));
|
||||
modelReq.setAdminOrgs(Collections.emptyList());
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
dimensions.add(new Dim("公司名称", "company_name", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dim("总部地点", "headquarter_address", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dim("成立时间", "company_established_time", DimensionType.time, 1));
|
||||
dimensions.add(new Dim("创始人", "founder", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dim("首席执行官", "ceo", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dimension("公司名称", "company_name", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dimension("总部地点", "headquarter_address", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dimension("成立时间", "company_established_time", DimensionType.time, 1));
|
||||
dimensions.add(new Dimension("创始人", "founder", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dimension("首席执行官", "ceo", DimensionType.categorical, 1));
|
||||
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
identifiers.add(new Identify("公司id", IdentifyType.primary.name(), "company_id"));
|
||||
@@ -131,12 +131,13 @@ public class S2CompanyDemo extends S2BaseDemo {
|
||||
modelReq.setAdmins(Collections.singletonList("admin"));
|
||||
modelReq.setAdminOrgs(Collections.emptyList());
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
dimensions.add(new Dim("品牌名称", "brand_name", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dim("品牌成立时间", "brand_established_time", DimensionType.time, 1));
|
||||
dimensions.add(new Dim("法定代表人", "legal_representative", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dimension("品牌名称", "brand_name", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dimension("品牌成立时间", "brand_established_time", DimensionType.time, 1));
|
||||
dimensions
|
||||
.add(new Dimension("法定代表人", "legal_representative", DimensionType.categorical, 1));
|
||||
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
identifiers.add(new Identify("品牌id", IdentifyType.primary.name(), "brand_id"));
|
||||
@@ -168,10 +169,10 @@ public class S2CompanyDemo extends S2BaseDemo {
|
||||
modelReq.setAdmins(Collections.singletonList("admin"));
|
||||
modelReq.setAdminOrgs(Collections.emptyList());
|
||||
ModelDetail modelDetail = new ModelDetail();
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
dimensions.add(new Dim("财年", "year_time", DimensionType.time, 1, "year_time", "yyyy",
|
||||
dimensions.add(new Dimension("财年", "year_time", DimensionType.time, 1, "year_time", "yyyy",
|
||||
new DimensionTimeTypeParams("false", "year")));
|
||||
|
||||
List<Identify> identifiers = new ArrayList<>();
|
||||
|
||||
@@ -16,7 +16,7 @@ import com.tencent.supersonic.headless.api.pojo.AggregateTypeDefaultConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetModelConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.DetailTypeDefaultConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.Identify;
|
||||
import com.tencent.supersonic.headless.api.pojo.Measure;
|
||||
import com.tencent.supersonic.headless.api.pojo.ModelDetail;
|
||||
@@ -101,10 +101,10 @@ public class S2SingerDemo extends S2BaseDemo {
|
||||
identifiers.add(identify);
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
dimensions.add(new Dim("活跃区域", "act_area", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dim("代表作", "song_name", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dim("流派", "genre", DimensionType.categorical, 1));
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
dimensions.add(new Dimension("活跃区域", "act_area", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dimension("代表作", "song_name", DimensionType.categorical, 1));
|
||||
dimensions.add(new Dimension("流派", "genre", DimensionType.categorical, 1));
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
Measure measure1 = new Measure("播放量", "js_play_cnt", "sum", 1);
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.tencent.supersonic.common.util.ChatAppManager;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetModelConfig;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.pojo.Dimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.DimensionTimeTypeParams;
|
||||
import com.tencent.supersonic.headless.api.pojo.Field;
|
||||
import com.tencent.supersonic.headless.api.pojo.FieldParam;
|
||||
@@ -199,9 +199,9 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
identifiers.add(new Identify("用户", IdentifyType.primary.name(), "user_name", 1));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
dimensions.add(new Dim("部门", "department", DimensionType.categorical, 1));
|
||||
// dimensions.add(new Dim("用户", "user_name", DimensionType.categorical, 1));
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
dimensions.add(new Dimension("部门", "department", DimensionType.categorical, 1));
|
||||
// dimensions.add(new Dimension("用户", "user_name", DimensionType.categorical, 1));
|
||||
modelDetail.setDimensions(dimensions);
|
||||
List<Field> fields = Lists.newArrayList();
|
||||
fields.add(Field.builder().fieldName("user_name").dataType("Varchar").build());
|
||||
@@ -230,11 +230,11 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
identifiers.add(new Identify("用户名", IdentifyType.foreign.name(), "user_name", 0));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("", "imp_date", DimensionType.partition_time, 0);
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
Dimension dimension1 = new Dimension("", "imp_date", DimensionType.partition_time, 0);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dim dimension2 = new Dim("", "page", DimensionType.categorical, 0);
|
||||
Dimension dimension2 = new Dimension("", "page", DimensionType.categorical, 0);
|
||||
dimension2.setExpr("page");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
@@ -274,11 +274,11 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
identifiers.add(new Identify("用户", IdentifyType.foreign.name(), "user_name", 0));
|
||||
modelDetail.setIdentifiers(identifiers);
|
||||
|
||||
List<Dim> dimensions = new ArrayList<>();
|
||||
Dim dimension1 = new Dim("数据日期", "imp_date", DimensionType.partition_time, 1);
|
||||
List<Dimension> dimensions = new ArrayList<>();
|
||||
Dimension dimension1 = new Dimension("数据日期", "imp_date", DimensionType.partition_time, 1);
|
||||
dimension1.setTypeParams(new DimensionTimeTypeParams());
|
||||
dimensions.add(dimension1);
|
||||
Dim dimension2 = new Dim("页面", "page", DimensionType.categorical, 1);
|
||||
Dimension dimension2 = new Dimension("页面", "page", DimensionType.categorical, 1);
|
||||
dimension2.setExpr("page");
|
||||
dimensions.add(dimension2);
|
||||
modelDetail.setDimensions(dimensions);
|
||||
|
||||
Reference in New Issue
Block a user