mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 12:37:55 +00:00
(improvement)(headless) adapter for derived metrics (#646)
This commit is contained in:
@@ -1,9 +1,44 @@
|
||||
package com.tencent.supersonic.headless.api.enums;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.api.pojo.MeasureParam;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricDefineByMeasureParams;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public enum MetricType {
|
||||
|
||||
ATOMIC,
|
||||
DERIVED
|
||||
DERIVED;
|
||||
|
||||
public static MetricType of(String src) {
|
||||
for (MetricType metricType : MetricType.values()) {
|
||||
if (Objects.nonNull(src) && src.equalsIgnoreCase(metricType.name())) {
|
||||
return metricType;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Boolean isDerived(String src) {
|
||||
MetricType metricType = of(src);
|
||||
return Objects.nonNull(metricType) && metricType.equals(DERIVED);
|
||||
}
|
||||
|
||||
public static Boolean isDerived(MetricDefineType metricDefineType, MetricDefineByMeasureParams typeParams) {
|
||||
if (MetricDefineType.METRIC.equals(metricDefineType)) {
|
||||
return true;
|
||||
}
|
||||
if (MetricDefineType.MEASURE.equals(metricDefineType)) {
|
||||
List<MeasureParam> measures = typeParams.getMeasures();
|
||||
if (measures.size() > 1) {
|
||||
return true;
|
||||
}
|
||||
if (measures.size() == 1 && measures.get(0).getBizName()
|
||||
.equalsIgnoreCase(typeParams.getExpr())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,10 @@ package com.tencent.supersonic.headless.api.request;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.tencent.supersonic.headless.api.enums.MetricDefineType;
|
||||
import com.tencent.supersonic.headless.api.enums.MetricType;
|
||||
import com.tencent.supersonic.headless.api.pojo.MeasureParam;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricDefineByFieldParams;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricDefineByMeasureParams;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricDefineByMetricParams;
|
||||
import lombok.Data;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class MetricReq extends MetricBaseReq {
|
||||
@@ -30,20 +28,7 @@ public class MetricReq extends MetricBaseReq {
|
||||
}
|
||||
|
||||
public MetricType getMetricType() {
|
||||
if (MetricDefineType.METRIC.equals(metricDefineType)) {
|
||||
return MetricType.DERIVED;
|
||||
}
|
||||
if (MetricDefineType.MEASURE.equals(metricDefineType)) {
|
||||
List<MeasureParam> measures = typeParams.getMeasures();
|
||||
if (measures.size() > 1) {
|
||||
return MetricType.DERIVED;
|
||||
}
|
||||
if (measures.size() == 1 && measures.get(0).getBizName()
|
||||
.equalsIgnoreCase(typeParams.getExpr())) {
|
||||
return MetricType.ATOMIC;
|
||||
}
|
||||
}
|
||||
return MetricType.ATOMIC;
|
||||
return MetricType.isDerived(metricDefineType, typeParams) ? MetricType.DERIVED : MetricType.ATOMIC;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,16 +10,15 @@ import com.tencent.supersonic.headless.api.pojo.MetricDefineByMeasureParams;
|
||||
import com.tencent.supersonic.headless.api.pojo.MetricDefineByMetricParams;
|
||||
import com.tencent.supersonic.headless.api.pojo.RelateDimension;
|
||||
import com.tencent.supersonic.headless.api.pojo.SchemaItem;
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.Data;
|
||||
import lombok.ToString;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
|
||||
@Data
|
||||
|
||||
Reference in New Issue
Block a user