mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-14 22:25:19 +00:00
[improvement][semantic] add get metric agg function (#110)
This commit is contained in:
@@ -1,26 +1,30 @@
|
|||||||
package com.tencent.supersonic.semantic.model.application;
|
package com.tencent.supersonic.semantic.model.application;
|
||||||
|
|
||||||
import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter;
|
import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter;
|
||||||
import com.tencent.supersonic.semantic.api.model.response.MetricResp;
|
|
||||||
import com.tencent.supersonic.semantic.api.model.response.DatabaseResp;
|
import com.tencent.supersonic.semantic.api.model.response.DatabaseResp;
|
||||||
import com.tencent.supersonic.semantic.api.model.response.ModelResp;
|
|
||||||
import com.tencent.supersonic.semantic.api.model.response.DatasourceResp;
|
import com.tencent.supersonic.semantic.api.model.response.DatasourceResp;
|
||||||
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
|
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
|
||||||
import com.tencent.supersonic.semantic.api.model.response.ItemDateResp;
|
import com.tencent.supersonic.semantic.api.model.response.ItemDateResp;
|
||||||
|
import com.tencent.supersonic.semantic.api.model.response.MeasureResp;
|
||||||
|
import com.tencent.supersonic.semantic.api.model.response.MetricResp;
|
||||||
|
import com.tencent.supersonic.semantic.api.model.response.ModelResp;
|
||||||
import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl;
|
import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl;
|
||||||
import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl;
|
import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl;
|
||||||
import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl;
|
import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl;
|
||||||
import com.tencent.supersonic.semantic.model.domain.DatabaseService;
|
|
||||||
import com.tencent.supersonic.semantic.model.domain.ModelService;
|
|
||||||
import com.tencent.supersonic.semantic.model.domain.DimensionService;
|
|
||||||
import com.tencent.supersonic.semantic.model.domain.DatasourceService;
|
|
||||||
import com.tencent.supersonic.semantic.model.domain.MetricService;
|
|
||||||
import com.tencent.supersonic.semantic.model.domain.Catalog;
|
import com.tencent.supersonic.semantic.model.domain.Catalog;
|
||||||
|
import com.tencent.supersonic.semantic.model.domain.DatabaseService;
|
||||||
|
import com.tencent.supersonic.semantic.model.domain.DatasourceService;
|
||||||
|
import com.tencent.supersonic.semantic.model.domain.DimensionService;
|
||||||
|
import com.tencent.supersonic.semantic.model.domain.MetricService;
|
||||||
|
import com.tencent.supersonic.semantic.model.domain.ModelService;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Component
|
@Component
|
||||||
@@ -96,4 +100,26 @@ public class CatalogImpl implements Catalog {
|
|||||||
public ItemDateResp getItemDate(ItemDateFilter dimension, ItemDateFilter metric) {
|
public ItemDateResp getItemDate(ItemDateFilter dimension, ItemDateFilter metric) {
|
||||||
return datasourceService.getItemDate(dimension, metric);
|
return datasourceService.getItemDate(dimension, metric);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getAgg(Long modelId, String metricBizName) {
|
||||||
|
List<MetricResp> metricResps = getMetrics(modelId);
|
||||||
|
if (!CollectionUtils.isEmpty(metricResps)) {
|
||||||
|
Optional<MetricResp> metric = metricResps.stream()
|
||||||
|
.filter(m -> m.getBizName().equalsIgnoreCase(metricBizName)).findFirst();
|
||||||
|
if (metric.isPresent() && Objects.nonNull(metric.get().getTypeParams()) && !CollectionUtils.isEmpty(
|
||||||
|
metric.get().getTypeParams().getMeasures())) {
|
||||||
|
List<MeasureResp> measureRespList = datasourceService.getMeasureListOfModel(modelId);
|
||||||
|
if (!CollectionUtils.isEmpty(measureRespList)) {
|
||||||
|
String measureName = metric.get().getTypeParams().getMeasures().get(0).getBizName();
|
||||||
|
Optional<MeasureResp> measure = measureRespList.stream()
|
||||||
|
.filter(m -> m.getBizName().equalsIgnoreCase(measureName)).findFirst();
|
||||||
|
if (measure.isPresent()) {
|
||||||
|
return measure.get().getAgg();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
package com.tencent.supersonic.semantic.model.domain;
|
package com.tencent.supersonic.semantic.model.domain;
|
||||||
|
|
||||||
import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter;
|
import com.tencent.supersonic.semantic.api.model.pojo.ItemDateFilter;
|
||||||
import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl;
|
|
||||||
import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl;
|
|
||||||
import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl;
|
|
||||||
import com.tencent.supersonic.semantic.api.model.response.DatabaseResp;
|
import com.tencent.supersonic.semantic.api.model.response.DatabaseResp;
|
||||||
import com.tencent.supersonic.semantic.api.model.response.DatasourceResp;
|
import com.tencent.supersonic.semantic.api.model.response.DatasourceResp;
|
||||||
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
|
import com.tencent.supersonic.semantic.api.model.response.DimensionResp;
|
||||||
import com.tencent.supersonic.semantic.api.model.response.ItemDateResp;
|
import com.tencent.supersonic.semantic.api.model.response.ItemDateResp;
|
||||||
import com.tencent.supersonic.semantic.api.model.response.MetricResp;
|
import com.tencent.supersonic.semantic.api.model.response.MetricResp;
|
||||||
|
import com.tencent.supersonic.semantic.api.model.yaml.DatasourceYamlTpl;
|
||||||
|
import com.tencent.supersonic.semantic.api.model.yaml.DimensionYamlTpl;
|
||||||
|
import com.tencent.supersonic.semantic.api.model.yaml.MetricYamlTpl;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -16,6 +16,7 @@ import java.util.Set;
|
|||||||
public interface Catalog {
|
public interface Catalog {
|
||||||
|
|
||||||
DatabaseResp getDatabase(Long id);
|
DatabaseResp getDatabase(Long id);
|
||||||
|
|
||||||
DatabaseResp getDatabaseByModelId(Long modelId);
|
DatabaseResp getDatabaseByModelId(Long modelId);
|
||||||
|
|
||||||
List<DatasourceResp> getDatasourceList(Long modelId);
|
List<DatasourceResp> getDatasourceList(Long modelId);
|
||||||
@@ -36,4 +37,6 @@ public interface Catalog {
|
|||||||
|
|
||||||
ItemDateResp getItemDate(ItemDateFilter dimension, ItemDateFilter metric);
|
ItemDateResp getItemDate(ItemDateFilter dimension, ItemDateFilter metric);
|
||||||
|
|
||||||
|
String getAgg(Long modelId, String metricBizName);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user