fix: 数据源适配group_concat函数

This commit is contained in:
fit2cloud-chenyw 2022-06-01 16:08:06 +08:00
parent 09af5f8180
commit 9518dd7240
12 changed files with 51 additions and 7 deletions

View File

@ -6,6 +6,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableFieldExample;
import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
import io.dataease.plugins.common.constants.CKConstants; import io.dataease.plugins.common.constants.CKConstants;
import io.dataease.plugins.common.constants.Db2Constants;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
@ -1059,6 +1060,8 @@ public class CKQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(CKConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(CKConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(CKConstants.GROUP_CONCAT, originField);
} else { } else {
fieldName = String.format(CKConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(CKConstants.AGG_FIELD, y.getSummary(), originField);
} }

View File

@ -9,6 +9,7 @@ import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
import io.dataease.dto.datasource.Db2Configuration; import io.dataease.dto.datasource.Db2Configuration;
import io.dataease.plugins.common.constants.Db2Constants; import io.dataease.plugins.common.constants.Db2Constants;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.constants.EsSqlLConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
@ -1029,6 +1030,8 @@ public class Db2QueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(Db2Constants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(Db2Constants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(Db2Constants.GROUP_CONCAT, originField);
} else { } else {
fieldName = String.format(Db2Constants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(Db2Constants.AGG_FIELD, y.getSummary(), originField);
} }

View File

@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.constants.EsSqlLConstants; import io.dataease.plugins.common.constants.EsSqlLConstants;
import io.dataease.plugins.common.constants.HiveConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
@ -1052,6 +1053,8 @@ public class EsQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(EsSqlLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(EsSqlLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(EsSqlLConstants.GROUP_CONCAT, originField);
} else { } else {
fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), originField);
} }

View File

@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.constants.HiveConstants; import io.dataease.plugins.common.constants.HiveConstants;
import io.dataease.plugins.common.constants.ImpalaConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
@ -1027,6 +1028,8 @@ public class HiveQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(HiveConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(HiveConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(HiveConstants.GROUP_CONCAT, originField);
} else { } else {
fieldName = String.format(HiveConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(HiveConstants.AGG_FIELD, y.getSummary(), originField);
} }

View File

@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.constants.ImpalaConstants; import io.dataease.plugins.common.constants.ImpalaConstants;
import io.dataease.plugins.common.constants.MongoConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
@ -995,6 +996,8 @@ public class ImpalaQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(ImpalaConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(ImpalaConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(ImpalaConstants.GROUP_CONCAT, originField);
} else { } else {
fieldName = String.format(ImpalaConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(ImpalaConstants.AGG_FIELD, y.getSummary(), originField);
} }

View File

@ -936,6 +936,8 @@ public class MongoQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(MongoConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(MongoConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(MongoConstants.GROUP_CONCAT, originField);
} else { } else {
fieldName = String.format(MongoConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(MongoConstants.AGG_FIELD, y.getSummary(), originField);
} }

View File

@ -1031,7 +1031,11 @@ public class MysqlQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(MySQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(MySQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else { }
else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(MySQLConstants.GROUP_CONCAT, originField);
}
else {
fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(MySQLConstants.AGG_FIELD, y.getSummary(), originField);
} }
} else { } else {

View File

@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableFieldExample;
import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
import io.dataease.dto.datasource.OracleConfiguration; import io.dataease.dto.datasource.OracleConfiguration;
import io.dataease.plugins.common.constants.MySQLConstants;
import io.dataease.plugins.common.constants.OracleConstants; import io.dataease.plugins.common.constants.OracleConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
@ -1104,7 +1105,10 @@ public class OracleQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(OracleConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(OracleConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else { } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(OracleConstants.GROUP_CONCAT, originField, originField);
}
else {
fieldName = String.format(OracleConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(OracleConstants.AGG_FIELD, y.getSummary(), originField);
} }
} else { } else {

View File

@ -6,10 +6,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.DatasetTableFieldExample; import io.dataease.plugins.common.base.domain.DatasetTableFieldExample;
import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.*;
import io.dataease.plugins.common.constants.PgConstants;
import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.constants.SqlServerSQLConstants;
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO; import io.dataease.plugins.common.dto.chart.ChartFieldCustomFilterDTO;
import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO; import io.dataease.plugins.common.dto.chart.ChartViewFieldDTO;
@ -1021,7 +1018,10 @@ public class PgQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else { } else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(PgConstants.GROUP_CONCAT, originField);
}
else {
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField);
} }
} else { } else {

View File

@ -944,6 +944,8 @@ public class RedshiftQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(PgConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(RedshiftConstants.GROUP_CONCAT, originField);
} else { } else {
fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(PgConstants.AGG_FIELD, y.getSummary(), originField);
} }

View File

@ -7,6 +7,7 @@ import io.dataease.plugins.common.base.domain.DatasetTableFieldExample;
import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper; import io.dataease.plugins.common.base.mapper.DatasetTableFieldMapper;
import io.dataease.plugins.common.constants.DeTypeConstants; import io.dataease.plugins.common.constants.DeTypeConstants;
import io.dataease.plugins.common.constants.ImpalaConstants;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.SQLConstants;
import io.dataease.plugins.common.constants.SqlServerSQLConstants; import io.dataease.plugins.common.constants.SqlServerSQLConstants;
import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO; import io.dataease.plugins.common.dto.chart.ChartCustomFilterItemDTO;
@ -1070,6 +1071,8 @@ public class SqlserverQueryProvider extends QueryProvider {
} else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) { } else if (SQLConstants.DIMENSION_TYPE.contains(y.getDeType())) {
if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) { if (StringUtils.equalsIgnoreCase(y.getSummary(), "count_distinct")) {
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField); fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, "COUNT", "DISTINCT " + originField);
} else if (StringUtils.equalsIgnoreCase(y.getSummary(), "group_concat")) {
fieldName = String.format(SqlServerSQLConstants.GROUP_CONCAT, originField);
} else { } else {
fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), originField); fieldName = String.format(SqlServerSQLConstants.AGG_FIELD, y.getSummary(), originField);
} }

View File

@ -4,6 +4,7 @@ import cn.hutool.core.util.ReflectUtil;
import com.google.gson.Gson; import com.google.gson.Gson;
import io.dataease.dto.dataset.DataSetTableUnionDTO; import io.dataease.dto.dataset.DataSetTableUnionDTO;
import io.dataease.dto.dataset.DataTableInfoDTO; import io.dataease.dto.dataset.DataTableInfoDTO;
import io.dataease.plugins.common.base.domain.ChartViewWithBLOBs;
import io.dataease.plugins.common.base.domain.DatasetTableField; import io.dataease.plugins.common.base.domain.DatasetTableField;
import io.dataease.plugins.common.base.domain.Datasource; import io.dataease.plugins.common.base.domain.Datasource;
import io.dataease.plugins.common.constants.SQLConstants; import io.dataease.plugins.common.constants.SQLConstants;
@ -225,4 +226,17 @@ public class ViewPluginBaseServiceImpl implements ViewPluginBaseService {
return null; return null;
} }
@Override
public String sqlLimit(String dsType, String sql, PluginViewLimit pluginViewLimit) {
QueryProvider queryProvider = ProviderFactory.getQueryProvider(dsType);
String methodName = "sqlLimit";
ChartViewWithBLOBs chartView = new ChartViewWithBLOBs();
chartView.setResultMode(pluginViewLimit.getResultMode());
chartView.setResultCount(pluginViewLimit.getResultCount());
Object result;
if ((result = execProviderMethod(queryProvider, methodName, sql, chartView)) != null) {
return result.toString();
}
return sql;
}
} }