Skip to content

Commit

Permalink
fix: sql 拼接错误
Browse files Browse the repository at this point in the history
  • Loading branch information
jinlong-T committed Dec 6, 2021
1 parent 408a796 commit c51a41d
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -898,7 +898,7 @@ private SQLObj getYFields(ChartViewFieldDTO y, String originField, String fieldA
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");
String agg = String.format(EsSqlLConstants.AGG_FIELD, y.getSummary(), cast);
fieldName = String.format(EsSqlLConstants.CAST, agg, EsSqlLConstants.DEFAULT_FLOAT_FORMAT);
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);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,9 @@ public class EsSqlLConstants extends SQLConstants {

public static final String CAST = "CAST(%s AS %s)";

public static final String DEFAULT_DATE_FORMAT = "YYYY-MM-dd HH:mm:ss";

public static final String DEFAULT_INT_FORMAT = "DECIMAL(20,0)";
public static final String ROUND = "ROUND(%s, %s)";

public static final String DEFAULT_FLOAT_FORMAT = "DECIMAL(20,2)";
public static final String DEFAULT_DATE_FORMAT = "YYYY-MM-dd HH:mm:ss";

public static final String WHERE_VALUE_NULL = "(NULL,'')";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,11 @@ public String getSQL(String table, List<ChartViewFieldDTO> xAxis, List<ChartView
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view);
if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
}

@Override
Expand Down Expand Up @@ -353,7 +357,11 @@ public String getSQLTableInfo(String table, List<ChartViewFieldDTO> xAxis, List<
.build();
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view);
if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
}

@Override
Expand Down Expand Up @@ -491,7 +499,11 @@ public String getSQLStack(String table, List<ChartViewFieldDTO> xAxis, List<Char
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view);
if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
}

@Override
Expand Down Expand Up @@ -604,7 +616,11 @@ public String getSQLScatter(String table, List<ChartViewFieldDTO> xAxis, List<Ch
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view);
if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
}

@Override
Expand Down Expand Up @@ -686,7 +702,11 @@ public String getSQLSummary(String table, List<ChartViewFieldDTO> yAxis, List<Ch
if (CollectionUtils.isNotEmpty(aggWheres)) st.add("filters", aggWheres);
if (CollectionUtils.isNotEmpty(orders)) st.add("orders", orders);
if (ObjectUtils.isNotEmpty(tableSQL)) st.add("table", tableSQL);
return sqlLimit(st.render(), view);
if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
SQLObj limitFiled = SQLObj.builder().limitFiled("top " + view.getResultCount() + " ").build();
st.add("limitFiled", limitFiled);
}
return st.render();
}

@Override
Expand Down Expand Up @@ -1057,12 +1077,4 @@ private String calcFieldRegex(String originField, SQLObj tableObj) {
}
return originField;
}

private String sqlLimit(String sql, ChartViewWithBLOBs view) {
if (StringUtils.equalsIgnoreCase(view.getResultMode(), "custom")) {
return String.format("SELECT top %s * from ( %s ) as DE_SQLSERVER_TMP ", view.getResultCount(), sqlFix(sql));
} else {
return sql;
}
}
}
5 changes: 4 additions & 1 deletion backend/src/main/resources/sql/sqlTemplate.stg
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
querySql(groups, aggregators, filters, orders, table)
querySql(limitFiled, groups, aggregators, filters, orders, table)
::=<<
SELECT
<if(limitFiled)>
<limitFiled.limitFiled>
<endif>
<if(!groups && !aggregators)>
*
<endif>
Expand Down

0 comments on commit c51a41d

Please sign in to comment.