feat: 支持计数和去重计数

This commit is contained in:
junjun 2022-04-12 19:45:12 +08:00
parent eff4c2b287
commit 02b05220d2
18 changed files with 174 additions and 53 deletions

View File

@ -11,8 +11,8 @@ import io.dataease.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.DorisConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.provider.QueryProvider;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -1026,7 +1026,11 @@ public class DorisQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*")) {
fieldName = DorisConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(DorisConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(DorisConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(DorisConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(DorisConstants.CAST, originField, y.getDeType() == 2 ? DorisConstants.DEFAULT_INT_FORMAT : DorisConstants.DEFAULT_FLOAT_FORMAT);
@ -1035,7 +1039,11 @@ public class DorisQueryProvider extends QueryProvider {
fieldName = String.format(DorisConstants.ROUND, cast1, "2");
} else {
String cast = String.format(DorisConstants.CAST, originField, y.getDeType() == 2 ? DorisConstants.DEFAULT_INT_FORMAT : DorisConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(DorisConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(DorisConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(DorisConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()
@ -1081,6 +1089,7 @@ public class DorisQueryProvider extends QueryProvider {
private String reflectFieldName(DatasetTableField field) {
return field.getDataeaseName();
}
private String calcFieldRegex(String originField, SQLObj tableObj) {
originField = originField.replaceAll("[\\t\\n\\r]]", "");
// 正则提取[xxx]

View File

@ -10,9 +10,9 @@ import io.dataease.dto.chart.ChartCustomFilterItemDTO;
import io.dataease.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.constants.engine.MysqlConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -1030,7 +1030,11 @@ public class MysqlQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getDataeaseName(), "*")) {
fieldName = MysqlConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(MysqlConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(MysqlConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(MysqlConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(MysqlConstants.CAST, originField, y.getDeType() == 2 ? MysqlConstants.DEFAULT_INT_FORMAT : MysqlConstants.DEFAULT_FLOAT_FORMAT);
@ -1039,7 +1043,11 @@ public class MysqlQueryProvider extends QueryProvider {
fieldName = String.format(MysqlConstants.ROUND, cast1, "2");
} else {
String cast = String.format(MysqlConstants.CAST, originField, y.getDeType() == 2 ? MysqlConstants.DEFAULT_INT_FORMAT : MysqlConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(MysqlConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(MysqlConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(MysqlConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -12,8 +12,8 @@ import io.dataease.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.CKConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.provider.QueryProvider;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -1039,7 +1039,11 @@ public class CKQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = CKConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(CKConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(CKConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(CKConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = y.getDeType() == 2 ? String.format(CKConstants.toInt64, originField) : String.format(CKConstants.toFloat64, originField);
@ -1047,7 +1051,11 @@ public class CKQueryProvider extends QueryProvider {
fieldName = String.format(CKConstants.toDecimal, agg);
} else {
String cast = y.getDeType() == 2 ? String.format(CKConstants.toInt64, originField) : String.format(CKConstants.toFloat64, originField);
fieldName = String.format(CKConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(CKConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(CKConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -14,6 +14,7 @@ import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.datasource.Db2Configuration;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.Db2Constants;
import io.dataease.plugins.common.constants.MySQLConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import org.apache.commons.collections4.CollectionUtils;
@ -993,7 +994,11 @@ public class Db2QueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = Db2Constants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(Db2Constants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(Db2Constants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(Db2Constants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(Db2Constants.CAST, originField, y.getDeType() == 2 ? Db2Constants.DEFAULT_INT_FORMAT : Db2Constants.DEFAULT_FLOAT_FORMAT);
@ -1001,7 +1006,11 @@ public class Db2QueryProvider extends QueryProvider {
fieldName = String.format(Db2Constants.CAST, agg, Db2Constants.DEFAULT_FLOAT_FORMAT);
} else {
String cast = String.format(Db2Constants.CAST, originField, y.getDeType() == 2 ? Db2Constants.DEFAULT_INT_FORMAT : Db2Constants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(Db2Constants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(Db2Constants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(Db2Constants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -12,8 +12,8 @@ import io.dataease.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.EsSqlLConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.provider.QueryProvider;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -1032,7 +1032,11 @@ public class EsQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = EsSqlLConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(EsSqlLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(EsSqlLConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? "bigint" : "double");
@ -1040,7 +1044,11 @@ public class EsQueryProvider extends QueryProvider {
fieldName = String.format(EsSqlLConstants.ROUND, agg, "2");
} else {
String cast = String.format(EsSqlLConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? "bigint" : "double");
fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(EsSqlLConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -12,8 +12,8 @@ import io.dataease.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.HiveConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.provider.QueryProvider;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -1007,7 +1007,11 @@ public class HiveQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = HiveConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(HiveConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(HiveConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(HiveConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(HiveConstants.CAST, originField, y.getDeType() == 2 ? HiveConstants.DEFAULT_INT_FORMAT : HiveConstants.DEFAULT_FLOAT_FORMAT);
@ -1015,7 +1019,11 @@ public class HiveQueryProvider extends QueryProvider {
fieldName = String.format(HiveConstants.CAST, agg, HiveConstants.DEFAULT_FLOAT_FORMAT);
} else {
String cast = String.format(HiveConstants.CAST, originField, y.getDeType() == 2 ? HiveConstants.DEFAULT_INT_FORMAT : HiveConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(HiveConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(HiveConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(HiveConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -974,7 +974,11 @@ public class ImpalaQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = ImpalaConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(ImpalaConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(ImpalaConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(ImpalaConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(ImpalaConstants.CAST, originField, y.getDeType() == 2 ? ImpalaConstants.DEFAULT_INT_FORMAT : ImpalaConstants.DEFAULT_FLOAT_FORMAT);
@ -982,7 +986,11 @@ public class ImpalaQueryProvider extends QueryProvider {
fieldName = String.format(ImpalaConstants.CAST, agg, ImpalaConstants.DEFAULT_FLOAT_FORMAT);
} else {
String cast = String.format(ImpalaConstants.CAST, originField, y.getDeType() == 2 ? ImpalaConstants.DEFAULT_INT_FORMAT : ImpalaConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(ImpalaConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(ImpalaConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(ImpalaConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -12,6 +12,7 @@ import io.dataease.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.MongoConstants;
import io.dataease.plugins.common.constants.MySQLConstants;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.provider.QueryProvider;
import org.apache.commons.collections4.CollectionUtils;
@ -915,9 +916,17 @@ public class MongoQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = MongoConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(MongoConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(MongoConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(MongoConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
fieldName = String.format(MongoConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(MongoConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(MongoConstants.AGG_FIELD, y.getSummary(), originField);
}
}
return SQLObj.builder()
.fieldName(fieldName)

View File

@ -1011,7 +1011,11 @@ public class MysqlQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = MySQLConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(MySQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(MySQLConstants.CAST, originField, y.getDeType() == 2 ? MySQLConstants.DEFAULT_INT_FORMAT : MySQLConstants.DEFAULT_FLOAT_FORMAT);
@ -1019,7 +1023,11 @@ public class MysqlQueryProvider extends QueryProvider {
fieldName = String.format(MySQLConstants.CAST, agg, MySQLConstants.DEFAULT_FLOAT_FORMAT);
} else {
String cast = String.format(MySQLConstants.CAST, originField, y.getDeType() == 2 ? MySQLConstants.DEFAULT_INT_FORMAT : MySQLConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(MySQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -14,8 +14,8 @@ import io.dataease.dto.datasource.JdbcConfiguration;
import io.dataease.dto.datasource.OracleConfiguration;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.OracleConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.provider.QueryProvider;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -1083,7 +1083,11 @@ public class OracleQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = OracleConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(OracleConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(OracleConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(OracleConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(OracleConstants.CAST, originField, y.getDeType() == 2 ? OracleConstants.DEFAULT_INT_FORMAT : OracleConstants.DEFAULT_FLOAT_FORMAT);
@ -1091,7 +1095,11 @@ public class OracleQueryProvider extends QueryProvider {
fieldName = String.format(OracleConstants.CAST, agg, OracleConstants.DEFAULT_FLOAT_FORMAT);
} else {
String cast = String.format(OracleConstants.CAST, originField, y.getDeType() == 2 ? OracleConstants.DEFAULT_INT_FORMAT : OracleConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(OracleConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(OracleConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(OracleConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -14,9 +14,9 @@ import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.datasource.JdbcConfiguration;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.PgConstants;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.constants.SqlServerSQLConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -1000,7 +1000,11 @@ public class PgQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = PgConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(PgConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? PgConstants.DEFAULT_INT_FORMAT : PgConstants.DEFAULT_FLOAT_FORMAT);
@ -1008,7 +1012,11 @@ public class PgQueryProvider extends QueryProvider {
fieldName = String.format(PgConstants.CAST, agg, PgConstants.DEFAULT_FLOAT_FORMAT);
} else {
String cast = String.format(PgConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? PgConstants.DEFAULT_INT_FORMAT : PgConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -13,11 +13,11 @@ import io.dataease.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.datasource.JdbcConfiguration;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.PgConstants;
import io.dataease.plugins.common.constants.RedshiftConstants;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.constants.SqlServerSQLConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.constants.PgConstants;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -927,7 +927,11 @@ public class RedshiftQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = PgConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String cast = String.format(PgConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? PgConstants.DEFAULT_INT_FORMAT : PgConstants.DEFAULT_FLOAT_FORMAT);
@ -935,7 +939,11 @@ public class RedshiftQueryProvider extends QueryProvider {
fieldName = String.format(PgConstants.CAST, agg, PgConstants.DEFAULT_FLOAT_FORMAT);
} else {
String cast = String.format(PgConstants.CAST, originField, y.getDeType() == DeTypeConstants.DE_INT ? PgConstants.DEFAULT_INT_FORMAT : PgConstants.DEFAULT_FLOAT_FORMAT);
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), cast);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + cast);
} else {
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), cast);
}
}
}
return SQLObj.builder()

View File

@ -13,9 +13,9 @@ import io.dataease.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.dto.chart.ChartViewFieldDTO;
import io.dataease.dto.datasource.JdbcConfiguration;
import io.dataease.dto.sqlObj.SQLObj;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.constants.SqlServerSQLConstants;
import io.dataease.provider.QueryProvider;
import io.dataease.plugins.common.constants.SQLConstants;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
@ -1050,7 +1050,11 @@ public class SqlserverQueryProvider extends QueryProvider {
if (StringUtils.equalsIgnoreCase(y.getOriginName(), "*")) {
fieldName = SqlServerSQLConstants.AGG_COUNT;
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), originField);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else {
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), originField);
}
} else {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "avg") || StringUtils.containsIgnoreCase(y.getSummary(), "pop")) {
String convert = String.format(SqlServerSQLConstants.CONVERT, y.getDeType() == DeTypeConstants.DE_INT ? SqlServerSQLConstants.DEFAULT_INT_FORMAT : SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, originField);
@ -1058,7 +1062,11 @@ public class SqlserverQueryProvider extends QueryProvider {
fieldName = String.format(SqlServerSQLConstants.CONVERT, SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, agg);
} else {
String convert = String.format(SqlServerSQLConstants.CONVERT, y.getDeType() == 2 ? SqlServerSQLConstants.DEFAULT_INT_FORMAT : SqlServerSQLConstants.DEFAULT_FLOAT_FORMAT, originField);
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), convert);
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + convert);
} else {
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), convert);
}
}
}
return SQLObj.builder()

View File

@ -1064,7 +1064,11 @@ export default {
total_pos_left: 'Left',
total_pos_right: 'Right',
chart_label: 'Label',
drag_block_label: 'Label'
drag_block_label: 'Label',
count_distinct: 'Distinct Count',
table_page_mode: 'Page Mode',
page_mode_page: 'Page',
page_mode_pull: 'Pull'
},
dataset: {
sheet_warn: 'There are multiple sheet pages, and the first one is extracted by default',

View File

@ -1064,7 +1064,11 @@ export default {
total_pos_left: '左側',
total_pos_right: '右側',
chart_label: '文本卡',
drag_block_label: '標簽'
drag_block_label: '標簽',
count_distinct: '去重計數',
table_page_mode: '分頁模式',
page_mode_page: '翻頁',
page_mode_pull: '下拉'
},
dataset: {
sheet_warn: '有多個 Sheet 頁,默認抽取第一個',

View File

@ -1067,7 +1067,11 @@ export default {
total_pos_left: '左侧',
total_pos_right: '右侧',
chart_label: '文本卡',
drag_block_label: '标签'
drag_block_label: '标签',
count_distinct: '去重计数',
table_page_mode: '分页模式',
page_mode_page: '翻页',
page_mode_pull: '下拉'
},
dataset: {
sheet_warn: '有多个 Sheet 页,默认抽取第一个',

View File

@ -49,13 +49,14 @@
<i class="el-icon-arrow-right el-icon--right" />
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-if="item.id === 'count' || item.deType === 0 || item.deType === 1" :command="beforeSummary('count')">{{ $t('chart.count') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('sum')">{{ $t('chart.sum') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('avg')">{{ $t('chart.avg') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('max')">{{ $t('chart.max') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('min')">{{ $t('chart.min') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('stddev_pop')">{{ $t('chart.stddev_pop') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('var_pop')">{{ $t('chart.var_pop') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('sum')">{{ $t('chart.sum') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('avg')">{{ $t('chart.avg') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('max')">{{ $t('chart.max') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('min')">{{ $t('chart.min') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('stddev_pop')">{{ $t('chart.stddev_pop') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('var_pop')">{{ $t('chart.var_pop') }}</el-dropdown-item>
<el-dropdown-item :command="beforeSummary('count')">{{ $t('chart.count') }}</el-dropdown-item>
<el-dropdown-item :command="beforeSummary('count_distinct')">{{ $t('chart.count_distinct') }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown-item>

View File

@ -49,13 +49,14 @@
<i class="el-icon-arrow-right el-icon--right" />
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-if="item.id === 'count' || item.deType === 0 || item.deType === 1" :command="beforeSummary('count')">{{ $t('chart.count') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('sum')">{{ $t('chart.sum') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('avg')">{{ $t('chart.avg') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('max')">{{ $t('chart.max') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('min')">{{ $t('chart.min') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('stddev_pop')">{{ $t('chart.stddev_pop') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1" :command="beforeSummary('var_pop')">{{ $t('chart.var_pop') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('sum')">{{ $t('chart.sum') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('avg')">{{ $t('chart.avg') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('max')">{{ $t('chart.max') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('min')">{{ $t('chart.min') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('stddev_pop')">{{ $t('chart.stddev_pop') }}</el-dropdown-item>
<el-dropdown-item v-if="item.id !== 'count' && item.deType !== 0 && item.deType !== 1 && item.deType !== 5" :command="beforeSummary('var_pop')">{{ $t('chart.var_pop') }}</el-dropdown-item>
<el-dropdown-item :command="beforeSummary('count')">{{ $t('chart.count') }}</el-dropdown-item>
<el-dropdown-item :command="beforeSummary('count_distinct')">{{ $t('chart.count_distinct') }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</el-dropdown-item>