mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-12 12:37:55 +00:00
(feature)(headless) Add a new headless-api module and Change old headless-api module to headless-common (#582)
* (improvement)(headless) Add headless-api module * (improvement)(headless) Change old headless-api module to headless-common --------- Co-authored-by: jolunoluo <jolunoluo@tencent.com>
This commit is contained in:
@@ -38,7 +38,7 @@
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.tencent.supersonic</groupId>
|
||||
<artifactId>headless-api</artifactId>
|
||||
<artifactId>headless-common</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
package com.tencent.supersonic.headless.query.annotation;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
@Target({ElementType.PARAMETER, ElementType.METHOD})
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface ApiDataPermission {
|
||||
|
||||
}
|
||||
@@ -1,73 +0,0 @@
|
||||
package com.tencent.supersonic.headless.query.aspect;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Pair;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||
import com.tencent.supersonic.common.util.SignatureUtils;
|
||||
import com.tencent.supersonic.headless.api.model.enums.AppStatusEnum;
|
||||
import com.tencent.supersonic.headless.api.model.response.AppDetailResp;
|
||||
import com.tencent.supersonic.headless.model.domain.AppService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.aspectj.lang.ProceedingJoinPoint;
|
||||
import org.aspectj.lang.annotation.Around;
|
||||
import org.aspectj.lang.annotation.Aspect;
|
||||
import org.aspectj.lang.annotation.Pointcut;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.annotation.Order;
|
||||
import org.springframework.stereotype.Component;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@Component
|
||||
@Aspect
|
||||
@Order(1)
|
||||
@Slf4j
|
||||
public class ApiDataAspect {
|
||||
|
||||
public static final String APPID = "appId";
|
||||
|
||||
private static final String TIMESTAMP = "timestamp";
|
||||
|
||||
private static final String SIGNATURE = "signature";
|
||||
|
||||
@Autowired
|
||||
private AppService appService;
|
||||
|
||||
@Pointcut("@annotation(com.tencent.supersonic.headless.query.annotation.ApiDataPermission)")
|
||||
private void apiPermissionCheck() {
|
||||
}
|
||||
|
||||
@Around("apiPermissionCheck()")
|
||||
public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
|
||||
Object[] objects = joinPoint.getArgs();
|
||||
HttpServletRequest request = (HttpServletRequest) objects[1];
|
||||
checkHeader(request);
|
||||
return joinPoint.proceed();
|
||||
}
|
||||
|
||||
private void checkHeader(HttpServletRequest request) {
|
||||
String timestampStr = request.getHeader(TIMESTAMP);
|
||||
String signature = request.getHeader(SIGNATURE);
|
||||
String appId = request.getHeader(APPID);
|
||||
if (StringUtils.isBlank(timestampStr)) {
|
||||
throw new InvalidArgumentException("header中timestamp不可为空");
|
||||
}
|
||||
if (StringUtils.isBlank(signature)) {
|
||||
throw new InvalidArgumentException("header中signature不可为空");
|
||||
}
|
||||
if (StringUtils.isBlank(appId)) {
|
||||
throw new InvalidArgumentException("header中appId不可为空");
|
||||
}
|
||||
AppDetailResp appDetailResp = appService.getApp(Integer.parseInt(appId));
|
||||
if (appDetailResp == null) {
|
||||
throw new InvalidArgumentException("该appId对应的应用不存在");
|
||||
}
|
||||
if (!AppStatusEnum.ONLINE.equals(appDetailResp.getAppStatus())) {
|
||||
throw new InvalidArgumentException("该应用暂时为非在线状态");
|
||||
}
|
||||
Pair<Boolean, String> checkResult = SignatureUtils.isValidSignature(appId, appDetailResp.getAppSecret(),
|
||||
Long.parseLong(timestampStr), signature);
|
||||
if (!checkResult.first) {
|
||||
throw new InvalidArgumentException(checkResult.second);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -7,10 +7,10 @@ import com.tencent.supersonic.auth.api.authorization.response.AuthorizedResource
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidPermissionException;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserAddHelper;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
|
||||
|
||||
@@ -7,10 +7,10 @@ import com.tencent.supersonic.auth.api.authorization.response.AuthorizedResource
|
||||
import com.tencent.supersonic.common.pojo.Filter;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidPermissionException;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.query.executor;
|
||||
|
||||
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.model.domain.utils.SqlUtils;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.query.executor;
|
||||
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.query.optimizer;
|
||||
|
||||
import com.google.common.base.Strings;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.query.optimizer;
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
|
||||
public interface QueryOptimizer {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package com.tencent.supersonic.headless.query.parser;
|
||||
|
||||
import com.tencent.supersonic.common.util.StringUtil;
|
||||
import com.tencent.supersonic.headless.api.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.api.query.pojo.MetricTable;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.common.query.pojo.MetricTable;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import com.tencent.supersonic.headless.query.utils.ComponentFactory;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.query.parser;
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.query.parser.calcite;
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.parser.SqlParser;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.planner.AggPlanner;
|
||||
|
||||
@@ -5,13 +5,13 @@ import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.tencent.supersonic.common.pojo.ModelRela;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.DataModelYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.DimensionTimeTypeParamsTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.DimensionYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.IdentifyYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.MeasureYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.MetricTypeParamsYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.MetricYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.DataModelYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.DimensionTimeTypeParamsTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.DimensionYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.IdentifyYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.MeasureYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.MetricTypeParamsYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.MetricYamlTpl;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Constants;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.DataSource;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.query.parser.calcite.planner;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.Configuration;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Constants;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.DataSource;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.query.parser.calcite.planner;
|
||||
|
||||
import com.tencent.supersonic.common.util.calcite.SqlParseUtils;
|
||||
import com.tencent.supersonic.headless.api.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.Configuration;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Constants;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.query.parser.calcite.planner;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.schema.HeadlessSchema;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.query.parser.calcite.sql;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Dimension;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Identify;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Measure;
|
||||
|
||||
@@ -2,7 +2,7 @@ package com.tencent.supersonic.headless.query.parser.calcite.sql.node;
|
||||
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.Configuration;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Constants;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.DataSource;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.query.parser.calcite.sql.render;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.sql.node.FilterNode;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.sql.node.MetricNode;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.sql.node.SemanticNode;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.tencent.supersonic.headless.query.parser.calcite.sql.render;
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Materialization.TimePartType;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.sql.node.AggFunctionNode;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.sql.node.DataSourceNode;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.query.parser.calcite.sql.render;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.common.pojo.ColumnOrder;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.sql.node.SemanticNode;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.sql.Renderer;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.tencent.supersonic.headless.query.parser.calcite.sql.render;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Constants;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.DataSource;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.s2sql.Dimension;
|
||||
|
||||
@@ -6,11 +6,11 @@ import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.DateModeUtils;
|
||||
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
|
||||
import com.tencent.supersonic.headless.api.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.api.query.pojo.MetricTable;
|
||||
import com.tencent.supersonic.headless.api.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.common.query.pojo.MetricTable;
|
||||
import com.tencent.supersonic.headless.common.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.EngineTypeEnum;
|
||||
import com.tencent.supersonic.headless.query.parser.HeadlessConverter;
|
||||
|
||||
@@ -2,8 +2,8 @@ package com.tencent.supersonic.headless.query.parser.convert;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Filter;
|
||||
import com.tencent.supersonic.common.pojo.enums.FilterOperatorEnum;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.parser.HeadlessConverter;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
|
||||
@@ -2,9 +2,9 @@ package com.tencent.supersonic.headless.query.parser.convert;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.Filter;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.parser.HeadlessConverter;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.tencent.supersonic.headless.query.parser.convert;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.ColumnOrder;
|
||||
import com.tencent.supersonic.headless.api.query.pojo.Param;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.pojo.Param;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.parser.HeadlessConverter;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
|
||||
@@ -9,15 +9,15 @@ import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserReplaceHelper;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectFunctionHelper;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.api.model.request.SqlExecuteReq;
|
||||
import com.tencent.supersonic.headless.api.model.response.DatabaseResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.api.query.pojo.MetricTable;
|
||||
import com.tencent.supersonic.headless.api.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.model.request.SqlExecuteReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DatabaseResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.common.query.pojo.MetricTable;
|
||||
import com.tencent.supersonic.headless.common.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import com.tencent.supersonic.headless.model.domain.adaptor.engineadapter.EngineAdaptor;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package com.tencent.supersonic.headless.query.parser.convert;
|
||||
|
||||
import com.tencent.supersonic.headless.api.model.enums.ModelSourceTypeEnum;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.enums.ModelSourceTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.parser.HeadlessConverter;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.query.persistence.mapper;
|
||||
|
||||
|
||||
import com.tencent.supersonic.headless.api.model.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.api.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.common.query.request.ItemUseReq;
|
||||
import java.util.List;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.query.persistence.pojo;
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import lombok.Data;
|
||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.query.persistence.repository;
|
||||
|
||||
import com.tencent.supersonic.headless.api.model.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.api.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.common.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ItemUseResp;
|
||||
import java.util.List;
|
||||
|
||||
public interface StatRepository {
|
||||
|
||||
@@ -3,9 +3,9 @@ package com.tencent.supersonic.headless.query.persistence.repository;
|
||||
import static com.tencent.supersonic.common.pojo.Constants.AT_SYMBOL;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.api.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.common.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.headless.query.persistence.mapper.StatMapper;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
package com.tencent.supersonic.headless.query.rest;
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryApiPreviewReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryApiReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ApiQueryResultResp;
|
||||
import com.tencent.supersonic.headless.query.service.ApiQueryService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/semantic/apiQuery")
|
||||
@Slf4j
|
||||
public class ApiQueryController {
|
||||
|
||||
@Autowired
|
||||
private ApiQueryService apiQueryService;
|
||||
|
||||
@PostMapping("/preview")
|
||||
public ApiQueryResultResp preview(@RequestBody QueryApiPreviewReq queryApiReq) throws Exception {
|
||||
return apiQueryService.preview(queryApiReq);
|
||||
}
|
||||
|
||||
@PostMapping("/query")
|
||||
public ApiQueryResultResp query(@RequestBody QueryApiReq queryApiReq, HttpServletRequest request) throws Exception {
|
||||
return apiQueryService.query(queryApiReq, request);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -3,20 +3,20 @@ package com.tencent.supersonic.headless.query.rest;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.headless.api.model.enums.QueryTypeEnum;
|
||||
import com.tencent.supersonic.headless.api.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.SqlParserResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.BatchDownloadReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.DownloadStructReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.common.model.enums.QueryTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.SqlParserResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.BatchDownloadReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.DownloadStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import com.tencent.supersonic.headless.query.service.DownloadService;
|
||||
import com.tencent.supersonic.headless.query.service.QueryService;
|
||||
|
||||
@@ -4,14 +4,14 @@ import com.github.pagehelper.PageInfo;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.auth.api.authentication.utils.UserHolder;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.headless.api.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.api.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.query.service.SchemaService;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
package com.tencent.supersonic.headless.query.service;
|
||||
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryApiPreviewReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryApiReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ApiQueryResultResp;
|
||||
import com.tencent.supersonic.headless.query.annotation.ApiDataPermission;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
public interface ApiQueryService {
|
||||
|
||||
ApiQueryResultResp preview(QueryApiPreviewReq queryApiReq) throws Exception;
|
||||
|
||||
@ApiDataPermission
|
||||
ApiQueryResultResp query(QueryApiReq queryApiReq, HttpServletRequest request) throws Exception;
|
||||
}
|
||||
@@ -1,135 +0,0 @@
|
||||
package com.tencent.supersonic.headless.query.service;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidArgumentException;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.Item;
|
||||
import com.tencent.supersonic.headless.api.model.response.AppDetailResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.pojo.ApiQuerySingleResult;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryApiPreviewReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryApiReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ApiQueryResultResp;
|
||||
import com.tencent.supersonic.headless.model.domain.AppService;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.DimensionFilter;
|
||||
import com.tencent.supersonic.headless.query.annotation.ApiDataPermission;
|
||||
import com.tencent.supersonic.headless.query.aspect.ApiDataAspect;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Api service for other apps
|
||||
* The current version defaults to query metrics data.
|
||||
*/
|
||||
@Service
|
||||
public class ApiQueryServiceImpl implements ApiQueryService {
|
||||
|
||||
private static final long result_size = 10000;
|
||||
|
||||
private AppService appService;
|
||||
|
||||
private MetricService metricService;
|
||||
|
||||
private DimensionService dimensionService;
|
||||
|
||||
private QueryService queryService;
|
||||
|
||||
public ApiQueryServiceImpl(AppService appService,
|
||||
MetricService metricService,
|
||||
DimensionService dimensionService,
|
||||
QueryService queryService) {
|
||||
this.appService = appService;
|
||||
this.metricService = metricService;
|
||||
this.dimensionService = dimensionService;
|
||||
this.queryService = queryService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiQueryResultResp preview(QueryApiPreviewReq queryApiReq) throws Exception {
|
||||
Item item = queryApiReq.getItem();
|
||||
ApiQuerySingleResult apiQuerySingleResult = query(item, queryApiReq.getDateConf());
|
||||
return ApiQueryResultResp.builder().results(Lists.newArrayList(apiQuerySingleResult)).build();
|
||||
}
|
||||
|
||||
public ApiQuerySingleResult query(Item item, DateConf dateConf) throws Exception {
|
||||
MetricResp metricResp = metricService.getMetric(item.getId());
|
||||
List<Item> items = item.getRelateItems();
|
||||
List<DimensionResp> dimensionResps = Lists.newArrayList();
|
||||
if (!CollectionUtils.isEmpty(items)) {
|
||||
List<Long> ids = items.stream().map(Item::getId).collect(Collectors.toList());
|
||||
DimensionFilter dimensionFilter = new DimensionFilter();
|
||||
dimensionFilter.setIds(ids);
|
||||
dimensionResps = dimensionService.getDimensions(dimensionFilter);
|
||||
}
|
||||
QueryStructReq queryStructReq = buildQueryStructReq(dimensionResps, metricResp, dateConf);
|
||||
QueryResultWithSchemaResp queryResultWithSchemaResp =
|
||||
queryService.queryByStruct(queryStructReq, User.getAppUser(0));
|
||||
ApiQuerySingleResult apiQuerySingleResult = new ApiQuerySingleResult();
|
||||
apiQuerySingleResult.setItem(item);
|
||||
apiQuerySingleResult.setResult(queryResultWithSchemaResp);
|
||||
return apiQuerySingleResult;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ApiDataPermission
|
||||
public ApiQueryResultResp query(QueryApiReq queryApiReq, HttpServletRequest request) throws Exception {
|
||||
int appId = Integer.parseInt(request.getHeader(ApiDataAspect.APPID));
|
||||
AppDetailResp appDetailResp = appService.getApp(appId);
|
||||
Set<Long> idsInApp = appDetailResp.getConfig().getItems().stream()
|
||||
.map(Item::getId).collect(Collectors.toSet());
|
||||
if (!idsInApp.containsAll(queryApiReq.getIds())) {
|
||||
throw new InvalidArgumentException("查询范围超过应用申请范围, 请检查");
|
||||
}
|
||||
List<ApiQuerySingleResult> results = Lists.newArrayList();
|
||||
Map<Long, Item> map = appDetailResp.getConfig().getItems().stream()
|
||||
.collect(Collectors.toMap(Item::getId, i -> i));
|
||||
for (Long id : queryApiReq.getIds()) {
|
||||
Item item = map.get(id);
|
||||
ApiQuerySingleResult apiQuerySingleResult = query(item, queryApiReq.getDateConf());
|
||||
results.add(apiQuerySingleResult);
|
||||
}
|
||||
return ApiQueryResultResp.builder().results(results).build();
|
||||
}
|
||||
|
||||
private QueryStructReq buildQueryStructReq(List<DimensionResp> dimensionResps,
|
||||
MetricResp metricResp, DateConf dateConf) {
|
||||
Set<Long> modelIds = dimensionResps.stream().map(DimensionResp::getModelId).collect(Collectors.toSet());
|
||||
modelIds.add(metricResp.getModelId());
|
||||
QueryStructReq queryStructReq = new QueryStructReq();
|
||||
queryStructReq.setGroups(dimensionResps.stream()
|
||||
.map(DimensionResp::getBizName).collect(Collectors.toList()));
|
||||
queryStructReq.getGroups().add(0, getTimeDimension(dateConf));
|
||||
Aggregator aggregator = new Aggregator();
|
||||
aggregator.setColumn(metricResp.getBizName());
|
||||
queryStructReq.setAggregators(Lists.newArrayList(aggregator));
|
||||
queryStructReq.setDateInfo(dateConf);
|
||||
queryStructReq.setModelIds(modelIds);
|
||||
queryStructReq.setLimit(result_size);
|
||||
return queryStructReq;
|
||||
}
|
||||
|
||||
private String getTimeDimension(DateConf dateConf) {
|
||||
if (Constants.MONTH.equals(dateConf.getPeriod())) {
|
||||
return TimeDimensionEnum.MONTH.getName();
|
||||
} else if (Constants.WEEK.equals(dateConf.getPeriod())) {
|
||||
return TimeDimensionEnum.WEEK.getName();
|
||||
} else {
|
||||
return TimeDimensionEnum.DAY.getName();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -16,10 +16,10 @@ import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.common.pojo.enums.SensitiveLevelEnum;
|
||||
import com.tencent.supersonic.common.pojo.exception.InvalidPermissionException;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package com.tencent.supersonic.headless.query.service;
|
||||
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.headless.api.query.request.BatchDownloadReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.DownloadStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.BatchDownloadReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.DownloadStructReq;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public interface DownloadService {
|
||||
|
||||
@@ -12,17 +12,17 @@ import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.util.DateUtils;
|
||||
import com.tencent.supersonic.headless.api.model.enums.SemanticTypeEnum;
|
||||
import com.tencent.supersonic.headless.api.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.pojo.DataDownload;
|
||||
import com.tencent.supersonic.headless.api.query.request.BatchDownloadReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.DownloadStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.enums.SemanticTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.pojo.DataDownload;
|
||||
import com.tencent.supersonic.headless.common.query.request.BatchDownloadReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.DownloadStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import com.tencent.supersonic.headless.query.utils.DataTransformUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.tencent.supersonic.headless.query.service;
|
||||
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import com.tencent.supersonic.headless.query.executor.QueryExecutor;
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package com.tencent.supersonic.headless.query.service;
|
||||
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import com.tencent.supersonic.headless.query.executor.QueryExecutor;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package com.tencent.supersonic.headless.query.service;
|
||||
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.headless.api.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -9,23 +9,23 @@ import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.util.ContextUtils;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.common.util.cache.CacheUtils;
|
||||
import com.tencent.supersonic.headless.api.model.enums.QueryTypeEnum;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.api.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.pojo.Cache;
|
||||
import com.tencent.supersonic.headless.api.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.common.model.enums.QueryTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.Dim;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ExplainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.pojo.Cache;
|
||||
import com.tencent.supersonic.headless.common.query.request.ExplainSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryDimValueReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import com.tencent.supersonic.headless.query.executor.QueryExecutor;
|
||||
|
||||
@@ -3,14 +3,14 @@ package com.tencent.supersonic.headless.query.service;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.headless.api.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.api.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DomainResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -4,18 +4,18 @@ import com.github.pagehelper.PageInfo;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.AuthType;
|
||||
import com.tencent.supersonic.common.pojo.enums.TypeEnums;
|
||||
import com.tencent.supersonic.headless.api.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.api.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.api.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageDimensionReq;
|
||||
import com.tencent.supersonic.headless.common.model.request.PageMetricReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DomainResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.DomainService;
|
||||
import com.tencent.supersonic.headless.model.domain.MetricService;
|
||||
|
||||
@@ -8,11 +8,11 @@ import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.FieldExpression;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserReplaceHelper;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.DimValueMap;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.DimValueMap;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.DimensionService;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.MetaFilter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@@ -20,17 +20,17 @@ import com.tencent.supersonic.common.util.jsqlparser.FieldExpression;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserAddHelper;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserRemoveHelper;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.ItemDateFilter;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.api.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.ItemDateFilter;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.model.request.ModelSchemaFilterReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.ParseSqlReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.model.domain.pojo.EngineTypeEnum;
|
||||
import com.tencent.supersonic.headless.query.service.SchemaService;
|
||||
|
||||
@@ -8,11 +8,11 @@ import com.tencent.supersonic.common.pojo.Constants;
|
||||
import com.tencent.supersonic.common.pojo.QueryColumn;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.common.util.cache.CacheUtils;
|
||||
import com.tencent.supersonic.headless.api.model.enums.SemanticTypeEnum;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.common.model.enums.SemanticTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimensionResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryMultiStructReq;
|
||||
import com.tencent.supersonic.headless.model.domain.Catalog;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import java.util.Arrays;
|
||||
|
||||
@@ -5,7 +5,7 @@ import static com.tencent.supersonic.common.pojo.Constants.JOIN_UNDERLINE;
|
||||
import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.common.pojo.enums.TimeDimensionEnum;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import java.util.stream.Collectors;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@@ -7,16 +7,16 @@ import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.enums.TaskStatusEnum;
|
||||
import com.tencent.supersonic.common.util.SqlFilterUtils;
|
||||
import com.tencent.supersonic.common.util.jsqlparser.SqlParserSelectHelper;
|
||||
import com.tencent.supersonic.headless.api.model.enums.QueryOptMode;
|
||||
import com.tencent.supersonic.headless.api.model.enums.QueryTypeBackEnum;
|
||||
import com.tencent.supersonic.headless.api.model.enums.QueryTypeEnum;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.api.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.common.model.enums.QueryOptMode;
|
||||
import com.tencent.supersonic.headless.common.model.enums.QueryTypeBackEnum;
|
||||
import com.tencent.supersonic.headless.common.model.enums.QueryTypeEnum;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.QueryStat;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.SchemaItem;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.ItemUseReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryS2SQLReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.response.ItemUseResp;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import com.tencent.supersonic.headless.query.persistence.repository.StatRepository;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<mapper namespace="com.tencent.supersonic.headless.query.persistence.mapper.StatMapper">
|
||||
|
||||
<resultMap id="QueryStatDO"
|
||||
type="com.tencent.supersonic.headless.api.model.pojo.QueryStat">
|
||||
type="com.tencent.supersonic.headless.common.model.pojo.QueryStat">
|
||||
<id column="id" property="id"/>
|
||||
<result column="trace_id" property="traceId"/>
|
||||
<result column="model_id" property="modelId"/>
|
||||
@@ -55,7 +55,7 @@
|
||||
</insert>
|
||||
|
||||
<select id="getStatInfo"
|
||||
resultType="com.tencent.supersonic.headless.api.model.pojo.QueryStat">
|
||||
resultType="com.tencent.supersonic.headless.common.model.pojo.QueryStat">
|
||||
select *
|
||||
from s2_query_stat_info
|
||||
<where>
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package com.tencent.supersonic.headless.query.domain.calcite;
|
||||
|
||||
import com.tencent.supersonic.common.pojo.ColumnOrder;
|
||||
import com.tencent.supersonic.headless.api.model.response.SqlParserResp;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.DataModelYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.DimensionTimeTypeParamsTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.DimensionYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.IdentifyYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.MeasureYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.MetricTypeParamsYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.model.yaml.MetricYamlTpl;
|
||||
import com.tencent.supersonic.headless.api.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.api.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.common.model.response.SqlParserResp;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.DataModelYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.DimensionTimeTypeParamsTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.DimensionYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.IdentifyYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.MeasureYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.MetricTypeParamsYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.model.yaml.MetricYamlTpl;
|
||||
import com.tencent.supersonic.headless.common.query.enums.AggOption;
|
||||
import com.tencent.supersonic.headless.common.query.request.MetricReq;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.HeadlessSchemaManager;
|
||||
import com.tencent.supersonic.headless.query.parser.calcite.planner.AggPlanner;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.tencent.supersonic.common.pojo.Aggregator;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.pojo.DateConf.DateMode;
|
||||
import com.tencent.supersonic.common.pojo.enums.AggOperatorEnum;
|
||||
import com.tencent.supersonic.headless.api.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.common.query.request.QueryStructReq;
|
||||
import com.tencent.supersonic.headless.query.persistence.pojo.QueryStatement;
|
||||
import com.tencent.supersonic.headless.query.optimizer.QueryOptimizer;
|
||||
import com.tencent.supersonic.headless.query.parser.QueryParser;
|
||||
|
||||
@@ -8,13 +8,13 @@ import com.google.common.collect.Lists;
|
||||
import com.tencent.supersonic.auth.api.authentication.pojo.User;
|
||||
import com.tencent.supersonic.common.pojo.DateConf;
|
||||
import com.tencent.supersonic.common.util.DateUtils;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.headless.api.model.pojo.RelateDimension;
|
||||
import com.tencent.supersonic.headless.api.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.api.query.request.BatchDownloadReq;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.DrillDownDimension;
|
||||
import com.tencent.supersonic.headless.common.model.pojo.RelateDimension;
|
||||
import com.tencent.supersonic.headless.common.model.response.DimSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.MetricSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.ModelSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.model.response.QueryResultWithSchemaResp;
|
||||
import com.tencent.supersonic.headless.common.query.request.BatchDownloadReq;
|
||||
import com.tencent.supersonic.headless.model.domain.ModelService;
|
||||
import java.io.File;
|
||||
import java.util.Date;
|
||||
|
||||
Reference in New Issue
Block a user